Skip to content

Commit 0c384b4

Browse files
committed
[GH-4243] Move test up to generic SchemaManagerFunctionalTestCase
1 parent f5ccf9c commit 0c384b4

File tree

2 files changed

+50
-50
lines changed

2 files changed

+50
-50
lines changed

tests/Doctrine/Tests/DBAL/Functional/Schema/SchemaManagerFunctionalTestCase.php

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1616,6 +1616,56 @@ public function testSchemaDiffForeignKeys(): void
16161616
);
16171617
}
16181618
}
1619+
1620+
public function testUnnamedForeignKeyConstraintHandling(): void
1621+
{
1622+
$sm = $this->connection->getSchemaManager();
1623+
$sm->tryMethod('dropTable', 'unnamedfk_referencing');
1624+
$sm->tryMethod('dropTable', 'unnamedfk_referenced1');
1625+
$sm->tryMethod('dropTable', 'unnamedfk_referenced2');
1626+
1627+
$schema = new Schema();
1628+
1629+
$referencingTable = $schema->createTable('unnamedfk_referencing');
1630+
$referencingTable->addColumn('id', 'integer', ['autoincrement' => true]);
1631+
$referencingTable->addColumn('reference1_id1', 'integer');
1632+
$referencingTable->addColumn('reference1_id2', 'integer');
1633+
$referencingTable->addColumn('reference2_id', 'integer');
1634+
$referencingTable->setPrimaryKey(['id']);
1635+
1636+
$referenced1Table = $schema->createTable('unnamedfk_referenced1');
1637+
$referenced1Table->addColumn('id1', 'integer', ['notnull' => true]);
1638+
$referenced1Table->addColumn('id2', 'integer', ['notnull' => true]);
1639+
$referenced1Table->setPrimaryKey(['id1', 'id2']);
1640+
1641+
$referenced2Table = $schema->createTable('unnamedfk_referenced2');
1642+
$referenced2Table->addColumn('id', 'integer', ['notnull' => true]);
1643+
$referenced2Table->setPrimaryKey(['id']);
1644+
1645+
$referencingTable->addForeignKeyConstraint(
1646+
'unnamedfk_referenced1',
1647+
['reference1_id1', 'reference1_id2'],
1648+
['id1', 'id2']
1649+
);
1650+
1651+
$referencingTable->addForeignKeyConstraint(
1652+
'unnamedfk_referenced2',
1653+
['reference2_id'],
1654+
['id']
1655+
);
1656+
1657+
$sqls = $schema->toSql($this->connection->getDatabasePlatform());
1658+
1659+
foreach ($sqls as $sql) {
1660+
$this->connection->exec($sql);
1661+
}
1662+
1663+
$comparator = new Comparator();
1664+
$onlineTableAfter = $sm->listTableDetails('unnamedfk_referencing');
1665+
$diff = $comparator->diffTable($referencingTable, $onlineTableAfter);
1666+
1667+
$this->assertFalse($diff);
1668+
}
16191669
}
16201670

16211671
interface ListTableColumnsDispatchEventListener

tests/Doctrine/Tests/DBAL/Functional/Schema/SqliteSchemaManagerTest.php

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -257,54 +257,4 @@ public function testOnlyOwnCommentIsParsed(): void
257257
->getColumn('col1')
258258
->getComment());
259259
}
260-
261-
public function testUnnamedForeignKeyConstraintHandling(): void
262-
{
263-
$sql = <<<SQL
264-
DROP TABLE IF EXISTS "unnamedfk_referenced1";
265-
DROP TABLE IF EXISTS "unnamedfk_referenced2";
266-
DROP TABLE IF EXISTS "unnamedfk_referencing";
267-
CREATE TABLE "unnamedfk_referenced1" (
268-
"id1" integer not null,
269-
"id2" integer not null,
270-
primary key("id1", "id2")
271-
);
272-
CREATE TABLE "unnamedfk_referenced2" (
273-
"id" integer not null primary key autoincrement
274-
);
275-
CREATE TABLE "unnamedfk_referencing" (
276-
"id" integer not null primary key autoincrement,
277-
"reference1_id1" integer not null,
278-
"reference1_id2" integer not null,
279-
"reference2_id" integer not null,
280-
foreign key("reference1_id1", "reference1_id2") references "unnamedfk_referenced1"("id1", "id2") on delete cascade,
281-
foreign key("reference2_id") references "unnamedfk_referenced2"("id") on delete cascade
282-
)
283-
SQL;
284-
285-
$this->connection->exec($sql);
286-
287-
$sm = $this->connection->getSchemaManager();
288-
$onlineTable = $sm->listTableDetails('unnamedfk_referencing');
289-
290-
$offlineTable = new Table('unnamedfk_referencing');
291-
$offlineTable->addColumn('id', 'integer');
292-
$offlineTable->addColumn('reference1_id1', 'integer');
293-
$offlineTable->addColumn('reference1_id2', 'integer');
294-
$offlineTable->addColumn('reference2_id', 'integer');
295-
296-
$comparator = new Schema\Comparator();
297-
$diff = $comparator->diffTable($offlineTable, $onlineTable);
298-
299-
$sqls = $this->connection->getDatabasePlatform()->getAlterTableSQL($diff);
300-
301-
foreach ($sqls as $sql) {
302-
$this->connection->exec($sql);
303-
}
304-
305-
$onlineTableAfter = $sm->listTableDetails('unnamedfk_referencing');
306-
$diff = $comparator->diffTable($onlineTable, $onlineTableAfter);
307-
308-
$this->assertFalse($diff);
309-
}
310260
}

0 commit comments

Comments
 (0)