Fixing tests
[friendica.git/.git] / tests / src / App / ModeTest.php
1 <?php
2
3 namespace Friendica\Test\src\App;
4
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;
10
11 class ModeTest extends MockedTest
12 {
13         use VFSTrait;
14         use DBAMockTrait;
15
16         public function setUp()
17         {
18                 parent::setUp();
19
20                 $this->setUpVfsDir();
21         }
22
23         public function testItEmpty()
24         {
25                 $mode = new Mode($this->root->url());
26                 $this->assertTrue($mode->isInstall());
27                 $this->assertFalse($mode->isNormal());
28         }
29
30         public function testWithoutConfig()
31         {
32                 $mode = new Mode($this->root->url());
33
34                 $this->assertTrue($this->root->hasChild('config/local.config.php'));
35
36                 $this->delConfigFile('local.config.php');
37
38                 $this->assertFalse($this->root->hasChild('config/local.config.php'));
39
40                 $mode->determine();
41
42                 $this->assertTrue($mode->isInstall());
43                 $this->assertFalse($mode->isNormal());
44
45                 $this->assertFalse($mode->has(Mode::LOCALCONFIGPRESENT));
46         }
47
48         /**
49          * @runInSeparateProcess
50          * @preserveGlobalState disabled
51          */
52         public function testWithoutDatabase()
53         {
54                 $this->mockConnected(false, 1);
55
56                 $mode = new Mode($this->root->url());
57                 $mode->determine();
58
59                 $this->assertFalse($mode->isNormal());
60                 $this->assertTrue($mode->isInstall());
61
62                 $this->assertTrue($mode->has(Mode::LOCALCONFIGPRESENT));
63                 $this->assertFalse($mode->has(Mode::DBAVAILABLE));
64         }
65
66         /**
67          * @runInSeparateProcess
68          * @preserveGlobalState disabled
69          */
70         public function testWithoutDatabaseSetup()
71         {
72                 $this->mockConnected(true, 1);
73                 $this->mockFetchFirst('SHOW TABLES LIKE \'config\'', false, 1);
74
75                 $mode = new Mode($this->root->url());
76                 $mode->determine();
77
78                 $this->assertFalse($mode->isNormal());
79                 $this->assertTrue($mode->isInstall());
80
81                 $this->assertTrue($mode->has(Mode::LOCALCONFIGPRESENT));
82         }
83
84         /**
85          * @runInSeparateProcess
86          * @preserveGlobalState disabled
87          */
88         public function testWithMaintenanceMode()
89         {
90                 $this->mockConnected(true, 1);
91                 $this->mockFetchFirst('SHOW TABLES LIKE \'config\'', true, 1);
92
93                 $config = \Mockery::mock(Config\Configuration::class);
94                 $config
95                         ->shouldReceive('get')
96                         ->with('system', 'maintenance', null, false)
97                         ->andReturn(true)
98                         ->once();
99                 // Initialize empty Config
100                 Config::init($config);
101
102                 $mode = new Mode($this->root->url());
103                 $mode->determine();
104
105                 $this->assertFalse($mode->isNormal());
106                 $this->assertFalse($mode->isInstall());
107
108                 $this->assertTrue($mode->has(Mode::DBCONFIGAVAILABLE));
109                 $this->assertFalse($mode->has(Mode::MAINTENANCEDISABLED));
110         }
111
112         /**
113          * @runInSeparateProcess
114          * @preserveGlobalState disabled
115          */
116         public function testNormalMode()
117         {
118                 $this->mockConnected(true, 1);
119                 $this->mockFetchFirst('SHOW TABLES LIKE \'config\'', true, 1);
120
121                 $config = \Mockery::mock(Config\Configuration::class);
122                 $config
123                         ->shouldReceive('get')
124                         ->with('system', 'maintenance', null, false)
125                         ->andReturn(false)
126                         ->once();
127                 // Initialize empty Config
128                 Config::init($config);
129
130                 $mode = new Mode($this->root->url());
131                 $mode->determine();
132
133                 $this->assertTrue($mode->isNormal());
134                 $this->assertFalse($mode->isInstall());
135
136                 $this->assertTrue($mode->has(Mode::DBCONFIGAVAILABLE));
137                 $this->assertTrue($mode->has(Mode::MAINTENANCEDISABLED));
138         }
139 }