]> git.mxchange.org Git - friendica.git/blob - tests/FixtureTestTrait.php
d8524bae9bd5338c97178aeca8fa920f2447b00f
[friendica.git] / tests / FixtureTestTrait.php
1 <?php
2
3 namespace Friendica\Test;
4
5 use Dice\Dice;
6 use Friendica\App\Arguments;
7 use Friendica\App\Router;
8 use Friendica\Core\Config\Capability\IManageConfigValues;
9 use Friendica\Core\Config\Factory\Config;
10 use Friendica\Core\Config\Util\ConfigFileManager;
11 use Friendica\Core\Session\Capability\IHandleSessions;
12 use Friendica\Core\Session\Type\Memory;
13 use Friendica\Database\Database;
14 use Friendica\Database\DBStructure;
15 use Friendica\DI;
16 use Friendica\Test\Util\Database\StaticDatabase;
17 use Friendica\Test\Util\VFSTrait;
18
19 trait FixtureTestTrait
20 {
21         use VFSTrait;
22         use DatabaseTestTrait;
23
24         /** @var Dice */
25         protected $dice;
26
27         /**
28          * Create variables used by tests.
29          */
30         protected function setUpFixtures(): void
31         {
32                 $this->setUpVfsDir();
33                 $this->setUpDb();
34
35                 $server                   = $_SERVER;
36                 $server['REQUEST_METHOD'] = Router::GET;
37
38                 $this->dice = (new Dice())
39                         ->addRules(include __DIR__ . '/../static/dependencies.config.php')
40                         ->addRule(ConfigFileManager::class, [
41                                 'instanceOf' => Config::class,
42                                 'call'       => [['createConfigFileManager', [$this->root->url(), $server,],
43                                                                   Dice::CHAIN_CALL]]])
44                         ->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true])
45                         ->addRule(IHandleSessions::class, ['instanceOf' => Memory::class, 'shared' => true, 'call' => null])
46                         ->addRule(Arguments::class, [
47                                 'instanceOf' => Arguments::class,
48                                 'call'       => [
49                                         ['determine', [$server, $_GET], Dice::CHAIN_CALL],
50                                 ],
51                         ]);
52                 DI::init($this->dice, true);
53
54                 $config = $this->dice->create(IManageConfigValues::class);
55                 $config->set('database', 'disable_pdo', true);
56
57                 /** @var Database $dba */
58                 $dba = $this->dice->create(Database::class);
59                 $dba->setTestmode(true);
60
61                 DBStructure::checkInitialValues();
62
63                 // Load the API dataset for the whole API
64                 $this->loadFixture(__DIR__ . '/datasets/api.fixture.php', $dba);
65         }
66
67         protected function tearDownFixtures(): void
68         {
69                 $this->tearDownDb();
70         }
71
72         protected function useHttpMethod(string $method = Router::GET)
73         {
74                 $server                   = $_SERVER;
75                 $server['REQUEST_METHOD'] = $method;
76
77                 $this->dice = $this->dice
78                         ->addRule(Arguments::class, [
79                                 'instanceOf' => Arguments::class,
80                                 'call'       => [
81                                         ['determine', [$server, $_GET], Dice::CHAIN_CALL],
82                                 ],
83                         ]);
84
85                 DI::init($this->dice);
86         }
87 }