3 namespace Friendica\Test\src\App;
5 use Friendica\App\Mode;
6 use Friendica\Core\Config;
7 use Friendica\Test\MockedTest;
8 use Friendica\Test\Util\DBAMockTrait;
9 use Friendica\Test\Util\VFSTrait;
11 class ModeTest extends MockedTest
16 public function setUp()
23 public function testItEmpty()
25 $mode = new Mode($this->root->url());
26 $this->assertTrue($mode->isInstall());
27 $this->assertFalse($mode->isNormal());
30 public function testWithoutConfig()
32 $mode = new Mode($this->root->url());
34 $this->assertTrue($this->root->hasChild('config/local.config.php'));
36 $this->delConfigFile('local.config.php');
38 $this->assertFalse($this->root->hasChild('config/local.config.php'));
42 $this->assertTrue($mode->isInstall());
43 $this->assertFalse($mode->isNormal());
45 $this->assertFalse($mode->has(Mode::LOCALCONFIGPRESENT));
49 * @runInSeparateProcess
50 * @preserveGlobalState disabled
52 public function testWithoutDatabase()
54 $this->mockConnected(false, 1);
56 $mode = new Mode($this->root->url());
59 $this->assertFalse($mode->isNormal());
60 $this->assertTrue($mode->isInstall());
62 $this->assertTrue($mode->has(Mode::LOCALCONFIGPRESENT));
63 $this->assertFalse($mode->has(Mode::DBAVAILABLE));
67 * @runInSeparateProcess
68 * @preserveGlobalState disabled
70 public function testWithoutDatabaseSetup()
72 $this->mockConnected(true, 1);
73 $this->mockFetchFirst('SHOW TABLES LIKE \'config\'', false, 1);
75 $mode = new Mode($this->root->url());
78 $this->assertFalse($mode->isNormal());
79 $this->assertTrue($mode->isInstall());
81 $this->assertTrue($mode->has(Mode::LOCALCONFIGPRESENT));
85 * @runInSeparateProcess
86 * @preserveGlobalState disabled
88 public function testWithMaintenanceMode()
90 $this->mockConnected(true, 1);
91 $this->mockFetchFirst('SHOW TABLES LIKE \'config\'', true, 1);
93 $config = \Mockery::mock(Config\Configuration::class);
95 ->shouldReceive('get')
96 ->with('system', 'maintenance', null, false)
99 // Initialize empty Config
100 Config::init($config);
102 $mode = new Mode($this->root->url());
105 $this->assertFalse($mode->isNormal());
106 $this->assertFalse($mode->isInstall());
108 $this->assertTrue($mode->has(Mode::DBCONFIGAVAILABLE));
109 $this->assertFalse($mode->has(Mode::MAINTENANCEDISABLED));
113 * @runInSeparateProcess
114 * @preserveGlobalState disabled
116 public function testNormalMode()
118 $this->mockConnected(true, 1);
119 $this->mockFetchFirst('SHOW TABLES LIKE \'config\'', true, 1);
121 $config = \Mockery::mock(Config\Configuration::class);
123 ->shouldReceive('get')
124 ->with('system', 'maintenance', null, false)
127 // Initialize empty Config
128 Config::init($config);
130 $mode = new Mode($this->root->url());
133 $this->assertTrue($mode->isNormal());
134 $this->assertFalse($mode->isInstall());
136 $this->assertTrue($mode->has(Mode::DBCONFIGAVAILABLE));
137 $this->assertTrue($mode->has(Mode::MAINTENANCEDISABLED));