-
-
Notifications
You must be signed in to change notification settings - Fork 16
/
ConfigTest.php
96 lines (82 loc) · 3.83 KB
/
ConfigTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
declare(strict_types=1);
namespace Yiisoft\Db\Migration\Tests\Migration;
use PHPUnit\Framework\TestCase;
use Psr\SimpleCache\CacheInterface;
use Yiisoft\Db\Connection\ConnectionInterface;
use Yiisoft\Db\Sqlite\Connection as SqLiteConnection;
use Yiisoft\Db\Sqlite\Driver as SqLiteDriver;
use Yiisoft\Di\Container;
use Yiisoft\Di\ContainerConfig;
use Yiisoft\Test\Support\SimpleCache\MemorySimpleCache;
use Yiisoft\Db\Migration\Command\CreateCommand;
use Yiisoft\Db\Migration\Command\DownCommand;
use Yiisoft\Db\Migration\Command\HistoryCommand;
use Yiisoft\Db\Migration\Command\NewCommand;
use Yiisoft\Db\Migration\Command\RedoCommand;
use Yiisoft\Db\Migration\Command\UpdateCommand;
use Yiisoft\Db\Migration\Informer\ConsoleMigrationInformer;
use Yiisoft\Db\Migration\Informer\MigrationInformerInterface;
use Yiisoft\Db\Migration\Informer\NullMigrationInformer;
use Yiisoft\Db\Migration\MigrationBuilder;
use Yiisoft\Db\Migration\Migrator;
use Yiisoft\Db\Migration\Runner\DownRunner;
use Yiisoft\Db\Migration\Runner\UpdateRunner;
use Yiisoft\Db\Migration\Service\Generate\CreateService;
use Yiisoft\Db\Migration\Service\MigrationService;
use function dirname;
final class ConfigTest extends TestCase
{
public function testBase(): void
{
$container = $this->createConsoleContainer();
// Commands
$this->assertInstanceOf(CreateCommand::class, $container->get(CreateCommand::class));
$this->assertInstanceOf(DownCommand::class, $container->get(DownCommand::class));
$this->assertInstanceOf(HistoryCommand::class, $container->get(HistoryCommand::class));
$this->assertInstanceOf(NewCommand::class, $container->get(NewCommand::class));
$this->assertInstanceOf(RedoCommand::class, $container->get(RedoCommand::class));
$this->assertInstanceOf(UpdateCommand::class, $container->get(UpdateCommand::class));
// Informer
$this->assertInstanceOf(ConsoleMigrationInformer::class, $container->get(MigrationInformerInterface::class));
$this->assertInstanceOf(NullMigrationInformer::class, $container->get(NullMigrationInformer::class));
$this->assertInstanceOf(ConsoleMigrationInformer::class, $container->get(ConsoleMigrationInformer::class));
// Runners
$this->assertInstanceOf(DownRunner::class, $container->get(DownRunner::class));
$this->assertInstanceOf(UpdateRunner::class, $container->get(UpdateRunner::class));
// Services
$this->assertInstanceOf(CreateService::class, $container->get(CreateService::class));
$this->assertInstanceOf(MigrationService::class, $container->get(MigrationService::class));
// Other
$this->assertInstanceOf(MigrationBuilder::class, $container->get(MigrationBuilder::class));
$this->assertInstanceOf(Migrator::class, $container->get(Migrator::class));
}
private function createConsoleContainer(): Container
{
$config = ContainerConfig::create()
->withDefinitions(array_merge(
[
CacheInterface::class => MemorySimpleCache::class,
ConnectionInterface::class => [
'class' => SqLiteConnection::class,
'__construct()' => [
'driver' => new SqLiteDriver(
'sqlite:' . dirname(__DIR__, 2) . '/runtime/config-test.sq3'
),
],
],
],
$this->getConsoleDefinitions()
));
return new Container($config);
}
private function getConsoleDefinitions(): array
{
$params = $this->getParams();
return require dirname(__DIR__, 2) . '/config/di-console.php';
}
private function getParams(): array
{
return require dirname(__DIR__, 2) . '/config/params.php';
}
}