2 declare(strict_types = 1);
22 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
43 'FOREIGN KEY (single column)' => [
44 'FOREIGN KEY (`aField`) REFERENCES `bTable` (`bField`)',
46 [[
'aField', 0,
null]],
48 [[
'bField', 0,
null]],
50 'FOREIGN KEY (multiple columns)' => [
51 'FOREIGN KEY (`aField`(20) ASC, `bField`) REFERENCES `bTable` (`cField`, `dField`)',
53 [[
'aField', 20,
'ASC'], [
'bField', 0,
null]],
55 [[
'cField', 0,
null], [
'dField', 0,
null]],
57 'FOREIGN KEY (index name)' => [
58 'FOREIGN KEY `aIndex`(`aField`, `bField`) REFERENCES `bTable` (`cField`(240) DESC, `dField`)',
60 [[
'aField', 0,
null], [
'bField', 0,
null]],
62 [[
'cField', 240,
'DESC'], [
'dField', 0,
null]],
77 string $indexDefinition,
80 string $foreignTableName,
81 array $foreignTableColumns
83 $statement = sprintf(
'CREATE TABLE `aTable`(`aField` INT(11), %s);', $indexDefinition);
86 $this->assertInstanceOf(CreateForeignKeyDefinitionItem::class, $subject);
87 $this->assertSame($indexName, $subject->indexName->schemaObjectName);
88 $this->assertSame($foreignTableName, $subject->reference->tableName->schemaObjectName);
90 foreach ($indexColumns as $index => $column) {
91 $this->assertSame($column[0], $subject->columnNames[$index]->columnName->schemaObjectName);
92 $this->assertSame($column[1], $subject->columnNames[$index]->length);
93 $this->assertSame($column[2], $subject->columnNames[$index]->direction);
96 foreach ($foreignTableColumns as $index => $column) {
97 $this->assertSame($column[0], $subject->reference->columnNames[$index]->columnName->schemaObjectName);
98 $this->assertSame($column[1], $subject->reference->columnNames[$index]->length);
99 $this->assertSame($column[2], $subject->reference->columnNames[$index]->direction);
113 $createTableStatement =
$parser->getAST();
115 return $createTableStatement->createDefinition->items[1];