Vendor update && Started using DoctrineMigrations
This commit is contained in:
		
							
								
								
									
										114
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/ColumnTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/ColumnTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,114 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema;
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../TestInit.php';
 | 
			
		||||
 | 
			
		||||
use Doctrine\DBAL\Schema\Schema;
 | 
			
		||||
use Doctrine\DBAL\Schema\Table;
 | 
			
		||||
use Doctrine\DBAL\Schema\Column;
 | 
			
		||||
use Doctrine\DBAL\Types\Type;
 | 
			
		||||
 | 
			
		||||
class ColumnTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    public function testGet()
 | 
			
		||||
    {
 | 
			
		||||
        $column = $this->createColumn();
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals("foo", $column->getName());
 | 
			
		||||
        $this->assertSame(Type::getType('string'), $column->getType());
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(200, $column->getLength());
 | 
			
		||||
        $this->assertEquals(5, $column->getPrecision());
 | 
			
		||||
        $this->assertEquals(2, $column->getScale());
 | 
			
		||||
        $this->assertTrue($column->getUnsigned());
 | 
			
		||||
        $this->assertFalse($column->getNotNull());
 | 
			
		||||
        $this->assertTrue($column->getFixed());
 | 
			
		||||
        $this->assertEquals("baz", $column->getDefault());
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(array('foo' => 'bar'), $column->getPlatformOptions());
 | 
			
		||||
        $this->assertTrue($column->hasPlatformOption('foo'));
 | 
			
		||||
        $this->assertEquals('bar', $column->getPlatformOption('foo'));
 | 
			
		||||
        $this->assertFalse($column->hasPlatformOption('bar'));
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(array('bar' => 'baz'), $column->getCustomSchemaOptions());
 | 
			
		||||
        $this->assertTrue($column->hasCustomSchemaOption('bar'));
 | 
			
		||||
        $this->assertEquals('baz', $column->getCustomSchemaOption('bar'));
 | 
			
		||||
        $this->assertFalse($column->hasCustomSchemaOption('foo'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testToArray()
 | 
			
		||||
    {
 | 
			
		||||
        $expected = array(
 | 
			
		||||
            'name' => 'foo',
 | 
			
		||||
            'type' => Type::getType('string'),
 | 
			
		||||
            'default' => 'baz',
 | 
			
		||||
            'notnull' => false,
 | 
			
		||||
            'length' => 200,
 | 
			
		||||
            'precision' => 5,
 | 
			
		||||
            'scale' => 2,
 | 
			
		||||
            'fixed' => true,
 | 
			
		||||
            'unsigned' => true,
 | 
			
		||||
            'autoincrement' => false,
 | 
			
		||||
            'columnDefinition' => null,
 | 
			
		||||
            'comment' => null,
 | 
			
		||||
            'foo' => 'bar',
 | 
			
		||||
            'bar' => 'baz'
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals($expected, $this->createColumn()->toArray());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return Column
 | 
			
		||||
     */
 | 
			
		||||
    public function createColumn()
 | 
			
		||||
    {
 | 
			
		||||
        $options = array(
 | 
			
		||||
            'length' => 200,
 | 
			
		||||
            'precision' => 5,
 | 
			
		||||
            'scale' => 2,
 | 
			
		||||
            'unsigned' => true,
 | 
			
		||||
            'notnull' => false,
 | 
			
		||||
            'fixed' => true,
 | 
			
		||||
            'default' => 'baz',
 | 
			
		||||
            'platformOptions' => array('foo' => 'bar'),
 | 
			
		||||
            'customSchemaOptions' => array('bar' => 'baz'),
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $string = Type::getType('string');
 | 
			
		||||
        return new Column("foo", $string, $options);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-64
 | 
			
		||||
     */
 | 
			
		||||
    public function testQuotedColumnName()
 | 
			
		||||
    {
 | 
			
		||||
        $string = Type::getType('string');
 | 
			
		||||
        $column = new Column("`bar`", $string, array());
 | 
			
		||||
 | 
			
		||||
        $mysqlPlatform = new \Doctrine\DBAL\Platforms\MySqlPlatform();
 | 
			
		||||
        $sqlitePlatform = new \Doctrine\DBAL\Platforms\SqlitePlatform();
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals('bar', $column->getName());
 | 
			
		||||
        $this->assertEquals('`bar`', $column->getQuotedName($mysqlPlatform));
 | 
			
		||||
        $this->assertEquals('"bar"', $column->getQuotedName($sqlitePlatform));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-42
 | 
			
		||||
     */
 | 
			
		||||
    public function testColumnComment()
 | 
			
		||||
    {
 | 
			
		||||
        $column = new Column("bar", Type::getType('string'));
 | 
			
		||||
        $this->assertNull($column->getComment());
 | 
			
		||||
 | 
			
		||||
        $column->setComment("foo");
 | 
			
		||||
        $this->assertEquals("foo", $column->getComment());
 | 
			
		||||
 | 
			
		||||
        $columnArray = $column->toArray();
 | 
			
		||||
        $this->assertArrayHasKey('comment', $columnArray);
 | 
			
		||||
        $this->assertEquals('foo', $columnArray['comment']);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										787
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/ComparatorTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										787
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/ComparatorTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,787 @@
 | 
			
		||||
<?php
 | 
			
		||||
/*
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
			
		||||
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
			
		||||
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | 
			
		||||
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | 
			
		||||
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | 
			
		||||
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | 
			
		||||
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | 
			
		||||
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | 
			
		||||
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
			
		||||
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
			
		||||
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 *
 | 
			
		||||
 * This software consists of voluntary contributions made by many individuals
 | 
			
		||||
 * and is licensed under the LGPL. For more information, see
 | 
			
		||||
 * <http://www.doctrine-project.org>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema;
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../TestInit.php';
 | 
			
		||||
 | 
			
		||||
use Doctrine\DBAL\Schema\Schema,
 | 
			
		||||
    Doctrine\DBAL\Schema\SchemaConfig,
 | 
			
		||||
    Doctrine\DBAL\Schema\Table,
 | 
			
		||||
    Doctrine\DBAL\Schema\Column,
 | 
			
		||||
    Doctrine\DBAL\Schema\Index,
 | 
			
		||||
    Doctrine\DBAL\Schema\Sequence,
 | 
			
		||||
    Doctrine\DBAL\Schema\SchemaDiff,
 | 
			
		||||
    Doctrine\DBAL\Schema\TableDiff,
 | 
			
		||||
    Doctrine\DBAL\Schema\Comparator,
 | 
			
		||||
    Doctrine\DBAL\Types\Type,
 | 
			
		||||
    Doctrine\DBAL\Schema\ForeignKeyConstraint;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
 | 
			
		||||
 * @link    www.doctrine-project.org
 | 
			
		||||
 * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
 | 
			
		||||
 * @license http://ez.no/licenses/new_bsd New BSD License
 | 
			
		||||
 * @since   2.0
 | 
			
		||||
 * @version $Revision$
 | 
			
		||||
 * @author  Benjamin Eberlei <kontakt@beberlei.de>
 | 
			
		||||
 */
 | 
			
		||||
class ComparatorTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    public function testCompareSame1()
 | 
			
		||||
    {
 | 
			
		||||
        $schema1 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer' ) ),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
        $schema2 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer') ),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(new SchemaDiff(), Comparator::compareSchemas( $schema1, $schema2 ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareSame2()
 | 
			
		||||
    {
 | 
			
		||||
        $schema1 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
        $schema2 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
        $this->assertEquals(new SchemaDiff(), Comparator::compareSchemas( $schema1, $schema2 ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareMissingTable()
 | 
			
		||||
    {
 | 
			
		||||
        $schemaConfig = new \Doctrine\DBAL\Schema\SchemaConfig;
 | 
			
		||||
        $table = new Table('bugdb', array ('integerfield1' => new Column('integerfield1', Type::getType('integer'))));
 | 
			
		||||
        $table->setSchemaConfig($schemaConfig);
 | 
			
		||||
 | 
			
		||||
        $schema1 = new Schema( array($table), array(), $schemaConfig );
 | 
			
		||||
        $schema2 = new Schema( array(),       array(), $schemaConfig );
 | 
			
		||||
 | 
			
		||||
        $expected = new SchemaDiff( array(), array(), array('bugdb' => $table) );
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals($expected, Comparator::compareSchemas( $schema1, $schema2 ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareNewTable()
 | 
			
		||||
    {
 | 
			
		||||
        $schemaConfig = new \Doctrine\DBAL\Schema\SchemaConfig;
 | 
			
		||||
        $table = new Table('bugdb', array ('integerfield1' => new Column('integerfield1', Type::getType('integer'))));
 | 
			
		||||
        $table->setSchemaConfig($schemaConfig);
 | 
			
		||||
 | 
			
		||||
        $schema1 = new Schema( array(),       array(), $schemaConfig );
 | 
			
		||||
        $schema2 = new Schema( array($table), array(), $schemaConfig );
 | 
			
		||||
 | 
			
		||||
        $expected = new SchemaDiff( array('bugdb' => $table), array(), array() );
 | 
			
		||||
        $this->assertEquals($expected, Comparator::compareSchemas( $schema1, $schema2 ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareOnlyAutoincrementChanged()
 | 
			
		||||
    {
 | 
			
		||||
        $column1 = new Column('foo', Type::getType('integer'), array('autoincrement' => true));
 | 
			
		||||
        $column2 = new Column('foo', Type::getType('integer'), array('autoincrement' => false));
 | 
			
		||||
 | 
			
		||||
        $comparator = new Comparator();
 | 
			
		||||
        $changedProperties = $comparator->diffColumn($column1, $column2);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(array('autoincrement'), $changedProperties);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareMissingField()
 | 
			
		||||
    {
 | 
			
		||||
        $missingColumn = new Column('integerfield1', Type::getType('integer'));
 | 
			
		||||
        $schema1 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => $missingColumn,
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
        $schema2 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
 | 
			
		||||
        $expected = new SchemaDiff ( array(),
 | 
			
		||||
            array (
 | 
			
		||||
                'bugdb' => new TableDiff( 'bugdb', array(), array(),
 | 
			
		||||
                    array (
 | 
			
		||||
                        'integerfield1' => $missingColumn,
 | 
			
		||||
                    )
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
        $this->assertEquals($expected, Comparator::compareSchemas( $schema1, $schema2 ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareNewField()
 | 
			
		||||
    {
 | 
			
		||||
        $schema1 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
        $schema2 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
 | 
			
		||||
        $expected = new SchemaDiff ( array(),
 | 
			
		||||
            array (
 | 
			
		||||
                'bugdb' => new TableDiff ('bugdb',
 | 
			
		||||
                    array (
 | 
			
		||||
                        'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                    )
 | 
			
		||||
                ),
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
        $this->assertEquals($expected, Comparator::compareSchemas( $schema1, $schema2 ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareChangedColumns_ChangeType()
 | 
			
		||||
    {
 | 
			
		||||
        $column1 = new Column('charfield1', Type::getType('string'));
 | 
			
		||||
        $column2 = new Column('charfield1', Type::getType('integer'));
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $this->assertEquals(array('type'), $c->diffColumn($column1, $column2));
 | 
			
		||||
        $this->assertEquals(array(), $c->diffColumn($column1, $column1));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareChangedColumns_ChangeCustomSchemaOption()
 | 
			
		||||
    {
 | 
			
		||||
        $column1 = new Column('charfield1', Type::getType('string'));
 | 
			
		||||
        $column2 = new Column('charfield1', Type::getType('string'));
 | 
			
		||||
 | 
			
		||||
        $column1->setCustomSchemaOption('foo', 'bar');
 | 
			
		||||
        $column2->setCustomSchemaOption('foo', 'bar');
 | 
			
		||||
 | 
			
		||||
        $column1->setCustomSchemaOption('foo1', 'bar1');
 | 
			
		||||
        $column2->setCustomSchemaOption('foo2', 'bar2');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $this->assertEquals(array('foo1', 'foo2'), $c->diffColumn($column1, $column2));
 | 
			
		||||
        $this->assertEquals(array(), $c->diffColumn($column1, $column1));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareRemovedIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $schema1 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                ),
 | 
			
		||||
                array (
 | 
			
		||||
                    'primary' => new Index('primary',
 | 
			
		||||
                        array(
 | 
			
		||||
                            'integerfield1'
 | 
			
		||||
                        ),
 | 
			
		||||
                        true
 | 
			
		||||
                    )
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
        $schema2 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
 | 
			
		||||
        $expected = new SchemaDiff ( array(),
 | 
			
		||||
            array (
 | 
			
		||||
                'bugdb' => new TableDiff( 'bugdb', array(), array(), array(), array(), array(),
 | 
			
		||||
                    array (
 | 
			
		||||
                        'primary' => new Index('primary',
 | 
			
		||||
                        array(
 | 
			
		||||
                            'integerfield1'
 | 
			
		||||
                        ),
 | 
			
		||||
                        true
 | 
			
		||||
                    )
 | 
			
		||||
                    )
 | 
			
		||||
                ),
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
        $this->assertEquals($expected, Comparator::compareSchemas( $schema1, $schema2 ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareNewIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $schema1 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
        $schema2 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                ),
 | 
			
		||||
                array (
 | 
			
		||||
                    'primary' => new Index('primary',
 | 
			
		||||
                        array(
 | 
			
		||||
                            'integerfield1'
 | 
			
		||||
                        ),
 | 
			
		||||
                        true
 | 
			
		||||
                    )
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
 | 
			
		||||
        $expected = new SchemaDiff ( array(),
 | 
			
		||||
            array (
 | 
			
		||||
                'bugdb' => new TableDiff( 'bugdb', array(), array(), array(),
 | 
			
		||||
                    array (
 | 
			
		||||
                        'primary' => new Index('primary',
 | 
			
		||||
                            array(
 | 
			
		||||
                                'integerfield1'
 | 
			
		||||
                            ),
 | 
			
		||||
                            true
 | 
			
		||||
                        )
 | 
			
		||||
                    )
 | 
			
		||||
                ),
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
        $this->assertEquals($expected, Comparator::compareSchemas( $schema1, $schema2 ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareChangedIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $schema1 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                ),
 | 
			
		||||
                array (
 | 
			
		||||
                    'primary' => new Index('primary',
 | 
			
		||||
                        array(
 | 
			
		||||
                            'integerfield1'
 | 
			
		||||
                        ),
 | 
			
		||||
                        true
 | 
			
		||||
                    )
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
        $schema2 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                ),
 | 
			
		||||
                array (
 | 
			
		||||
                    'primary' => new Index('primary',
 | 
			
		||||
                        array('integerfield1', 'integerfield2'),
 | 
			
		||||
                        true
 | 
			
		||||
                    )
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
 | 
			
		||||
        $expected = new SchemaDiff ( array(),
 | 
			
		||||
            array (
 | 
			
		||||
                'bugdb' => new TableDiff( 'bugdb', array(), array(), array(), array(),
 | 
			
		||||
                    array (
 | 
			
		||||
                        'primary' => new Index('primary',
 | 
			
		||||
                            array(
 | 
			
		||||
                                'integerfield1',
 | 
			
		||||
                                'integerfield2'
 | 
			
		||||
                            ),
 | 
			
		||||
                            true
 | 
			
		||||
                        )
 | 
			
		||||
                    )
 | 
			
		||||
                ),
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
        $actual = Comparator::compareSchemas( $schema1, $schema2 );
 | 
			
		||||
        $this->assertEquals($expected, $actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareChangedIndexFieldPositions()
 | 
			
		||||
    {
 | 
			
		||||
        $schema1 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                ),
 | 
			
		||||
                array (
 | 
			
		||||
                    'primary' => new Index('primary', array('integerfield1', 'integerfield2'), true)
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
        $schema2 = new Schema( array(
 | 
			
		||||
            'bugdb' => new Table('bugdb',
 | 
			
		||||
                array (
 | 
			
		||||
                    'integerfield1' => new Column('integerfield1', Type::getType('integer')),
 | 
			
		||||
                    'integerfield2' => new Column('integerfield2', Type::getType('integer')),
 | 
			
		||||
                ),
 | 
			
		||||
                array (
 | 
			
		||||
                    'primary' => new Index('primary', array('integerfield2', 'integerfield1'), true)
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ) );
 | 
			
		||||
 | 
			
		||||
        $expected = new SchemaDiff ( array(),
 | 
			
		||||
            array (
 | 
			
		||||
                'bugdb' => new TableDiff('bugdb', array(), array(), array(), array(),
 | 
			
		||||
                    array (
 | 
			
		||||
                        'primary' => new Index('primary', array('integerfield2', 'integerfield1'), true)
 | 
			
		||||
                    )
 | 
			
		||||
                ),
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
        $actual = Comparator::compareSchemas( $schema1, $schema2 );
 | 
			
		||||
        $this->assertEquals($expected, $actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareSequences()
 | 
			
		||||
    {
 | 
			
		||||
        $seq1 = new Sequence('foo', 1, 1);
 | 
			
		||||
        $seq2 = new Sequence('foo', 1, 2);
 | 
			
		||||
        $seq3 = new Sequence('foo', 2, 1);
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($c->diffSequence($seq1, $seq2));
 | 
			
		||||
        $this->assertTrue($c->diffSequence($seq1, $seq3));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testRemovedSequence()
 | 
			
		||||
    {
 | 
			
		||||
        $schema1 = new Schema();
 | 
			
		||||
        $seq = $schema1->createSequence('foo');
 | 
			
		||||
 | 
			
		||||
        $schema2 = new Schema();
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $diffSchema = $c->compare($schema1, $schema2);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(1, count($diffSchema->removedSequences));
 | 
			
		||||
        $this->assertSame($seq, $diffSchema->removedSequences[0]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddedSequence()
 | 
			
		||||
    {
 | 
			
		||||
        $schema1 = new Schema();
 | 
			
		||||
 | 
			
		||||
        $schema2 = new Schema();
 | 
			
		||||
        $seq = $schema2->createSequence('foo');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $diffSchema = $c->compare($schema1, $schema2);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(1, count($diffSchema->newSequences));
 | 
			
		||||
        $this->assertSame($seq, $diffSchema->newSequences[0]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testTableAddForeignKey()
 | 
			
		||||
    {
 | 
			
		||||
        $tableForeign = new Table("bar");
 | 
			
		||||
        $tableForeign->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $table1 = new Table("foo");
 | 
			
		||||
        $table1->addColumn('fk', 'integer');
 | 
			
		||||
 | 
			
		||||
        $table2 = new Table("foo");
 | 
			
		||||
        $table2->addColumn('fk', 'integer');
 | 
			
		||||
        $table2->addForeignKeyConstraint($tableForeign, array('fk'), array('id'));
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($table1, $table2);
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\TableDiff', $tableDiff);
 | 
			
		||||
        $this->assertEquals(1, count($tableDiff->addedForeignKeys));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testTableRemoveForeignKey()
 | 
			
		||||
    {
 | 
			
		||||
        $tableForeign = new Table("bar");
 | 
			
		||||
        $tableForeign->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $table1 = new Table("foo");
 | 
			
		||||
        $table1->addColumn('fk', 'integer');
 | 
			
		||||
 | 
			
		||||
        $table2 = new Table("foo");
 | 
			
		||||
        $table2->addColumn('fk', 'integer');
 | 
			
		||||
        $table2->addForeignKeyConstraint($tableForeign, array('fk'), array('id'));
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($table2, $table1);
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\TableDiff', $tableDiff);
 | 
			
		||||
        $this->assertEquals(1, count($tableDiff->removedForeignKeys));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testTableUpdateForeignKey()
 | 
			
		||||
    {
 | 
			
		||||
        $tableForeign = new Table("bar");
 | 
			
		||||
        $tableForeign->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $table1 = new Table("foo");
 | 
			
		||||
        $table1->addColumn('fk', 'integer');
 | 
			
		||||
        $table1->addForeignKeyConstraint($tableForeign, array('fk'), array('id'));
 | 
			
		||||
 | 
			
		||||
        $table2 = new Table("foo");
 | 
			
		||||
        $table2->addColumn('fk', 'integer');
 | 
			
		||||
        $table2->addForeignKeyConstraint($tableForeign, array('fk'), array('id'), array('onUpdate' => 'CASCADE'));
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($table1, $table2);
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\TableDiff', $tableDiff);
 | 
			
		||||
        $this->assertEquals(1, count($tableDiff->changedForeignKeys));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testTablesCaseInsensitive()
 | 
			
		||||
    {
 | 
			
		||||
        $schemaA = new Schema();
 | 
			
		||||
        $schemaA->createTable('foo');
 | 
			
		||||
        $schemaA->createTable('bAr');
 | 
			
		||||
        $schemaA->createTable('BAZ');
 | 
			
		||||
        $schemaA->createTable('new');
 | 
			
		||||
 | 
			
		||||
        $schemaB = new Schema();
 | 
			
		||||
        $schemaB->createTable('FOO');
 | 
			
		||||
        $schemaB->createTable('bar');
 | 
			
		||||
        $schemaB->createTable('Baz');
 | 
			
		||||
        $schemaB->createTable('old');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $diff = $c->compare($schemaA, $schemaB);
 | 
			
		||||
 | 
			
		||||
        $this->assertSchemaTableChangeCount($diff, 1, 0, 1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testSequencesCaseInsenstive()
 | 
			
		||||
    {
 | 
			
		||||
        $schemaA = new Schema();
 | 
			
		||||
        $schemaA->createSequence('foo');
 | 
			
		||||
        $schemaA->createSequence('BAR');
 | 
			
		||||
        $schemaA->createSequence('Baz');
 | 
			
		||||
        $schemaA->createSequence('new');
 | 
			
		||||
 | 
			
		||||
        $schemaB = new Schema();
 | 
			
		||||
        $schemaB->createSequence('FOO');
 | 
			
		||||
        $schemaB->createSequence('Bar');
 | 
			
		||||
        $schemaB->createSequence('baz');
 | 
			
		||||
        $schemaB->createSequence('old');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $diff = $c->compare($schemaA, $schemaB);
 | 
			
		||||
 | 
			
		||||
        $this->assertSchemaSequenceChangeCount($diff, 1, 0, 1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareColumnCompareCaseInsensitive()
 | 
			
		||||
    {
 | 
			
		||||
        $tableA = new Table("foo");
 | 
			
		||||
        $tableA->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $tableB = new Table("foo");
 | 
			
		||||
        $tableB->addColumn('ID', 'integer');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($tableA, $tableB);
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($tableDiff);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareIndexBasedOnPropertiesNotName()
 | 
			
		||||
    {
 | 
			
		||||
        $tableA = new Table("foo");
 | 
			
		||||
        $tableA->addColumn('id', 'integer');
 | 
			
		||||
        $tableA->addIndex(array("id"), "foo_bar_idx");
 | 
			
		||||
 | 
			
		||||
        $tableB = new Table("foo");
 | 
			
		||||
        $tableB->addColumn('ID', 'integer');
 | 
			
		||||
        $tableB->addIndex(array("id"), "bar_foo_idx");
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($tableA, $tableB);
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($tableDiff);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareForeignKeyBasedOnPropertiesNotName()
 | 
			
		||||
    {
 | 
			
		||||
        $tableA = new Table("foo");
 | 
			
		||||
        $tableA->addColumn('id', 'integer');
 | 
			
		||||
        $tableA->addNamedForeignKeyConstraint('foo_constraint', 'bar', array('id'), array('id'));
 | 
			
		||||
 | 
			
		||||
        $tableB = new Table("foo");
 | 
			
		||||
        $tableB->addColumn('ID', 'integer');
 | 
			
		||||
        $tableB->addNamedForeignKeyConstraint('bar_constraint', 'bar', array('id'), array('id'));
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($tableA, $tableB);
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($tableDiff);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompareForeignKey_RestrictNoAction_AreTheSame()
 | 
			
		||||
    {
 | 
			
		||||
        $fk1 = new ForeignKeyConstraint(array("foo"), "bar", array("baz"), "fk1", array('onDelete' => 'NO ACTION'));
 | 
			
		||||
        $fk2 = new ForeignKeyConstraint(array("foo"), "bar", array("baz"), "fk1", array('onDelete' => 'RESTRICT'));
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $this->assertFalse($c->diffForeignKey($fk1, $fk2));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testDetectRenameColumn()
 | 
			
		||||
    {
 | 
			
		||||
        $tableA = new Table("foo");
 | 
			
		||||
        $tableA->addColumn('foo', 'integer');
 | 
			
		||||
 | 
			
		||||
        $tableB = new Table("foo");
 | 
			
		||||
        $tableB->addColumn('bar', 'integer');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($tableA, $tableB);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(0, count($tableDiff->addedColumns));
 | 
			
		||||
        $this->assertEquals(0, count($tableDiff->removedColumns));
 | 
			
		||||
        $this->assertArrayHasKey('foo', $tableDiff->renamedColumns);
 | 
			
		||||
        $this->assertEquals('bar', $tableDiff->renamedColumns['foo']->getName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * You can easily have ambiguouties in the column renaming. If these
 | 
			
		||||
     * are detected no renaming should take place, instead adding and dropping
 | 
			
		||||
     * should be used exclusively.
 | 
			
		||||
     *
 | 
			
		||||
     * @group DBAL-24
 | 
			
		||||
     */
 | 
			
		||||
    public function testDetectRenameColumnAmbiguous()
 | 
			
		||||
    {
 | 
			
		||||
        $tableA = new Table("foo");
 | 
			
		||||
        $tableA->addColumn('foo', 'integer');
 | 
			
		||||
        $tableA->addColumn('bar', 'integer');
 | 
			
		||||
 | 
			
		||||
        $tableB = new Table("foo");
 | 
			
		||||
        $tableB->addColumn('baz', 'integer');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($tableA, $tableB);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(1, count($tableDiff->addedColumns), "'baz' should be added, not created through renaming!");
 | 
			
		||||
        $this->assertArrayHasKey('baz', $tableDiff->addedColumns, "'baz' should be added, not created through renaming!");
 | 
			
		||||
        $this->assertEquals(2, count($tableDiff->removedColumns), "'foo' and 'bar' should both be dropped, an ambigouty exists which one could be renamed to 'baz'.");
 | 
			
		||||
        $this->assertArrayHasKey('foo', $tableDiff->removedColumns, "'foo' should be removed.");
 | 
			
		||||
        $this->assertArrayHasKey('bar', $tableDiff->removedColumns, "'bar' should be removed.");
 | 
			
		||||
        $this->assertEquals(0, count($tableDiff->renamedColumns), "no renamings should take place.");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testDetectChangeIdentifierType()
 | 
			
		||||
    {
 | 
			
		||||
        $this->markTestSkipped('DBAL-2 was reopened, this test cannot work anymore.');
 | 
			
		||||
 | 
			
		||||
        $tableA = new Table("foo");
 | 
			
		||||
        $tableA->addColumn('id', 'integer', array('autoincrement' => false));
 | 
			
		||||
 | 
			
		||||
        $tableB = new Table("foo");
 | 
			
		||||
        $tableB->addColumn('id', 'integer', array('autoincrement' => true));
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($tableA, $tableB);
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\TableDiff', $tableDiff);
 | 
			
		||||
        $this->assertArrayHasKey('id', $tableDiff->changedColumns);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-105
 | 
			
		||||
     */
 | 
			
		||||
    public function testDiff()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new \Doctrine\DBAL\Schema\Table('twitter_users');
 | 
			
		||||
        $table->addColumn('id', 'integer', array('autoincrement' => true));
 | 
			
		||||
        $table->addColumn('twitterId', 'integer', array('nullable' => false));
 | 
			
		||||
        $table->addColumn('displayName', 'string', array('nullable' => false));
 | 
			
		||||
        $table->setPrimaryKey(array('id'));
 | 
			
		||||
 | 
			
		||||
        $newtable = new \Doctrine\DBAL\Schema\Table('twitter_users');
 | 
			
		||||
        $newtable->addColumn('id', 'integer', array('autoincrement' => true));
 | 
			
		||||
        $newtable->addColumn('twitter_id', 'integer', array('nullable' => false));
 | 
			
		||||
        $newtable->addColumn('display_name', 'string', array('nullable' => false));
 | 
			
		||||
        $newtable->addColumn('logged_in_at', 'datetime', array('nullable' => true));
 | 
			
		||||
        $newtable->setPrimaryKey(array('id'));
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $tableDiff = $c->diffTable($table, $newtable);
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\TableDiff', $tableDiff);
 | 
			
		||||
        $this->assertEquals(array('twitterid', 'displayname'), array_keys($tableDiff->renamedColumns));
 | 
			
		||||
        $this->assertEquals(array('logged_in_at'), array_keys($tableDiff->addedColumns));
 | 
			
		||||
        $this->assertEquals(0, count($tableDiff->removedColumns));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-112
 | 
			
		||||
     */
 | 
			
		||||
    public function testChangedSequence()
 | 
			
		||||
    {
 | 
			
		||||
        $schema = new Schema();
 | 
			
		||||
        $sequence = $schema->createSequence('baz');
 | 
			
		||||
 | 
			
		||||
        $schemaNew = clone $schema;
 | 
			
		||||
        /* @var $schemaNew Schema */
 | 
			
		||||
        $schemaNew->getSequence('baz')->setAllocationSize(20);
 | 
			
		||||
 | 
			
		||||
        $c = new \Doctrine\DBAL\Schema\Comparator;
 | 
			
		||||
        $diff = $c->compare($schema, $schemaNew);
 | 
			
		||||
 | 
			
		||||
        $this->assertSame($diff->changedSequences[0] , $schemaNew->getSequence('baz'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-106
 | 
			
		||||
     */
 | 
			
		||||
    public function testDiffDecimalWithNullPrecision()
 | 
			
		||||
    {
 | 
			
		||||
        $column = new Column('foo', Type::getType('decimal'));
 | 
			
		||||
        $column->setPrecision(null);
 | 
			
		||||
 | 
			
		||||
        $column2 = new Column('foo', Type::getType('decimal'));
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $this->assertEquals(array(), $c->diffColumn($column, $column2));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-204
 | 
			
		||||
     */
 | 
			
		||||
    public function testFqnSchemaComparision()
 | 
			
		||||
    {
 | 
			
		||||
        $config = new SchemaConfig();
 | 
			
		||||
        $config->setName("foo");
 | 
			
		||||
 | 
			
		||||
        $oldSchema = new Schema(array(), array(), $config);
 | 
			
		||||
        $oldSchema->createTable('bar');
 | 
			
		||||
 | 
			
		||||
        $newSchema= new Schema(array(), array(), $config);
 | 
			
		||||
        $newSchema->createTable('foo.bar');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $this->assertEquals(new SchemaDiff(), $c->compare($oldSchema, $newSchema));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-204
 | 
			
		||||
     */
 | 
			
		||||
    public function testFqnSchemaComparisionDifferentSchemaNameButSameTableNoDiff()
 | 
			
		||||
    {
 | 
			
		||||
        $config = new SchemaConfig();
 | 
			
		||||
        $config->setName("foo");
 | 
			
		||||
 | 
			
		||||
        $oldSchema = new Schema(array(), array(), $config);
 | 
			
		||||
        $oldSchema->createTable('foo.bar');
 | 
			
		||||
 | 
			
		||||
        $newSchema = new Schema();
 | 
			
		||||
        $newSchema->createTable('bar');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $diff = $c->compare($oldSchema, $newSchema);
 | 
			
		||||
        $this->assertEquals(new SchemaDiff(), $c->compare($oldSchema, $newSchema));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-204
 | 
			
		||||
     */
 | 
			
		||||
    public function testFqnSchemaComparisionNoSchemaSame()
 | 
			
		||||
    {
 | 
			
		||||
        $config = new SchemaConfig();
 | 
			
		||||
        $config->setName("foo");
 | 
			
		||||
        $oldSchema = new Schema(array(), array(), $config);
 | 
			
		||||
        $oldSchema->createTable('bar');
 | 
			
		||||
 | 
			
		||||
        $newSchema = new Schema();
 | 
			
		||||
        $newSchema->createTable('bar');
 | 
			
		||||
 | 
			
		||||
        $c = new Comparator();
 | 
			
		||||
        $diff = $c->compare($oldSchema, $newSchema);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(new SchemaDiff(), $c->compare($oldSchema, $newSchema));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param SchemaDiff $diff
 | 
			
		||||
     * @param int $newTableCount
 | 
			
		||||
     * @param int $changeTableCount
 | 
			
		||||
     * @param int $removeTableCount
 | 
			
		||||
     */
 | 
			
		||||
    public function assertSchemaTableChangeCount($diff, $newTableCount=0, $changeTableCount=0, $removeTableCount=0)
 | 
			
		||||
    {
 | 
			
		||||
        $this->assertEquals($newTableCount, count($diff->newTables));
 | 
			
		||||
        $this->assertEquals($changeTableCount, count($diff->changedTables));
 | 
			
		||||
        $this->assertEquals($removeTableCount, count($diff->removedTables));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param SchemaDiff $diff
 | 
			
		||||
     * @param int $newSequenceCount
 | 
			
		||||
     * @param int $changeSequenceCount
 | 
			
		||||
     * @param int $changeSequenceCount
 | 
			
		||||
     */
 | 
			
		||||
    public function assertSchemaSequenceChangeCount($diff, $newSequenceCount=0, $changeSequenceCount=0, $removeSequenceCount=0)
 | 
			
		||||
    {
 | 
			
		||||
        $this->assertEquals($newSequenceCount, count($diff->newSequences), "Expected number of new sequences is wrong.");
 | 
			
		||||
        $this->assertEquals($changeSequenceCount, count($diff->changedSequences), "Expected number of changed sequences is wrong.");
 | 
			
		||||
        $this->assertEquals($removeSequenceCount, count($diff->removedSequences), "Expected number of removed sequences is wrong.");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										99
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/IndexTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/IndexTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema;
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../TestInit.php';
 | 
			
		||||
 | 
			
		||||
use Doctrine\DBAL\Schema\Schema;
 | 
			
		||||
use Doctrine\DBAL\Schema\Table;
 | 
			
		||||
use Doctrine\DBAL\Schema\Column;
 | 
			
		||||
use Doctrine\DBAL\Schema\Index;
 | 
			
		||||
 | 
			
		||||
class IndexTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    public function createIndex($unique=false, $primary=false)
 | 
			
		||||
    {
 | 
			
		||||
        return new Index("foo", array("bar", "baz"), $unique, $primary);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreateIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $idx = $this->createIndex();
 | 
			
		||||
        $this->assertEquals("foo", $idx->getName());
 | 
			
		||||
        $columns = $idx->getColumns();
 | 
			
		||||
        $this->assertEquals(2, count($columns));
 | 
			
		||||
        $this->assertEquals(array("bar", "baz"), $columns);
 | 
			
		||||
        $this->assertFalse($idx->isUnique());
 | 
			
		||||
        $this->assertFalse($idx->isPrimary());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreatePrimary()
 | 
			
		||||
    {
 | 
			
		||||
        $idx = $this->createIndex(false, true);
 | 
			
		||||
        $this->assertTrue($idx->isUnique());
 | 
			
		||||
        $this->assertTrue($idx->isPrimary());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreateUnique()
 | 
			
		||||
    {
 | 
			
		||||
        $idx = $this->createIndex(true, false);
 | 
			
		||||
        $this->assertTrue($idx->isUnique());
 | 
			
		||||
        $this->assertFalse($idx->isPrimary());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-50
 | 
			
		||||
     */
 | 
			
		||||
    public function testFullfilledByUnique()
 | 
			
		||||
    {
 | 
			
		||||
        $idx1 = $this->createIndex(true, false);
 | 
			
		||||
        $idx2 = $this->createIndex(true, false);
 | 
			
		||||
        $idx3 = $this->createIndex();
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($idx1->isFullfilledBy($idx2));
 | 
			
		||||
        $this->assertFalse($idx1->isFullfilledBy($idx3));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-50
 | 
			
		||||
     */
 | 
			
		||||
    public function testFullfilledByPrimary()
 | 
			
		||||
    {
 | 
			
		||||
        $idx1 = $this->createIndex(true, true);
 | 
			
		||||
        $idx2 = $this->createIndex(true, true);
 | 
			
		||||
        $idx3 = $this->createIndex(true, false);
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($idx1->isFullfilledBy($idx2));
 | 
			
		||||
        $this->assertFalse($idx1->isFullfilledBy($idx3));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-50
 | 
			
		||||
     */
 | 
			
		||||
    public function testFullfilledByIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $idx1 = $this->createIndex();
 | 
			
		||||
        $idx2 = $this->createIndex();
 | 
			
		||||
        $pri = $this->createIndex(true, true);
 | 
			
		||||
        $uniq = $this->createIndex(true);
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($idx1->isFullfilledBy($idx2));
 | 
			
		||||
        $this->assertTrue($idx1->isFullfilledBy($pri));
 | 
			
		||||
        $this->assertTrue($idx1->isFullfilledBy($uniq));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-285
 | 
			
		||||
     */
 | 
			
		||||
    public function testIndexQuotes()
 | 
			
		||||
    {
 | 
			
		||||
        $index = new Index("foo", array("`bar`", "`baz`"));
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($index->spansColumns(array("bar", "baz")));
 | 
			
		||||
        $this->assertTrue($index->hasColumnAtPosition("bar", 0));
 | 
			
		||||
        $this->assertTrue($index->hasColumnAtPosition("baz", 1));
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($index->hasColumnAtPosition("bar", 1));
 | 
			
		||||
        $this->assertFalse($index->hasColumnAtPosition("baz", 0));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										76
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/MySqlSchemaManagerTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/MySqlSchemaManagerTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema;
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../TestInit.php';
 | 
			
		||||
 | 
			
		||||
use Doctrine\Common\EventManager;
 | 
			
		||||
use Doctrine\DBAL\Connection;
 | 
			
		||||
use Doctrine\DBAL\Configuration;
 | 
			
		||||
use Doctrine\DBAL\Events;
 | 
			
		||||
use Doctrine\DBAL\Schema\MySqlSchemaManager;
 | 
			
		||||
use Doctrine\Tests\DBAL\Mocks;
 | 
			
		||||
use Doctrine\Tests\TestUtil;
 | 
			
		||||
 | 
			
		||||
class MySqlSchemaManagerTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     * @var \Doctrine\DBAL\Schema\AbstractSchemaManager
 | 
			
		||||
     */
 | 
			
		||||
    private $manager;
 | 
			
		||||
 | 
			
		||||
    public function setUp()
 | 
			
		||||
    {
 | 
			
		||||
        $eventManager = new EventManager();
 | 
			
		||||
        $driverMock = $this->getMock('Doctrine\DBAL\Driver');
 | 
			
		||||
        $platform = $this->getMock('Doctrine\DBAL\Platforms\MySqlPlatform');
 | 
			
		||||
        $this->conn = $this->getMock(
 | 
			
		||||
            'Doctrine\DBAL\Connection',
 | 
			
		||||
            array('fetchAll'),
 | 
			
		||||
            array(array('platform' => $platform), $driverMock, new Configuration(), $eventManager)
 | 
			
		||||
        );
 | 
			
		||||
        $this->manager = new MySqlSchemaManager($this->conn);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCompositeForeignKeys()
 | 
			
		||||
    {
 | 
			
		||||
        $this->conn->expects($this->once())->method('fetchAll')->will($this->returnValue($this->getFKDefinition()));
 | 
			
		||||
        $fkeys = $this->manager->listTableForeignKeys('dummy');
 | 
			
		||||
        $this->assertEquals(1, count($fkeys), "Table has to have one foreign key.");
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\ForeignKeyConstraint', $fkeys[0]);
 | 
			
		||||
        $this->assertEquals(array('column_1', 'column_2', 'column_3'), array_map('strtolower', $fkeys[0]->getLocalColumns()));
 | 
			
		||||
        $this->assertEquals(array('column_1', 'column_2', 'column_3'), array_map('strtolower', $fkeys[0]->getForeignColumns()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getFKDefinition()
 | 
			
		||||
    {
 | 
			
		||||
        return array(
 | 
			
		||||
            array(
 | 
			
		||||
                "CONSTRAINT_NAME" => "FK_C1B1712387FE737264DE5A5511B8B3E",
 | 
			
		||||
                "COLUMN_NAME" => "column_1",
 | 
			
		||||
                "REFERENCED_TABLE_NAME" => "dummy",
 | 
			
		||||
                "REFERENCED_COLUMN_NAME" => "column_1",
 | 
			
		||||
                "update_rule" => "RESTRICT",
 | 
			
		||||
                "delete_rule" => "RESTRICT",
 | 
			
		||||
            ),
 | 
			
		||||
            array(
 | 
			
		||||
                "CONSTRAINT_NAME" => "FK_C1B1712387FE737264DE5A5511B8B3E",
 | 
			
		||||
                "COLUMN_NAME" => "column_2",
 | 
			
		||||
                "REFERENCED_TABLE_NAME" => "dummy",
 | 
			
		||||
                "REFERENCED_COLUMN_NAME" => "column_2",
 | 
			
		||||
                "update_rule" => "RESTRICT",
 | 
			
		||||
                "delete_rule" => "RESTRICT",
 | 
			
		||||
            ),
 | 
			
		||||
            array(
 | 
			
		||||
                "CONSTRAINT_NAME" => "FK_C1B1712387FE737264DE5A5511B8B3E",
 | 
			
		||||
                "COLUMN_NAME" => "column_3",
 | 
			
		||||
                "REFERENCED_TABLE_NAME" => "dummy",
 | 
			
		||||
                "REFERENCED_COLUMN_NAME" => "column_3",
 | 
			
		||||
                "update_rule" => "RESTRICT",
 | 
			
		||||
                "delete_rule" => "RESTRICT",
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										67
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/Platforms/MySQLSchemaTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/Platforms/MySQLSchemaTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema\Platforms;
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../../TestInit.php';
 | 
			
		||||
 | 
			
		||||
use Doctrine\DBAL\Schema\Schema;
 | 
			
		||||
use Doctrine\DBAL\Schema\Table;
 | 
			
		||||
use Doctrine\DBAL\Schema\Column;
 | 
			
		||||
use Doctrine\DBAL\Types\Type;
 | 
			
		||||
 | 
			
		||||
class MySQLSchemaTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Comparator
 | 
			
		||||
     */
 | 
			
		||||
    private $comparator;
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     * @var \Doctrine\DBAL\Platforms\AbstractPlatform
 | 
			
		||||
     */
 | 
			
		||||
    private $platform;
 | 
			
		||||
 | 
			
		||||
    public function setUp()
 | 
			
		||||
    {
 | 
			
		||||
        $this->comparator = new \Doctrine\DBAL\Schema\Comparator;
 | 
			
		||||
        $this->platform = new \Doctrine\DBAL\Platforms\MySqlPlatform;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testSwitchPrimaryKeyOrder()
 | 
			
		||||
    {
 | 
			
		||||
        $tableOld = new Table("test");
 | 
			
		||||
        $tableOld->addColumn('foo_id', 'integer');
 | 
			
		||||
        $tableOld->addColumn('bar_id', 'integer');
 | 
			
		||||
        $tableNew = clone $tableOld;
 | 
			
		||||
 | 
			
		||||
        $tableOld->setPrimaryKey(array('foo_id', 'bar_id'));
 | 
			
		||||
        $tableNew->setPrimaryKey(array('bar_id', 'foo_id'));
 | 
			
		||||
 | 
			
		||||
        $diff = $this->comparator->diffTable($tableOld, $tableNew);
 | 
			
		||||
        $sql = $this->platform->getAlterTableSQL($diff);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(
 | 
			
		||||
            array(
 | 
			
		||||
                'ALTER TABLE test DROP PRIMARY KEY',
 | 
			
		||||
                'ALTER TABLE test ADD PRIMARY KEY (bar_id, foo_id)'
 | 
			
		||||
            ), $sql
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-132
 | 
			
		||||
     */
 | 
			
		||||
    public function testGenerateForeignKeySQL()
 | 
			
		||||
    {
 | 
			
		||||
        $tableOld = new Table("test");
 | 
			
		||||
        $tableOld->addColumn('foo_id', 'integer');
 | 
			
		||||
        $tableOld->addUnnamedForeignKeyConstraint('test_foreign', array('foo_id'), array('foo_id'));
 | 
			
		||||
 | 
			
		||||
        $sqls = array();
 | 
			
		||||
        foreach ($tableOld->getForeignKeys() AS $fk) {
 | 
			
		||||
            $sqls[] = $this->platform->getCreateForeignKeySQL($fk, $tableOld);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(array("ALTER TABLE test ADD CONSTRAINT FK_D87F7E0C8E48560F FOREIGN KEY (foo_id) REFERENCES test_foreign (foo_id)"), $sqls);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										109
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/SchemaDiffTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/SchemaDiffTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,109 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema;
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../TestInit.php';
 | 
			
		||||
 | 
			
		||||
use Doctrine\DBAL\Schema\Schema,
 | 
			
		||||
    Doctrine\DBAL\Schema\Table,
 | 
			
		||||
    Doctrine\DBAL\Schema\Column,
 | 
			
		||||
    Doctrine\DBAL\Schema\Index,
 | 
			
		||||
    Doctrine\DBAL\Schema\Sequence,
 | 
			
		||||
    Doctrine\DBAL\Schema\SchemaDiff,
 | 
			
		||||
    Doctrine\DBAL\Schema\TableDiff,
 | 
			
		||||
    Doctrine\DBAL\Schema\Comparator,
 | 
			
		||||
    Doctrine\DBAL\Types\Type;
 | 
			
		||||
 | 
			
		||||
class SchemaDiffTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    public function testSchemaDiffToSql()
 | 
			
		||||
    {
 | 
			
		||||
        $diff = $this->createSchemaDiff();
 | 
			
		||||
        $platform = $this->createPlatform(true);
 | 
			
		||||
 | 
			
		||||
        $sql = $diff->toSql($platform);
 | 
			
		||||
 | 
			
		||||
        $expected = array('drop_orphan_fk', 'alter_seq', 'drop_seq', 'create_seq', 'create_table', 'create_foreign_key', 'drop_table', 'alter_table');
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals($expected, $sql);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testSchemaDiffToSaveSql()
 | 
			
		||||
    {
 | 
			
		||||
        $diff = $this->createSchemaDiff();
 | 
			
		||||
        $platform = $this->createPlatform(false);
 | 
			
		||||
 | 
			
		||||
        $sql = $diff->toSaveSql($platform);
 | 
			
		||||
 | 
			
		||||
        $expected = array('alter_seq', 'create_seq', 'create_table', 'create_foreign_key', 'alter_table');
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals($expected, $sql);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function createPlatform($unsafe = false)
 | 
			
		||||
    {
 | 
			
		||||
        $platform = $this->getMock('Doctrine\Tests\DBAL\Mocks\MockPlatform');
 | 
			
		||||
        if ($unsafe) {
 | 
			
		||||
            $platform->expects($this->exactly(1))
 | 
			
		||||
                 ->method('getDropSequenceSql')
 | 
			
		||||
                 ->with($this->isInstanceOf('Doctrine\DBAL\Schema\Sequence'))
 | 
			
		||||
                 ->will($this->returnValue('drop_seq'));
 | 
			
		||||
        }
 | 
			
		||||
        $platform->expects($this->exactly(1))
 | 
			
		||||
                 ->method('getAlterSequenceSql')
 | 
			
		||||
                 ->with($this->isInstanceOf('Doctrine\DBAL\Schema\Sequence'))
 | 
			
		||||
                 ->will($this->returnValue('alter_seq'));
 | 
			
		||||
        $platform->expects($this->exactly(1))
 | 
			
		||||
                 ->method('getCreateSequenceSql')
 | 
			
		||||
                 ->with($this->isInstanceOf('Doctrine\DBAL\Schema\Sequence'))
 | 
			
		||||
                 ->will($this->returnValue('create_seq'));
 | 
			
		||||
        if ($unsafe) {
 | 
			
		||||
            $platform->expects($this->exactly(1))
 | 
			
		||||
                     ->method('getDropTableSql')
 | 
			
		||||
                     ->with($this->isInstanceof('Doctrine\DBAL\Schema\Table'))
 | 
			
		||||
                     ->will($this->returnValue('drop_table'));
 | 
			
		||||
        }
 | 
			
		||||
        $platform->expects($this->exactly(1))
 | 
			
		||||
                 ->method('getCreateTableSql')
 | 
			
		||||
                 ->with($this->isInstanceof('Doctrine\DBAL\Schema\Table'))
 | 
			
		||||
                 ->will($this->returnValue(array('create_table')));
 | 
			
		||||
        $platform->expects($this->exactly(1))
 | 
			
		||||
                 ->method('getCreateForeignKeySQL')
 | 
			
		||||
                 ->with($this->isInstanceOf('Doctrine\DBAL\Schema\ForeignKeyConstraint'))
 | 
			
		||||
                 ->will($this->returnValue('create_foreign_key'));
 | 
			
		||||
        $platform->expects($this->exactly(1))
 | 
			
		||||
                 ->method('getAlterTableSql')
 | 
			
		||||
                 ->with($this->isInstanceOf('Doctrine\DBAL\Schema\TableDiff'))
 | 
			
		||||
                 ->will($this->returnValue(array('alter_table')));
 | 
			
		||||
        if ($unsafe) {
 | 
			
		||||
            $platform->expects($this->exactly(1))
 | 
			
		||||
                     ->method('getDropForeignKeySql')
 | 
			
		||||
                     ->with($this->isInstanceof('Doctrine\DBAL\Schema\ForeignKeyConstraint'), $this->equalTo('local_table'))
 | 
			
		||||
                     ->will($this->returnValue('drop_orphan_fk'));
 | 
			
		||||
        }
 | 
			
		||||
        $platform->expects($this->exactly(1))
 | 
			
		||||
                ->method('supportsSequences')
 | 
			
		||||
                ->will($this->returnValue(true));
 | 
			
		||||
        $platform->expects($this->exactly(2))
 | 
			
		||||
                ->method('supportsForeignKeyConstraints')
 | 
			
		||||
                ->will($this->returnValue(true));
 | 
			
		||||
        return $platform;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function createSchemaDiff()
 | 
			
		||||
    {
 | 
			
		||||
        $diff = new SchemaDiff();
 | 
			
		||||
        $diff->changedSequences['foo_seq'] = new Sequence('foo_seq');
 | 
			
		||||
        $diff->newSequences['bar_seq'] = new Sequence('bar_seq');
 | 
			
		||||
        $diff->removedSequences['baz_seq'] = new Sequence('baz_seq');
 | 
			
		||||
        $diff->newTables['foo_table'] = new Table('foo_table');
 | 
			
		||||
        $diff->removedTables['bar_table'] = new Table('bar_table');
 | 
			
		||||
        $diff->changedTables['baz_table'] = new TableDiff('baz_table');
 | 
			
		||||
        $diff->newTables['foo_table']->addColumn('foreign_id', 'integer');
 | 
			
		||||
        $diff->newTables['foo_table']->addForeignKeyConstraint('foreign_table', array('foreign_id'), array('id'));
 | 
			
		||||
        $fk = new \Doctrine\DBAL\Schema\ForeignKeyConstraint(array('id'), 'foreign_table', array('id'));
 | 
			
		||||
        $fk->setLocalTable(new Table('local_table'));
 | 
			
		||||
        $diff->orphanedForeignKeys[] = $fk;
 | 
			
		||||
        return $diff;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										224
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/SchemaTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										224
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/SchemaTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,224 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema;
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../TestInit.php';
 | 
			
		||||
 | 
			
		||||
use Doctrine\DBAL\Schema\Schema;
 | 
			
		||||
use Doctrine\DBAL\Schema\Table;
 | 
			
		||||
use Doctrine\DBAL\Schema\Sequence;
 | 
			
		||||
 | 
			
		||||
class SchemaTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    public function testAddTable()
 | 
			
		||||
    {
 | 
			
		||||
        $tableName = "public.foo";
 | 
			
		||||
        $table = new Table($tableName);
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema(array($table));
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($schema->hasTable($tableName));
 | 
			
		||||
 | 
			
		||||
        $tables = $schema->getTables();
 | 
			
		||||
        $this->assertTrue( isset($tables[$tableName]) );
 | 
			
		||||
        $this->assertSame($table, $tables[$tableName]);
 | 
			
		||||
        $this->assertSame($table, $schema->getTable($tableName));
 | 
			
		||||
        $this->assertTrue($schema->hasTable($tableName));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testTableMatchingCaseInsenstive()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("Foo");
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema(array($table));
 | 
			
		||||
        $this->assertTrue($schema->hasTable("foo"));
 | 
			
		||||
        $this->assertTrue($schema->hasTable("FOO"));
 | 
			
		||||
 | 
			
		||||
        $this->assertSame($table, $schema->getTable('FOO'));
 | 
			
		||||
        $this->assertSame($table, $schema->getTable('foo'));
 | 
			
		||||
        $this->assertSame($table, $schema->getTable('Foo'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testGetUnknownTableThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema();
 | 
			
		||||
        $schema->getTable("unknown");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreateTableTwiceThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $tableName = "foo";
 | 
			
		||||
        $table = new Table($tableName);
 | 
			
		||||
        $tables = array($table, $table);
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema($tables);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testRenameTable()
 | 
			
		||||
    {
 | 
			
		||||
        $tableName = "foo";
 | 
			
		||||
        $table = new Table($tableName);
 | 
			
		||||
        $schema = new Schema(array($table));
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($schema->hasTable("foo"));
 | 
			
		||||
        $schema->renameTable("foo", "bar");
 | 
			
		||||
        $this->assertFalse($schema->hasTable("foo"));
 | 
			
		||||
        $this->assertTrue($schema->hasTable("bar"));
 | 
			
		||||
        $this->assertSame($table, $schema->getTable("bar"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testDropTable()
 | 
			
		||||
    {
 | 
			
		||||
        $tableName = "foo";
 | 
			
		||||
        $table = new Table($tableName);
 | 
			
		||||
        $schema = new Schema(array($table));
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($schema->hasTable("foo"));
 | 
			
		||||
 | 
			
		||||
        $schema->dropTable("foo");
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($schema->hasTable("foo"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreateTable()
 | 
			
		||||
    {
 | 
			
		||||
        $schema = new Schema();
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($schema->hasTable("foo"));
 | 
			
		||||
 | 
			
		||||
        $table = $schema->createTable("foo");
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\Table', $table);
 | 
			
		||||
        $this->assertEquals("foo", $table->getName());
 | 
			
		||||
        $this->assertTrue($schema->hasTable("foo"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddSequences()
 | 
			
		||||
    {
 | 
			
		||||
        $sequence = new Sequence("a_seq", 1, 1);
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema(array(), array($sequence));
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($schema->hasSequence("a_seq"));
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\Sequence', $schema->getSequence("a_seq"));
 | 
			
		||||
 | 
			
		||||
        $sequences = $schema->getSequences();
 | 
			
		||||
        $this->assertArrayHasKey('public.a_seq', $sequences);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testSequenceAccessCaseInsensitive()
 | 
			
		||||
    {
 | 
			
		||||
        $sequence = new Sequence("a_Seq");
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema(array(), array($sequence));
 | 
			
		||||
        $this->assertTrue($schema->hasSequence('a_seq'));
 | 
			
		||||
        $this->assertTrue($schema->hasSequence('a_Seq'));
 | 
			
		||||
        $this->assertTrue($schema->hasSequence('A_SEQ'));
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals($sequence, $schema->getSequence('a_seq'));
 | 
			
		||||
        $this->assertEquals($sequence, $schema->getSequence('a_Seq'));
 | 
			
		||||
        $this->assertEquals($sequence, $schema->getSequence('A_SEQ'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testGetUnknownSequenceThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema();
 | 
			
		||||
        $schema->getSequence("unknown");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreateSequence()
 | 
			
		||||
    {
 | 
			
		||||
        $schema = new Schema();
 | 
			
		||||
        $sequence = $schema->createSequence('a_seq', 10, 20);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals('a_seq', $sequence->getName());
 | 
			
		||||
        $this->assertEquals(10, $sequence->getAllocationSize());
 | 
			
		||||
        $this->assertEquals(20, $sequence->getInitialValue());
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($schema->hasSequence("a_seq"));
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\Sequence', $schema->getSequence("a_seq"));
 | 
			
		||||
 | 
			
		||||
        $sequences = $schema->getSequences();
 | 
			
		||||
        $this->assertArrayHasKey('public.a_seq', $sequences);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testDropSequence()
 | 
			
		||||
    {
 | 
			
		||||
        $sequence = new Sequence("a_seq", 1, 1);
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema(array(), array($sequence));
 | 
			
		||||
 | 
			
		||||
        $schema->dropSequence("a_seq");
 | 
			
		||||
        $this->assertFalse($schema->hasSequence("a_seq"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddSequenceTwiceThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $sequence = new Sequence("a_seq", 1, 1);
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema(array(), array($sequence, $sequence));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testConfigMaxIdentifierLength()
 | 
			
		||||
    {
 | 
			
		||||
        $schemaConfig = new \Doctrine\DBAL\Schema\SchemaConfig();
 | 
			
		||||
        $schemaConfig->setMaxIdentifierLength(5);
 | 
			
		||||
 | 
			
		||||
        $schema = new Schema(array(), array(), $schemaConfig);
 | 
			
		||||
        $table = $schema->createTable("smalltable");
 | 
			
		||||
        $table->addColumn('long_id', 'integer');
 | 
			
		||||
        $table->addIndex(array('long_id'));
 | 
			
		||||
 | 
			
		||||
        $index = current($table->getIndexes());
 | 
			
		||||
        $this->assertEquals(5, strlen($index->getName()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testDeepClone()
 | 
			
		||||
    {
 | 
			
		||||
        $schema = new Schema();
 | 
			
		||||
        $sequence = $schema->createSequence('baz');
 | 
			
		||||
 | 
			
		||||
        $tableA = $schema->createTable('foo');
 | 
			
		||||
        $tableA->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $tableB = $schema->createTable('bar');
 | 
			
		||||
        $tableB->addColumn('id', 'integer');
 | 
			
		||||
        $tableB->addColumn('foo_id', 'integer');
 | 
			
		||||
        $tableB->addForeignKeyConstraint($tableA, array('foo_id'), array('id'));
 | 
			
		||||
 | 
			
		||||
        $schemaNew = clone $schema;
 | 
			
		||||
 | 
			
		||||
        $this->assertNotSame($sequence, $schemaNew->getSequence('baz'));
 | 
			
		||||
 | 
			
		||||
        $this->assertNotSame($tableA, $schemaNew->getTable('foo'));
 | 
			
		||||
        $this->assertNotSame($tableA->getColumn('id'), $schemaNew->getTable('foo')->getColumn('id'));
 | 
			
		||||
 | 
			
		||||
        $this->assertNotSame($tableB, $schemaNew->getTable('bar'));
 | 
			
		||||
        $this->assertNotSame($tableB->getColumn('id'), $schemaNew->getTable('bar')->getColumn('id'));
 | 
			
		||||
 | 
			
		||||
        $fk = $schemaNew->getTable('bar')->getForeignKeys();
 | 
			
		||||
        $fk = current($fk);
 | 
			
		||||
        $this->assertSame($schemaNew->getTable('bar'), $this->readAttribute($fk, '_localTable'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-219
 | 
			
		||||
     */
 | 
			
		||||
    public function testHasTableForQuotedAsset()
 | 
			
		||||
    {
 | 
			
		||||
        $schema = new Schema();
 | 
			
		||||
 | 
			
		||||
        $tableA = $schema->createTable('foo');
 | 
			
		||||
        $tableA->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($schema->hasTable('`foo`'));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										500
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/TableTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										500
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/TableTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,500 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema;
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../TestInit.php';
 | 
			
		||||
 | 
			
		||||
use Doctrine\DBAL\Schema\Schema;
 | 
			
		||||
use Doctrine\DBAL\Schema\Table;
 | 
			
		||||
use Doctrine\DBAL\Schema\TableBuilder;
 | 
			
		||||
use Doctrine\DBAL\Schema\Column;
 | 
			
		||||
use Doctrine\DBAL\Schema\Index;
 | 
			
		||||
use Doctrine\DBAL\Schema\ForeignKeyConstraint;
 | 
			
		||||
use Doctrine\DBAL\Types\Type;
 | 
			
		||||
 | 
			
		||||
class TableTest extends \Doctrine\Tests\DbalTestCase
 | 
			
		||||
{
 | 
			
		||||
    public function testCreateWithInvalidTableName()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException('Doctrine\DBAL\DBALException');
 | 
			
		||||
        $table = new \Doctrine\DBAL\Schema\Table('');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testGetName()
 | 
			
		||||
    {
 | 
			
		||||
        $table =  new Table("foo", array(), array(), array());
 | 
			
		||||
        $this->assertEquals("foo", $table->getName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testColumns()
 | 
			
		||||
    {
 | 
			
		||||
        $type = Type::getType('integer');
 | 
			
		||||
        $columns = array();
 | 
			
		||||
        $columns[] = new Column("foo", $type);
 | 
			
		||||
        $columns[] = new Column("bar", $type);
 | 
			
		||||
        $table = new Table("foo", $columns, array(), array());
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasColumn("foo"));
 | 
			
		||||
        $this->assertTrue($table->hasColumn("bar"));
 | 
			
		||||
        $this->assertFalse($table->hasColumn("baz"));
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\Column', $table->getColumn("foo"));
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\Column', $table->getColumn("bar"));
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(2, count($table->getColumns()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testColumnsCaseInsensitive()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $column = $table->addColumn('Foo', 'integer');
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasColumn('Foo'));
 | 
			
		||||
        $this->assertTrue($table->hasColumn('foo'));
 | 
			
		||||
        $this->assertTrue($table->hasColumn('FOO'));
 | 
			
		||||
 | 
			
		||||
        $this->assertSame($column, $table->getColumn('Foo'));
 | 
			
		||||
        $this->assertSame($column, $table->getColumn('foo'));
 | 
			
		||||
        $this->assertSame($column, $table->getColumn('FOO'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreateColumn()
 | 
			
		||||
    {
 | 
			
		||||
        $type = Type::getType('integer');
 | 
			
		||||
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($table->hasColumn("bar"));
 | 
			
		||||
        $table->addColumn("bar", 'integer');
 | 
			
		||||
        $this->assertTrue($table->hasColumn("bar"));
 | 
			
		||||
        $this->assertSame($type, $table->getColumn("bar")->getType());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testDropColumn()
 | 
			
		||||
    {
 | 
			
		||||
        $type = Type::getType('integer');
 | 
			
		||||
        $columns = array();
 | 
			
		||||
        $columns[] = new Column("foo", $type);
 | 
			
		||||
        $columns[] = new Column("bar", $type);
 | 
			
		||||
        $table = new Table("foo", $columns, array(), array());
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasColumn("foo"));
 | 
			
		||||
        $this->assertTrue($table->hasColumn("bar"));
 | 
			
		||||
 | 
			
		||||
        $table->dropColumn("foo")->dropColumn("bar");
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($table->hasColumn("foo"));
 | 
			
		||||
        $this->assertFalse($table->hasColumn("bar"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testGetUnknownColumnThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $table = new Table("foo", array(), array(), array());
 | 
			
		||||
        $table->getColumn('unknown');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddColumnTwiceThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $type = \Doctrine\DBAL\Types\Type::getType('integer');
 | 
			
		||||
        $columns = array();
 | 
			
		||||
        $columns[] = new Column("foo", $type);
 | 
			
		||||
        $columns[] = new Column("foo", $type);
 | 
			
		||||
        $table = new Table("foo", $columns, array(), array());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreateIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $type = \Doctrine\DBAL\Types\Type::getType('integer');
 | 
			
		||||
        $columns = array(new Column("foo", $type), new Column("bar", $type), new Column("baz", $type));
 | 
			
		||||
        $table = new Table("foo", $columns);
 | 
			
		||||
 | 
			
		||||
        $table->addIndex(array("foo", "bar"), "foo_foo_bar_idx");
 | 
			
		||||
        $table->addUniqueIndex(array("bar", "baz"), "foo_bar_baz_uniq");
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasIndex("foo_foo_bar_idx"));
 | 
			
		||||
        $this->assertTrue($table->hasIndex("foo_bar_baz_uniq"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testIndexCaseInsensitive()
 | 
			
		||||
    {
 | 
			
		||||
        $type = \Doctrine\DBAL\Types\Type::getType('integer');
 | 
			
		||||
        $columns = array(
 | 
			
		||||
            new Column("foo", $type),
 | 
			
		||||
            new Column("bar", $type),
 | 
			
		||||
            new Column("baz", $type)
 | 
			
		||||
        );
 | 
			
		||||
        $table = new Table("foo", $columns);
 | 
			
		||||
 | 
			
		||||
        $table->addIndex(array("foo", "bar", "baz"), "Foo_Idx");
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasIndex('foo_idx'));
 | 
			
		||||
        $this->assertTrue($table->hasIndex('Foo_Idx'));
 | 
			
		||||
        $this->assertTrue($table->hasIndex('FOO_IDX'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddIndexes()
 | 
			
		||||
    {
 | 
			
		||||
        $type = \Doctrine\DBAL\Types\Type::getType('integer');
 | 
			
		||||
        $columns = array(
 | 
			
		||||
            new Column("foo", $type),
 | 
			
		||||
            new Column("bar", $type),
 | 
			
		||||
        );
 | 
			
		||||
        $indexes = array(
 | 
			
		||||
            new Index("the_primary", array("foo"), true, true),
 | 
			
		||||
            new Index("bar_idx", array("bar"), false, false),
 | 
			
		||||
        );
 | 
			
		||||
        $table = new Table("foo", $columns, $indexes, array());
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasIndex("the_primary"));
 | 
			
		||||
        $this->assertTrue($table->hasIndex("bar_idx"));
 | 
			
		||||
        $this->assertFalse($table->hasIndex("some_idx"));
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\Index', $table->getPrimaryKey());
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\Index', $table->getIndex('the_primary'));
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\Index', $table->getIndex('bar_idx'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testGetUnknownIndexThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $table = new Table("foo", array(), array(), array());
 | 
			
		||||
        $table->getIndex("unknownIndex");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddTwoPrimaryThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $type = \Doctrine\DBAL\Types\Type::getType('integer');
 | 
			
		||||
        $columns = array(new Column("foo", $type), new Column("bar", $type));
 | 
			
		||||
        $indexes = array(
 | 
			
		||||
            new Index("the_primary", array("foo"), true, true),
 | 
			
		||||
            new Index("other_primary", array("bar"), true, true),
 | 
			
		||||
        );
 | 
			
		||||
        $table = new Table("foo", $columns, $indexes, array());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddTwoIndexesWithSameNameThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $type = \Doctrine\DBAL\Types\Type::getType('integer');
 | 
			
		||||
        $columns = array(new Column("foo", $type), new Column("bar", $type));
 | 
			
		||||
        $indexes = array(
 | 
			
		||||
            new Index("an_idx", array("foo"), false, false),
 | 
			
		||||
            new Index("an_idx", array("bar"), false, false),
 | 
			
		||||
        );
 | 
			
		||||
        $table = new Table("foo", $columns, $indexes, array());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testConstraints()
 | 
			
		||||
    {
 | 
			
		||||
        $constraint = new ForeignKeyConstraint(array(), "foo", array());
 | 
			
		||||
 | 
			
		||||
        $tableA = new Table("foo", array(), array(), array($constraint));
 | 
			
		||||
        $constraints = $tableA->getForeignKeys();
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(1, count($constraints));
 | 
			
		||||
        $this->assertSame($constraint, array_shift($constraints));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testOptions()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo", array(), array(), array(), false, array("foo" => "bar"));
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasOption("foo"));
 | 
			
		||||
        $this->assertEquals("bar", $table->getOption("foo"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testBuilderSetPrimaryKey()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
 | 
			
		||||
        $table->addColumn("bar", 'integer');
 | 
			
		||||
        $table->setPrimaryKey(array("bar"));
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasIndex("primary"));
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\Index', $table->getPrimaryKey());
 | 
			
		||||
        $this->assertTrue($table->getIndex("primary")->isUnique());
 | 
			
		||||
        $this->assertTrue($table->getIndex("primary")->isPrimary());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testBuilderAddUniqueIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
 | 
			
		||||
        $table->addColumn("bar", 'integer');
 | 
			
		||||
        $table->addUniqueIndex(array("bar"), "my_idx");
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasIndex("my_idx"));
 | 
			
		||||
        $this->assertTrue($table->getIndex("my_idx")->isUnique());
 | 
			
		||||
        $this->assertFalse($table->getIndex("my_idx")->isPrimary());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testBuilderAddIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
 | 
			
		||||
        $table->addColumn("bar", 'integer');
 | 
			
		||||
        $table->addIndex(array("bar"), "my_idx");
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasIndex("my_idx"));
 | 
			
		||||
        $this->assertFalse($table->getIndex("my_idx")->isUnique());
 | 
			
		||||
        $this->assertFalse($table->getIndex("my_idx")->isPrimary());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testBuilderAddIndexWithInvalidNameThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $table->addColumn("bar",'integer');
 | 
			
		||||
        $table->addIndex(array("bar"), "invalid name %&/");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testBuilderAddIndexWithUnknownColumnThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $table->addIndex(array("bar"), "invalidName");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testBuilderOptions()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $table->addOption("foo", "bar");
 | 
			
		||||
        $this->assertTrue($table->hasOption("foo"));
 | 
			
		||||
        $this->assertEquals("bar", $table->getOption("foo"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddForeignKeyConstraint_UnknownLocalColumn_ThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $table->addColumn("id", 'integer');
 | 
			
		||||
 | 
			
		||||
        $foreignTable = new Table("bar");
 | 
			
		||||
        $foreignTable->addColumn("id", 'integer');
 | 
			
		||||
 | 
			
		||||
        $table->addForeignKeyConstraint($foreignTable, array("foo"), array("id"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddForeignKeyConstraint_UnknownForeignColumn_ThrowsException()
 | 
			
		||||
    {
 | 
			
		||||
        $this->setExpectedException("Doctrine\DBAL\Schema\SchemaException");
 | 
			
		||||
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $table->addColumn("id", 'integer');
 | 
			
		||||
 | 
			
		||||
        $foreignTable = new Table("bar");
 | 
			
		||||
        $foreignTable->addColumn("id", 'integer');
 | 
			
		||||
 | 
			
		||||
        $table->addForeignKeyConstraint($foreignTable, array("id"), array("foo"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddForeignKeyConstraint()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $table->addColumn("id", 'integer');
 | 
			
		||||
 | 
			
		||||
        $foreignTable = new Table("bar");
 | 
			
		||||
        $foreignTable->addColumn("id", 'integer');
 | 
			
		||||
 | 
			
		||||
        $table->addForeignKeyConstraint($foreignTable, array("id"), array("id"), array("foo" => "bar"));
 | 
			
		||||
 | 
			
		||||
        $constraints = $table->getForeignKeys();
 | 
			
		||||
        $this->assertEquals(1, count($constraints));
 | 
			
		||||
        $constraint = current($constraints);
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf('Doctrine\DBAL\Schema\ForeignKeyConstraint', $constraint);
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($constraint->hasOption("foo"));
 | 
			
		||||
        $this->assertEquals("bar", $constraint->getOption("foo"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddIndexWithCaseSensitiveColumnProblem()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $table->addColumn("id", 'integer');
 | 
			
		||||
 | 
			
		||||
        $table->addIndex(array("ID"), "my_idx");
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasIndex('my_idx'));
 | 
			
		||||
        $this->assertEquals(array("ID"), $table->getIndex("my_idx")->getColumns());
 | 
			
		||||
        $this->assertTrue($table->getIndex('my_idx')->spansColumns(array('id')));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testAddPrimaryKey_ColumnsAreExplicitlySetToNotNull()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $column = $table->addColumn("id", 'integer', array('notnull' => false));
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($column->getNotnull());
 | 
			
		||||
 | 
			
		||||
        $table->setPrimaryKey(array('id'));
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($column->getNotnull());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DDC-133
 | 
			
		||||
     */
 | 
			
		||||
    public function testAllowImplicitSchemaTableInAutogeneratedIndexNames()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo.bar");
 | 
			
		||||
        $table->addColumn('baz', 'integer', array());
 | 
			
		||||
        $table->addIndex(array('baz'));
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(1, count($table->getIndexes()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-50
 | 
			
		||||
     */
 | 
			
		||||
    public function testAddIndexTwice_IgnoreSecond()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo.bar");
 | 
			
		||||
        $table->addColumn('baz', 'integer', array());
 | 
			
		||||
        $table->addIndex(array('baz'));
 | 
			
		||||
        $table->addIndex(array('baz'));
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(1, count($table->getIndexes()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-50
 | 
			
		||||
     */
 | 
			
		||||
    public function testAddForeignKeyIndexImplicitly()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("foo");
 | 
			
		||||
        $table->addColumn("id", 'integer');
 | 
			
		||||
 | 
			
		||||
        $foreignTable = new Table("bar");
 | 
			
		||||
        $foreignTable->addColumn("id", 'integer');
 | 
			
		||||
 | 
			
		||||
        $table->addForeignKeyConstraint($foreignTable, array("id"), array("id"), array("foo" => "bar"));
 | 
			
		||||
 | 
			
		||||
        $indexes = $table->getIndexes();
 | 
			
		||||
        $this->assertEquals(1, count($indexes));
 | 
			
		||||
        $index = current($indexes);
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasIndex($index->getName()));
 | 
			
		||||
        $this->assertEquals(array('id'), $index->getColumns());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-50
 | 
			
		||||
     */
 | 
			
		||||
    public function testOverruleIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("bar");
 | 
			
		||||
        $table->addColumn('baz', 'integer', array());
 | 
			
		||||
        $table->addIndex(array('baz'));
 | 
			
		||||
 | 
			
		||||
        $indexes = $table->getIndexes();
 | 
			
		||||
        $this->assertEquals(1, count($indexes));
 | 
			
		||||
        $index = current($indexes);
 | 
			
		||||
 | 
			
		||||
        $table->addUniqueIndex(array('baz'));
 | 
			
		||||
        $this->assertEquals(1, count($table->getIndexes()));
 | 
			
		||||
        $this->assertFalse($table->hasIndex($index->getName()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testPrimaryKeyOverrulesUniqueIndex()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("bar");
 | 
			
		||||
        $table->addColumn('baz', 'integer', array());
 | 
			
		||||
        $table->addUniqueIndex(array('baz'));
 | 
			
		||||
 | 
			
		||||
        $table->setPrimaryKey(array('baz'));
 | 
			
		||||
 | 
			
		||||
        $indexes = $table->getIndexes();
 | 
			
		||||
        $this->assertEquals(1, count($indexes), "Table should only contain the primary key table index, not the unique one anymore, because it was overruled.");
 | 
			
		||||
 | 
			
		||||
        $index = current($indexes);
 | 
			
		||||
        $this->assertTrue($index->isPrimary());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-64
 | 
			
		||||
     */
 | 
			
		||||
    public function testQuotedTableName()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("`bar`");
 | 
			
		||||
 | 
			
		||||
        $mysqlPlatform = new \Doctrine\DBAL\Platforms\MySqlPlatform();
 | 
			
		||||
        $sqlitePlatform = new \Doctrine\DBAL\Platforms\SqlitePlatform();
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals('bar', $table->getName());
 | 
			
		||||
        $this->assertEquals('`bar`', $table->getQuotedName($mysqlPlatform));
 | 
			
		||||
        $this->assertEquals('"bar"', $table->getQuotedName($sqlitePlatform));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-79
 | 
			
		||||
     */
 | 
			
		||||
    public function testTableHasPrimaryKey()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("test");
 | 
			
		||||
 | 
			
		||||
        $this->assertFalse($table->hasPrimaryKey());
 | 
			
		||||
 | 
			
		||||
        $table->addColumn("foo", "integer");
 | 
			
		||||
        $table->setPrimaryKey(array("foo"));
 | 
			
		||||
 | 
			
		||||
        $this->assertTrue($table->hasPrimaryKey());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-91
 | 
			
		||||
     */
 | 
			
		||||
    public function testAddIndexWithQuotedColumns()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("test");
 | 
			
		||||
        $table->addColumn('"foo"', 'integer');
 | 
			
		||||
        $table->addColumn('bar', 'integer');
 | 
			
		||||
        $table->addIndex(array('"foo"', '"bar"'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-91
 | 
			
		||||
     */
 | 
			
		||||
    public function testAddForeignKeyWithQuotedColumnsAndTable()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("test");
 | 
			
		||||
        $table->addColumn('"foo"', 'integer');
 | 
			
		||||
        $table->addColumn('bar', 'integer');
 | 
			
		||||
        $table->addForeignKeyConstraint('"boing"', array('"foo"', '"bar"'), array("id"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-177
 | 
			
		||||
     */
 | 
			
		||||
    public function testQuoteSchemaPrefixed()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("`test`.`test`");
 | 
			
		||||
        $this->assertEquals("test.test", $table->getName());
 | 
			
		||||
        $this->assertEquals("`test`.`test`", $table->getQuotedName(new \Doctrine\DBAL\Platforms\MySqlPlatform));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-204
 | 
			
		||||
     */
 | 
			
		||||
    public function testFullQualifiedTableName()
 | 
			
		||||
    {
 | 
			
		||||
        $table = new Table("`test`.`test`");
 | 
			
		||||
        $this->assertEquals('test.test', $table->getFullQualifiedName("test"));
 | 
			
		||||
        $this->assertEquals('test.test', $table->getFullQualifiedName("other"));
 | 
			
		||||
 | 
			
		||||
        $table = new Table("test");
 | 
			
		||||
        $this->assertEquals('test.test', $table->getFullQualifiedName("test"));
 | 
			
		||||
        $this->assertEquals('other.test', $table->getFullQualifiedName("other"));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										77
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/Visitor/RemoveNamespacedAssetsTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/Visitor/RemoveNamespacedAssetsTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema\Visitor;
 | 
			
		||||
 | 
			
		||||
use Doctrine\DBAL\Schema\Schema;
 | 
			
		||||
use Doctrine\DBAL\Schema\SchemaConfig;
 | 
			
		||||
use Doctrine\DBAL\Schema\Visitor\RemoveNamespacedAssets;
 | 
			
		||||
use Doctrine\DBAL\Platforms\MySqlPlatform;
 | 
			
		||||
 | 
			
		||||
class RemoveNamespacedAssetsTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-204
 | 
			
		||||
     */
 | 
			
		||||
    public function testRemoveNamespacedAssets()
 | 
			
		||||
    {
 | 
			
		||||
        $config = new SchemaConfig;
 | 
			
		||||
        $config->setName("test");
 | 
			
		||||
        $schema = new Schema(array(), array(), $config);
 | 
			
		||||
 | 
			
		||||
        $schema->createTable("test.test");
 | 
			
		||||
        $schema->createTable("foo.bar");
 | 
			
		||||
        $schema->createTable("baz");
 | 
			
		||||
 | 
			
		||||
        $schema->visit(new RemoveNamespacedAssets());
 | 
			
		||||
 | 
			
		||||
        $tables = $schema->getTables();
 | 
			
		||||
        $this->assertEquals(array("test.test", "test.baz"), array_keys($tables), "Only 2 tables should be present, both in 'test' namespace.");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-204
 | 
			
		||||
     */
 | 
			
		||||
    public function testCleanupForeignKeys()
 | 
			
		||||
    {
 | 
			
		||||
        $config = new SchemaConfig;
 | 
			
		||||
        $config->setName("test");
 | 
			
		||||
        $schema = new Schema(array(), array(), $config);
 | 
			
		||||
 | 
			
		||||
        $fooTable = $schema->createTable("foo.bar");
 | 
			
		||||
        $fooTable->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $testTable = $schema->createTable("test.test");
 | 
			
		||||
        $testTable->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $testTable->addForeignKeyConstraint("foo.bar", array("id"), array("id"));
 | 
			
		||||
 | 
			
		||||
        $schema->visit(new RemoveNamespacedAssets());
 | 
			
		||||
 | 
			
		||||
        $sql = $schema->toSql(new MySqlPlatform());
 | 
			
		||||
        $this->assertEquals(1, count($sql), "Just one CREATE TABLE statement, no foreign key and table to foo.bar");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @group DBAL-204
 | 
			
		||||
     */
 | 
			
		||||
    public function testCleanupForeignKeysDifferentOrder()
 | 
			
		||||
    {
 | 
			
		||||
        $config = new SchemaConfig;
 | 
			
		||||
        $config->setName("test");
 | 
			
		||||
        $schema = new Schema(array(), array(), $config);
 | 
			
		||||
 | 
			
		||||
        $testTable = $schema->createTable("test.test");
 | 
			
		||||
        $testTable->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $fooTable = $schema->createTable("foo.bar");
 | 
			
		||||
        $fooTable->addColumn('id', 'integer');
 | 
			
		||||
 | 
			
		||||
        $testTable->addForeignKeyConstraint("foo.bar", array("id"), array("id"));
 | 
			
		||||
 | 
			
		||||
        $schema->visit(new RemoveNamespacedAssets());
 | 
			
		||||
 | 
			
		||||
        $sql = $schema->toSql(new MySqlPlatform());
 | 
			
		||||
        $this->assertEquals(1, count($sql), "Just one CREATE TABLE statement, no foreign key and table to foo.bar");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										80
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/Visitor/SchemaSqlCollectorTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Schema/Visitor/SchemaSqlCollectorTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Doctrine\Tests\DBAL\Schema\Visitor;
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/../../../TestInit.php';
 | 
			
		||||
 | 
			
		||||
use Doctrine\DBAL\Schema\Schema;
 | 
			
		||||
use Doctrine\DBAL\Schema\Table;
 | 
			
		||||
use Doctrine\DBAL\Types\Type;
 | 
			
		||||
 | 
			
		||||
class SchemaSqlCollectorTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    public function testCreateSchema()
 | 
			
		||||
    {
 | 
			
		||||
        $platformMock = $this->getMock(
 | 
			
		||||
            'Doctrine\DBAL\Platforms\MySqlPlatform',
 | 
			
		||||
            array('getCreateTableSql', 'getCreateSequenceSql', 'getCreateForeignKeySql')
 | 
			
		||||
        );
 | 
			
		||||
        $platformMock->expects($this->exactly(2))
 | 
			
		||||
                     ->method('getCreateTableSql')
 | 
			
		||||
                     ->will($this->returnValue(array("foo")));
 | 
			
		||||
        $platformMock->expects($this->exactly(1))
 | 
			
		||||
                     ->method('getCreateSequenceSql')
 | 
			
		||||
                     ->will($this->returnValue(array("bar")));
 | 
			
		||||
        $platformMock->expects($this->exactly(1))
 | 
			
		||||
                     ->method('getCreateForeignKeySql')
 | 
			
		||||
                     ->will($this->returnValue(array("baz")));
 | 
			
		||||
 | 
			
		||||
        $schema = $this->createFixtureSchema();
 | 
			
		||||
 | 
			
		||||
        $sql = $schema->toSql($platformMock);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(array("foo", "foo", "bar", "baz"), $sql);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testDropSchema()
 | 
			
		||||
    {
 | 
			
		||||
        $platformMock = $this->getMock(
 | 
			
		||||
            'Doctrine\DBAL\Platforms\MySqlPlatform',
 | 
			
		||||
            array('getDropTableSql', 'getDropSequenceSql', 'getDropForeignKeySql')
 | 
			
		||||
        );
 | 
			
		||||
        $platformMock->expects($this->exactly(2))
 | 
			
		||||
                     ->method('getDropTableSql')
 | 
			
		||||
                     ->will($this->returnValue("tbl"));
 | 
			
		||||
        $platformMock->expects($this->exactly(1))
 | 
			
		||||
                     ->method('getDropSequenceSql')
 | 
			
		||||
                     ->will($this->returnValue("seq"));
 | 
			
		||||
        $platformMock->expects($this->exactly(1))
 | 
			
		||||
                     ->method('getDropForeignKeySql')
 | 
			
		||||
                     ->will($this->returnValue("fk"));
 | 
			
		||||
 | 
			
		||||
        $schema = $this->createFixtureSchema();
 | 
			
		||||
 | 
			
		||||
        $sql = $schema->toDropSql($platformMock);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(array("fk", "seq", "tbl", "tbl"), $sql);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return Schema
 | 
			
		||||
     */
 | 
			
		||||
    public function createFixtureSchema()
 | 
			
		||||
    {
 | 
			
		||||
        $schema = new Schema();
 | 
			
		||||
        $tableA = $schema->createTable("foo");
 | 
			
		||||
        $tableA->addColumn("id", 'integer');
 | 
			
		||||
        $tableA->addColumn("bar", 'string', array('length' => 255));
 | 
			
		||||
        $tableA->setPrimaryKey(array("id"));
 | 
			
		||||
 | 
			
		||||
        $schema->createSequence("foo_seq");
 | 
			
		||||
 | 
			
		||||
        $tableB = $schema->createTable("bar");
 | 
			
		||||
        $tableB->addColumn("id", 'integer');
 | 
			
		||||
        $tableB->setPrimaryKey(array("id"));
 | 
			
		||||
 | 
			
		||||
        $tableA->addForeignKeyConstraint($tableB, array("bar"), array("id"));
 | 
			
		||||
 | 
			
		||||
        return $schema;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user