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

3
namespace Doctrine\Tests\DBAL\Schema\Synchronizer;
4

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

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

    /** @var SingleDatabaseSynchronizer */
20 21
    private $synchronizer;

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

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

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

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

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

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

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

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

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

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

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