SingleDatabaseSynchronizerTest.php 2.26 KB
Newer Older
1 2
<?php

Michael Moravec's avatar
Michael Moravec committed
3 4
declare(strict_types=1);

5
namespace Doctrine\DBAL\Tests\Schema\Synchronizer;
6

Sergei Morozov's avatar
Sergei Morozov committed
7
use Doctrine\DBAL\Connection;
8 9
use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\Schema\Schema;
10
use Doctrine\DBAL\Schema\Synchronizer\SingleDatabaseSynchronizer;
Sergei Morozov's avatar
Sergei Morozov committed
11
use PHPUnit\Framework\TestCase;
12

13 14 15
/**
 * @requires extension pdo_sqlite
 */
Sergei Morozov's avatar
Sergei Morozov committed
16
class SingleDatabaseSynchronizerTest extends TestCase
17
{
Sergei Morozov's avatar
Sergei Morozov committed
18
    /** @var Connection */
19
    private $conn;
Sergei Morozov's avatar
Sergei Morozov committed
20 21

    /** @var SingleDatabaseSynchronizer */
22 23
    private $synchronizer;

24
    protected function setUp() : void
25
    {
Sergei Morozov's avatar
Sergei Morozov committed
26
        $this->conn         = DriverManager::getConnection([
27 28
            'driver' => 'pdo_sqlite',
            'memory' => true,
Sergei Morozov's avatar
Sergei Morozov committed
29
        ]);
30
        $this->synchronizer = new SingleDatabaseSynchronizer($this->conn);
31 32
    }

33
    public function testGetCreateSchema() : void
34 35
    {
        $schema = new Schema();
Sergei Morozov's avatar
Sergei Morozov committed
36
        $table  = $schema->createTable('test');
37
        $table->addColumn('id', 'integer');
Sergei Morozov's avatar
Sergei Morozov committed
38
        $table->setPrimaryKey(['id']);
39 40

        $sql = $this->synchronizer->getCreateSchema($schema);
Sergei Morozov's avatar
Sergei Morozov committed
41
        self::assertEquals(['CREATE TABLE test (id INTEGER NOT NULL, PRIMARY KEY(id))'], $sql);
42 43
    }

44
    public function testGetUpdateSchema() : void
45 46
    {
        $schema = new Schema();
Sergei Morozov's avatar
Sergei Morozov committed
47
        $table  = $schema->createTable('test');
48
        $table->addColumn('id', 'integer');
Sergei Morozov's avatar
Sergei Morozov committed
49
        $table->setPrimaryKey(['id']);
50 51

        $sql = $this->synchronizer->getUpdateSchema($schema);
Sergei Morozov's avatar
Sergei Morozov committed
52
        self::assertEquals(['CREATE TABLE test (id INTEGER NOT NULL, PRIMARY KEY(id))'], $sql);
53 54
    }

55
    public function testGetDropSchema() : void
56 57
    {
        $schema = new Schema();
Sergei Morozov's avatar
Sergei Morozov committed
58
        $table  = $schema->createTable('test');
59
        $table->addColumn('id', 'integer');
Sergei Morozov's avatar
Sergei Morozov committed
60
        $table->setPrimaryKey(['id']);
61 62 63 64

        $this->synchronizer->createSchema($schema);

        $sql = $this->synchronizer->getDropSchema($schema);
Sergei Morozov's avatar
Sergei Morozov committed
65
        self::assertEquals(['DROP TABLE test'], $sql);
66 67
    }

68
    public function testGetDropAllSchema() : void
69 70
    {
        $schema = new Schema();
Sergei Morozov's avatar
Sergei Morozov committed
71
        $table  = $schema->createTable('test');
72
        $table->addColumn('id', 'integer');
Sergei Morozov's avatar
Sergei Morozov committed
73
        $table->setPrimaryKey(['id']);
74 75 76 77

        $this->synchronizer->createSchema($schema);

        $sql = $this->synchronizer->getDropAllSchema();
Sergei Morozov's avatar
Sergei Morozov committed
78
        self::assertEquals(['DROP TABLE test'], $sql);
79 80
    }
}