SchemaSqlCollectorTest.php 2.53 KB
Newer Older
1 2 3 4 5 6
<?php

namespace Doctrine\Tests\DBAL\Schema\Visitor;

use Doctrine\DBAL\Schema\Schema;

Luís Cobucci's avatar
Luís Cobucci committed
7
class SchemaSqlCollectorTest extends \PHPUnit\Framework\TestCase
8 9 10
{
    public function testCreateSchema()
    {
11 12 13
        $platformMock = $this->getMockBuilder('Doctrine\DBAL\Platforms\MySqlPlatform')
            ->setMethods(array('getCreateTableSql', 'getCreateSequenceSql', 'getCreateForeignKeySql'))
            ->getMock();
14 15 16 17 18
        $platformMock->expects($this->exactly(2))
                     ->method('getCreateTableSql')
                     ->will($this->returnValue(array("foo")));
        $platformMock->expects($this->exactly(1))
                     ->method('getCreateSequenceSql')
19
                     ->will($this->returnValue("bar"));
20 21
        $platformMock->expects($this->exactly(1))
                     ->method('getCreateForeignKeySql')
22
                     ->will($this->returnValue("baz"));
23 24 25 26 27

        $schema = $this->createFixtureSchema();

        $sql = $schema->toSql($platformMock);

28
        self::assertEquals(array("foo", "foo", "bar", "baz"), $sql);
29 30 31 32
    }

    public function testDropSchema()
    {
33 34 35
        $platformMock = $this->getMockBuilder('Doctrine\DBAL\Platforms\MySqlPlatform')
            ->setMethods(array('getDropTableSql', 'getDropSequenceSql', 'getDropForeignKeySql'))
            ->getMock();
36 37
        $platformMock->expects($this->exactly(2))
                     ->method('getDropTableSql')
38
                     ->will($this->returnValue("tbl"));
39 40
        $platformMock->expects($this->exactly(1))
                     ->method('getDropSequenceSql')
41
                     ->will($this->returnValue("seq"));
42 43
        $platformMock->expects($this->exactly(1))
                     ->method('getDropForeignKeySql')
44
                     ->will($this->returnValue("fk"));
45 46 47 48 49

        $schema = $this->createFixtureSchema();

        $sql = $schema->toDropSql($platformMock);

50
        self::assertEquals(array("fk", "seq", "tbl", "tbl"), $sql);
51 52 53 54 55 56 57 58 59
    }

    /**
     * @return Schema
     */
    public function createFixtureSchema()
    {
        $schema = new Schema();
        $tableA = $schema->createTable("foo");
60 61
        $tableA->addColumn("id", 'integer');
        $tableA->addColumn("bar", 'string', array('length' => 255));
62 63 64 65 66
        $tableA->setPrimaryKey(array("id"));

        $schema->createSequence("foo_seq");

        $tableB = $schema->createTable("bar");
67
        $tableB->addColumn("id", 'integer');
68 69 70 71 72 73
        $tableB->setPrimaryKey(array("id"));

        $tableA->addForeignKeyConstraint($tableB, array("bar"), array("id"));

        return $schema;
    }
74
}