2 declare(strict_types = 1);
19 use Doctrine\DBAL\Schema\Column;
20 use Doctrine\DBAL\Schema\Index;
21 use Doctrine\DBAL\Schema\SchemaException;
22 use Doctrine\DBAL\Schema\Table;
23 use Doctrine\DBAL\Types\Type;
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
42 public function setUp(): void
46 $this->defaultTable =
new Table(
'aTable');
55 $this->assertEquals([$this->defaultTable], $this->subject->enrich([$this->defaultTable]));
65 $table =
new Table(
'aTable');
66 $table->addColumn(
'uid',
'integer');
67 $table->addColumn(
'pid',
'integer');
70 $table =
new Table(
'aTable');
71 $table->addColumn(
'uid',
'integer');
72 $table->addColumn(
'pid',
'integer');
75 $this->assertEquals($expected, $this->subject->enrich($input));
85 $table =
new Table(
'aTable');
86 $table->addColumn(
'foo',
'integer');
88 $table =
new Table(
'aTable');
89 $table->addColumn(
'uid',
'integer');
90 $table->addColumn(
'pid',
'integer');
93 $table =
new Table(
'aTable');
94 $table->addColumn(
'foo',
'integer');
96 $table =
new Table(
'aTable');
97 $table->addColumn(
'uid',
'integer');
98 $table->addColumn(
'pid',
'integer');
101 $this->assertEquals($expected, $this->subject->enrich($input));
111 $table =
new Table(
'aTable');
112 $table->addColumn(
'foo',
'integer');
114 $table =
new Table(
'aTable');
115 $table->addColumn(
'bar',
'integer');
118 $result = $this->subject->enrich($input);
120 $this->assertInstanceOf(Column::class, $result[0]->getColumn(
'uid'));
129 $result = $this->subject->enrich([$this->defaultTable]);
130 $expectedUidColumn =
new Column(
132 Type::getType(
'integer'),
136 'autoincrement' =>
true,
139 $expectedPrimaryKey =
new Index(
'primary', [
'uid'],
true,
true);
140 $this->assertEquals($expectedUidColumn, $result[0]->getColumn(
'uid'));
141 $this->assertEquals($expectedPrimaryKey, $result[0]->getPrimaryKey());
150 $result = $this->subject->enrich([$this->defaultTable]);
151 $expectedPidColumn =
new Column(
153 Type::getType(
'integer'),
160 $this->assertEquals($expectedPidColumn, $result[0]->getColumn(
'pid'));
169 'versioningWS' =>
true,
171 $result = $this->subject->enrich([$this->defaultTable]);
172 $expectedPidColumn =
new Column(
174 Type::getType(
'integer'),
181 $this->assertEquals($expectedPidColumn, $result[0]->getColumn(
'pid'));
190 'tstamp' =>
'updatedon',
192 $result = $this->subject->enrich([$this->defaultTable]);
193 $expectedColumn =
new Column(
195 Type::getType(
'integer'),
202 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'updatedon'));
211 'crdate' =>
'createdon',
213 $result = $this->subject->enrich([$this->defaultTable]);
214 $expectedColumn =
new Column(
216 Type::getType(
'integer'),
223 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'createdon'));
232 'cruser_id' =>
'createdby',
234 $result = $this->subject->enrich([$this->defaultTable]);
235 $expectedColumn =
new Column(
237 Type::getType(
'integer'),
244 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'createdby'));
253 'delete' =>
'deleted',
255 $result = $this->subject->enrich([$this->defaultTable]);
256 $expectedColumn =
new Column(
258 Type::getType(
'smallint'),
265 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'deleted'));
275 'disabled' =>
'disabled',
278 $result = $this->subject->enrich([$this->defaultTable]);
279 $expectedColumn =
new Column(
281 Type::getType(
'smallint'),
288 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'disabled'));
298 'starttime' =>
'starttime',
301 $result = $this->subject->enrich([$this->defaultTable]);
302 $expectedColumn =
new Column(
304 Type::getType(
'integer'),
311 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'starttime'));
321 'endtime' =>
'endtime',
324 $result = $this->subject->enrich([$this->defaultTable]);
325 $expectedColumn =
new Column(
327 Type::getType(
'integer'),
334 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'endtime'));
344 'fe_group' =>
'fe_group',
347 $result = $this->subject->enrich([$this->defaultTable]);
348 $expectedColumn =
new Column(
350 Type::getType(
'string'),
357 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'fe_group'));
366 'sortby' =>
'sorting',
368 $result = $this->subject->enrich([$this->defaultTable]);
369 $expectedColumn =
new Column(
371 Type::getType(
'integer'),
378 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'sorting'));
387 $result = $this->subject->enrich([$this->defaultTable]);
388 $expectedIndex =
new Index(
'parent', [
'pid']);
389 $this->assertEquals($expectedIndex, $result[0]->getIndex(
'parent'));
398 'delete' =>
'deleted',
400 $result = $this->subject->enrich([$this->defaultTable]);
401 $expectedIndex =
new Index(
'parent', [
'pid',
'deleted']);
402 $this->assertEquals($expectedIndex, $result[0]->getIndex(
'parent'));
412 'disabled' =>
'disabled',
415 $result = $this->subject->enrich([$this->defaultTable]);
416 $expectedIndex =
new Index(
'parent', [
'pid',
'disabled']);
417 $this->assertEquals($expectedIndex, $result[0]->getIndex(
'parent'));
426 'delete' =>
'deleted',
428 'disabled' =>
'disabled',
431 $result = $this->subject->enrich([$this->defaultTable]);
432 $expectedIndex =
new Index(
'parent', [
'pid',
'deleted',
'disabled']);
433 $this->assertEquals($expectedIndex, $result[0]->getIndex(
'parent'));
442 'languageField' =>
'sys_language_uid',
444 $result = $this->subject->enrich([$this->defaultTable]);
445 $expectedColumn =
new Column(
446 '`sys_language_uid`',
447 Type::getType(
'integer'),
454 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'sys_language_uid'));
463 'languageField' =>
'sys_language_uid',
464 'transOrigPointerField' =>
'l10n_parent',
466 $result = $this->subject->enrich([$this->defaultTable]);
467 $expectedColumn =
new Column(
469 Type::getType(
'integer'),
476 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'l10n_parent'));
485 'transOrigPointerField' =>
'l10n_parent',
487 $result = $this->subject->enrich([$this->defaultTable]);
488 $this->expectException(SchemaException::class);
489 $result[0]->getColumn(
'l10n_parent');
498 'descriptionColumn' =>
'rowDescription',
500 $result = $this->subject->enrich([$this->defaultTable]);
501 $expectedColumn =
new Column(
503 Type::getType(
'text'),
509 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'rowDescription'));
518 'editlock' =>
'editlock'
520 $result = $this->subject->enrich([$this->defaultTable]);
521 $expectedColumn =
new Column(
523 Type::getType(
'smallint'),
530 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'editlock'));
539 'languageField' =>
'sys_language_uid',
540 'translationSource' =>
'l10n_source',
542 $result = $this->subject->enrich([$this->defaultTable]);
543 $expectedColumn =
new Column(
545 Type::getType(
'integer'),
552 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'l10n_source'));
561 'translationSource' =>
'l10n_source',
563 $result = $this->subject->enrich([$this->defaultTable]);
564 $this->expectException(SchemaException::class);
565 $result[0]->getColumn(
'l10n_source');
574 'languageField' =>
'sys_language_uid',
575 'transOrigPointerField' =>
'l10n_parent',
577 $result = $this->subject->enrich([$this->defaultTable]);
578 $expectedColumn =
new Column(
580 Type::getType(
'text'),
586 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'l10n_state'));
595 'transOrigPointerField' =>
'l10n_parent',
597 $result = $this->subject->enrich([$this->defaultTable]);
598 $this->expectException(SchemaException::class);
599 $result[0]->getColumn(
'l10n_state');
608 'languageField' =>
'sys_language_uid',
610 $result = $this->subject->enrich([$this->defaultTable]);
611 $this->expectException(SchemaException::class);
612 $result[0]->getColumn(
'l10n_state');
621 'origUid' =>
't3_origuid',
623 $result = $this->subject->enrich([$this->defaultTable]);
624 $expectedColumn =
new Column(
626 Type::getType(
'integer'),
633 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3_origuid'));
642 'transOrigDiffSourceField' =>
'l18n_diffsource',
644 $result = $this->subject->enrich([$this->defaultTable]);
645 $expectedColumn =
new Column(
647 Type::getType(
'blob'),
649 'length' => 16777215,
653 $this->assertEquals($expectedColumn, $result[0]->getColumn(
'l18n_diffsource'));
662 'versioningWS' =>
true,
664 $result = $this->subject->enrich([$this->defaultTable]);
665 $expectedColumn =
new Column(
667 Type::getType(
'integer'),
674 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3ver_oid'));
683 'versioningWS' =>
true,
685 $result = $this->subject->enrich([$this->defaultTable]);
686 $expectedColumn =
new Column(
688 Type::getType(
'integer'),
695 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3ver_id'));
704 'versioningWS' =>
true,
706 $result = $this->subject->enrich([$this->defaultTable]);
707 $expectedColumn =
new Column(
709 Type::getType(
'string'),
716 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3ver_label'));
725 'versioningWS' =>
true,
727 $result = $this->subject->enrich([$this->defaultTable]);
728 $expectedColumn =
new Column(
730 Type::getType(
'integer'),
737 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3ver_wsid'));
746 'versioningWS' =>
true,
748 $result = $this->subject->enrich([$this->defaultTable]);
749 $expectedColumn =
new Column(
751 Type::getType(
'smallint'),
758 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3ver_state'));
767 'versioningWS' =>
true,
769 $result = $this->subject->enrich([$this->defaultTable]);
770 $expectedColumn =
new Column(
772 Type::getType(
'integer'),
779 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3ver_stage'));
788 'versioningWS' =>
true,
790 $result = $this->subject->enrich([$this->defaultTable]);
791 $expectedColumn =
new Column(
793 Type::getType(
'integer'),
800 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3ver_count'));
809 'versioningWS' =>
true,
811 $result = $this->subject->enrich([$this->defaultTable]);
812 $expectedColumn =
new Column(
814 Type::getType(
'integer'),
821 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3ver_tstamp'));
830 'versioningWS' =>
true,
832 $result = $this->subject->enrich([$this->defaultTable]);
833 $expectedColumn =
new Column(
835 Type::getType(
'integer'),
842 $this->assertEquals($expectedColumn, $result[0]->getColumn(
't3ver_move_id'));
851 'versioningWS' =>
true,
853 $result = $this->subject->enrich([$this->defaultTable]);
854 $expectedIndex =
new Index(
't3ver_oid', [
't3ver_oid',
't3ver_wsid']);
855 $this->assertEquals($expectedIndex, $result[0]->getIndex(
't3ver_oid'));