Skip to content

Commit

Permalink
Add comparator test
Browse files Browse the repository at this point in the history
  • Loading branch information
Tofandel committed Aug 29, 2023
1 parent d27d676 commit 8c3c56f
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 3 deletions.
52 changes: 52 additions & 0 deletions tests/Functional/Schema/ComparatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Doctrine\DBAL\Schema\Comparator;
use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Tests\FunctionalTestCase;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Types\Types;

use function array_merge;
Expand Down Expand Up @@ -52,6 +53,57 @@ public function testDefaultValueComparison(callable $comparatorFactory, string $
self::assertFalse($comparatorFactory($this->schemaManager)->diffTable($table, $onlineTable));
}

public function testRenameColumnComparison(): void
{
$comparator = new Comparator();

$table = new Table('rename_table');
$table->addColumn('test', Types::STRING, ['default' => 'baz', 'length' => 20]);
$table->addColumn('test2', Types::STRING, ['default' => 'baz', 'length' => 20]);
$table->addColumn('test3', Types::STRING, ['default' => 'foo', 'length' => 10]);

$onlineTable = clone $table;
$table->renameColumn('test', 'baz')
->setLength(40)
->setComment('Comment');

$table->renameColumn('test2', 'foo');

$table->getColumn('test3')
->setAutoincrement(true)
->setNotnull(false)
->setType(Type::getType(Types::BIGINT));

$compareResult = $comparator->compareTables($onlineTable, $table);
self::assertCount(3, $compareResult->getChangedColumns());
self::assertCount(1, $compareResult->getRenamedColumns());
self::assertCount(2, $compareResult->getModifiedColumns());
self::assertArrayHasKey('test2', $compareResult->getRenamedColumns());

$renamedOnly = $compareResult->changedColumns['test2'];
$renamedAndModified = $compareResult->changedColumns['test'];
$modifiedOnly = $compareResult->changedColumns['test3'];

self::assertEquals('foo', $renamedOnly->getNewColumn()->getName());
self::assertTrue($renamedOnly->hasNameChanged());
self::assertCount(0, $renamedOnly->changedProperties);

self::assertEquals('baz', $renamedAndModified->getNewColumn()->getName());
self::assertTrue($renamedAndModified->hasNameChanged());
self::assertTrue($renamedAndModified->hasLengthChanged());
self::assertTrue($renamedAndModified->hasCommentChanged());
self::assertFalse($renamedAndModified->hasTypeChanged());
self::assertCount(2, $renamedAndModified->changedProperties);

self::assertTrue($modifiedOnly->hasAutoIncrementChanged());
self::assertTrue($modifiedOnly->hasNotNullChanged());
self::assertTrue($modifiedOnly->hasTypeChanged());
self::assertFalse($modifiedOnly->hasLengthChanged());
self::assertFalse($modifiedOnly->hasCommentChanged());
self::assertFalse($modifiedOnly->hasNameChanged());
self::assertCount(3, $modifiedOnly->changedProperties);
}

/** @return iterable<mixed[]> */
public static function defaultValueProvider(): iterable
{
Expand Down
6 changes: 3 additions & 3 deletions tests/Schema/TableTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,16 @@ public function testRenameColumnException(): void
$this->expectExceptionMessage("You are trying to rename the column baz but you didn't change it's name");

$table = new Table('foo');
$table->renameColumn('baz', 'Baz');
$table->renameColumn('baz', '`BaZ`');
}

public function testRenameColumnLoop(): void
{
$table = new Table('foo');
$table->addColumn('baz', Types::INTEGER);
$table->renameColumn('baz', 'foo');
$table->renameColumn('baz', '`foo`');
self::assertCount(1, $table->getRenamedColumns());
$table->renameColumn('foo', 'baz');
$table->renameColumn('foo', 'Baz');
self::assertCount(1, $table->getColumns());
self::assertCount(0, $table->getRenamedColumns());
}
Expand Down

0 comments on commit 8c3c56f

Please sign in to comment.