diff --git a/tests/Functional/Schema/SchemaManagerTest.php b/tests/Functional/Schema/SchemaManagerTest.php index f665733135..21b458b764 100644 --- a/tests/Functional/Schema/SchemaManagerTest.php +++ b/tests/Functional/Schema/SchemaManagerTest.php @@ -266,4 +266,72 @@ public function testIntrospectTableWithDotInName(): void self::assertCount(1, $table->getColumns()); } + + public function testIntrospectTableWithDotInIndexNames(): void + { + $table = Table::editor() + ->setUnquotedName('test_user') + ->setColumns( + Column::editor() + ->setUnquotedName('id') + ->setTypeName(Types::INTEGER) + ->create(), + ) + ->setPrimaryKeyConstraint( + PrimaryKeyConstraint::editor() + ->setUnquotedColumnNames('id') + ->create(), + ) + ->create(); + + $this->dropAndCreateTable($table); + + $tableTo = Table::editor() + ->setUnquotedName('example') + ->setColumns( + Column::editor() + ->setUnquotedName('id') + ->setTypeName(Types::INTEGER) + ->create(), + Column::editor() + ->setUnquotedName('user_id') + ->setTypeName(Types::INTEGER) + ->create(), + ) + ->setPrimaryKeyConstraint( + PrimaryKeyConstraint::editor() + ->setUnquotedColumnNames('id') + ->create(), + ) + ->setForeignKeyConstraints( + ForeignKeyConstraint::editor() + ->setUnquotedReferencingColumnNames('user_id') + ->setUnquotedReferencedTableName('test_user') + ->setUnquotedReferencedColumnNames('id') + ->setUnquotedName('fk.example.user_id') + ->create(), + ) + ->setIndexes( + Index::editor() + ->setUnquotedName('idx.example.id') + ->setUnquotedColumnNames('id', 'user_id') + ->create(), + ) + ->create(); + $this->dropAndCreateTable($tableTo); + + $table = $this->schemaManager->introspectTableByUnquotedName('example'); + + self::assertCount(2, $table->getColumns()); + + self::assertUnqualifiedNameEquals( + UnqualifiedName::unquoted('fk.example.user_id'), + $table->getForeignKey('"fk.example.user_id"')->getObjectName(), + ); + + self::assertUnqualifiedNameEquals( + UnqualifiedName::unquoted('idx.example.id'), + $table->getIndex('"idx.example.id"')->getObjectName(), + ); + } } diff --git a/tests/FunctionalTestCase.php b/tests/FunctionalTestCase.php index 51aff97921..1c88606c0c 100644 --- a/tests/FunctionalTestCase.php +++ b/tests/FunctionalTestCase.php @@ -218,8 +218,9 @@ protected function toQuotedOptionallyQualifiedName(OptionallyQualifiedName $name /** @throws Exception */ protected function assertUnqualifiedNameEquals( UnqualifiedName $expected, - UnqualifiedName $actual, + ?UnqualifiedName $actual, ): void { + self::assertNotNull($actual); self::assertEquals( $this->toQuotedUnqualifiedName($expected), $this->toQuotedUnqualifiedName($actual),