17 use Prophecy\Argument;
18 use Prophecy\Prophecy\ObjectProphecy;
24 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
36 protected function setUp()
39 $this->backendUserProphecy = $this->prophesize(BackendUserAuthentication::class);
40 $GLOBALS[
'BE_USER'] = $this->backendUserProphecy->reveal();
41 $GLOBALS[
'BE_USER']->groupData[
'non_exclude_fields'] =
'';
46 $GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'formEngine'][
'formDataGroup'][
'flexFormSegment'] = [];
55 'tableName' =>
'aTable',
70 $this->expectException(\RuntimeException::class);
71 $this->expectExceptionCode(1480765571);
81 'tableName' =>
'aTable',
87 'pointerField' =>
'aFlex',
94 'ds_pointerField' =>
'pointerField',
95 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
103 'label' =>
'aFlexFieldLabel',
133 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
137 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
146 'tableName' =>
'aTable',
148 'selectTreeCompileItems' =>
false,
154 'pointerField' =>
'aFlex',
161 'ds_pointerField' =>
'pointerField',
162 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
170 'label' =>
'aFlexFieldLabel',
190 'sheetTitle' =>
'aTitle',
200 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
207 'label' =>
'aFlexFieldLabel',
213 'sheetTitle' =>
'aTitle',
219 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
228 'tableName' =>
'aTable',
230 'selectTreeCompileItems' =>
false,
236 'pointerField' =>
'aFlex',
243 'ds_pointerField' =>
'pointerField',
244 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
252 'label' =>
'aFlexFieldLabel',
272 'sheetDescription' =>
'aDescription',
282 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
289 'label' =>
'aFlexFieldLabel',
295 'sheetDescription' =>
'aDescription',
301 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
310 'tableName' =>
'aTable',
312 'selectTreeCompileItems' =>
false,
318 'pointerField' =>
'aFlex',
325 'ds_pointerField' =>
'pointerField',
326 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
334 'label' =>
'aFlexFieldLabel',
354 'sheetDescription' =>
'sheetShortDescr',
364 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
371 'label' =>
'aFlexFieldLabel',
377 'sheetDescription' =>
'sheetShortDescr',
383 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
392 'tableName' =>
'aTable',
394 'selectTreeCompileItems' =>
false,
400 'pointerField' =>
'aFlex',
407 'ds_pointerField' =>
'pointerField',
408 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
416 'label' =>
'aFlexFieldLabel',
436 'sheetDescription' =>
'sheetShortDescr',
446 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
453 'label' =>
'aFlexFieldLabel',
459 'sheetDescription' =>
'sheetShortDescr',
465 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
474 'tableName' =>
'aTable',
476 'selectTreeCompileItems' =>
false,
482 'pointerField' =>
'aFlex',
489 'ds_pointerField' =>
'pointerField',
490 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
498 'label' =>
'aFlexFieldLabel',
513 'pageTsConfig' => [],
516 $this->backendUserProphecy->isAdmin()->shouldBeCalled()->willReturn(
false);
517 $GLOBALS[
'BE_USER']->groupData[
'non_exclude_fields'] =
'';
520 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
531 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
540 'tableName' =>
'aTable',
542 'selectTreeCompileItems' =>
false,
548 'pointerField' =>
'aFlex',
555 'ds_pointerField' =>
'pointerField',
556 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
564 'label' =>
'aFlexFieldLabel',
579 'pageTsConfig' => [],
582 $this->backendUserProphecy->isAdmin()->shouldBeCalled()->willReturn(
false);
583 $GLOBALS[
'BE_USER']->groupData[
'non_exclude_fields'] =
'aTable:aField;aFlex;sDEF;aFlexField';
586 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
593 'label' =>
'aFlexFieldLabel',
605 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
614 'tableName' =>
'aTable',
616 'selectTreeCompileItems' =>
false,
622 'pointerField' =>
'aFlex',
629 'ds_pointerField' =>
'pointerField',
630 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
638 'label' =>
'aFlexFieldLabel',
653 'pageTsConfig' => [],
656 $this->backendUserProphecy->isAdmin()->shouldBeCalled()->willReturn(
true);
657 $GLOBALS[
'BE_USER']->groupData[
'non_exclude_fields'] =
'';
660 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
667 'label' =>
'aFlexFieldLabel',
679 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
688 'tableName' =>
'aTable',
689 'selectTreeCompileItems' =>
false,
696 'pointerField' =>
'aFlex',
703 'ds_pointerField' =>
'pointerField',
704 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
712 'label' =>
'aFlexFieldLabel',
744 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
755 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
764 'tableName' =>
'aTable',
765 'selectTreeCompileItems' =>
false,
772 'pointerField' =>
'aFlex',
779 'ds_pointerField' =>
'pointerField',
780 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
788 'label' =>
'aFlexFieldLabel',
816 '0' =>
'labelOverride',
827 $GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'formEngine'][
'formDataGroup'][
'flexFormSegment'] = [
828 \TYPO3\CMS\Backend\Form\FormDataProvider\TcaRadioItems::class => [],
832 $languageService = $this->prophesize(LanguageService::class);
833 $GLOBALS[
'LANG'] = $languageService->reveal();
834 $languageService->sL(Argument::cetera())->willReturnArgument(0);
836 $this->backendUserProphecy->isAdmin()->willReturn(
true);
837 $this->backendUserProphecy->checkLanguageAccess(Argument::cetera())->willReturn(
true);
840 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'] = [
847 'label' =>
'aFlexFieldLabel',
852 0 =>
'labelOverride',
864 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
873 'tableName' =>
'aTable',
875 'selectTreeCompileItems' =>
false,
881 'pointerField' =>
'aFlex',
888 'ds_pointerField' =>
'pointerField',
889 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
897 'label' =>
'aFlexFieldLabel',
900 'default' =>
'defaultValue',
912 'pageTsConfig' => [],
915 $GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'formEngine'][
'formDataGroup'][
'flexFormSegment'] = [
916 \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultValues::class => [],
920 $languageService = $this->prophesize(LanguageService::class);
921 $GLOBALS[
'LANG'] = $languageService->reveal();
922 $languageService->sL(Argument::cetera())->willReturnArgument(0);
924 $this->backendUserProphecy->isAdmin()->willReturn(
true);
925 $this->backendUserProphecy->checkLanguageAccess(Argument::cetera())->willReturn(
true);
928 $expected[
'databaseRow'][
'aField'][
'data'][
'sDEF'][
'lDEF'][
'aFlexField'][
'vDEF'] =
'defaultValue';
930 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
939 'tableName' =>
'aTable',
952 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
971 'pageTsConfig' => [],
974 $this->backendUserProphecy->isAdmin()->willReturn(
true);
975 $this->backendUserProphecy->checkLanguageAccess(Argument::cetera())->willReturn(
true);
977 $this->expectException(\UnexpectedValueException::class);
978 $this->expectExceptionCode(1440685208);
980 (
new TcaFlexProcess())->addData($input);
989 'tableName' =>
'aTable',
1002 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
1021 'pageTsConfig' => [],
1024 $this->backendUserProphecy->isAdmin()->willReturn(
true);
1025 $this->backendUserProphecy->checkLanguageAccess(Argument::cetera())->willReturn(
true);
1027 $this->expectException(\UnexpectedValueException::class);
1028 $this->expectExceptionCode(1440685208);
1030 (
new TcaFlexProcess())->addData($input);
1039 'tableName' =>
'aTable',
1040 'effectivePid' => 1,
1041 'selectTreeCompileItems' =>
false,
1062 'vDEF' =>
'dbValue',
1080 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
1095 'label' =>
'aFlexFieldLabel',
1098 'default' =>
'defaultValue',
1114 'pageTsConfig' => [],
1117 $GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'formEngine'][
'formDataGroup'][
'flexFormSegment'] = [
1118 \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultValues::class => [],
1122 $languageService = $this->prophesize(LanguageService::class);
1123 $GLOBALS[
'LANG'] = $languageService->reveal();
1124 $languageService->sL(Argument::cetera())->willReturnArgument(0);
1126 $this->backendUserProphecy->isAdmin()->willReturn(
true);
1127 $this->backendUserProphecy->checkLanguageAccess(Argument::cetera())->willReturn(
true);
1132 $expected[
'databaseRow'][
'aField'][
'data'][
'sDEF'][
'lDEF'][
'section_1'][
'el'][
'1'][
'container_1'][
'el'][
'aFlexField'][
'vDEF'] =
'defaultValue';
1135 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'][
'sheets'][
'sDEF'][
'ROOT'][
'el'][
'section_1'][
'children'][
'1']
1136 = $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'][
'sheets'][
'sDEF'][
'ROOT'][
'el'][
'section_1'][
'el'][
'container_1'];
1137 $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'][
'sheets'][
'sDEF'][
'ROOT'][
'el'][
'section_1'][
'children'][
'2']
1138 = $expected[
'processedTca'][
'columns'][
'aField'][
'config'][
'ds'][
'sheets'][
'sDEF'][
'ROOT'][
'el'][
'section_1'][
'el'][
'container_1'];
1140 $this->assertEquals($expected, (
new TcaFlexProcess())->addData($input));
1149 'tableName' =>
'aTable',
1150 'effectivePid' => 1,
1155 'pointerField' =>
'aFlex',
1162 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
1177 'label' =>
'aFlexFieldLabel',
1195 'pageTsConfig' => [],
1198 $this->expectException(\UnexpectedValueException::class);
1199 $this->expectExceptionCode(1458745468);
1201 (
new TcaFlexProcess())->addData($input);
1210 'tableName' =>
'aTable',
1211 'effectivePid' => 1,
1216 'pointerField' =>
'aFlex',
1223 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
1237 'section_nested' => [
1256 'pageTsConfig' => [],
1259 $this->expectException(\UnexpectedValueException::class);
1260 $this->expectExceptionCode(1458745712);
1262 (
new TcaFlexProcess())->addData($input);
1271 'tableName' =>
'aTable',
1272 'effectivePid' => 1,
1277 'pointerField' =>
'aFlex',
1284 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
1298 'section_nested' => [
1317 'pageTsConfig' => [],
1320 $this->expectException(\UnexpectedValueException::class);
1321 $this->expectExceptionCode(1481647089);
1323 (
new TcaFlexProcess())->addData($input);
1332 'tableName' =>
'aTable',
1333 'effectivePid' => 1,
1338 'pointerField' =>
'aFlex',
1345 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
1359 'section_nested' => [
1378 'pageTsConfig' => [],
1381 $this->expectException(\UnexpectedValueException::class);
1382 $this->expectExceptionCode(1481647089);
1384 (
new TcaFlexProcess())->addData($input);
1393 'tableName' =>
'aTable',
1394 'selectTreeCompileItems' =>
false,
1395 'effectivePid' => 1,
1401 'pointerField' =>
'aFlex',
1408 'ds_pointerField' =>
'pointerField',
1409 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
1417 'label' =>
'aFlexFieldLabel',
1431 'pageTsConfig' => [],
1435 $dummyGroup = $this->prophesize(FlexFormSegment::class);
1436 GeneralUtility::addInstance(FlexFormSegment::class, $dummyGroup->reveal());
1439 $dummyGroup->compile(Argument::that(
function ($result) use ($input) {
1440 if ($result[
'flexParentDatabaseRow'] === $input[
'databaseRow']) {
1444 }))->shouldBeCalled()->willReturnArgument(0);
1446 (
new TcaFlexProcess())->addData($input);
1455 'tableName' =>
'aTable',
1456 'selectTreeCompileItems' =>
false,
1457 'effectivePid' => 1,
1463 'pointerField' =>
'aFlex',
1470 'ds_pointerField' =>
'pointerField',
1471 'dataStructureIdentifier' =>
'{"type":"tca","tableName":"aTable","fieldName":"aField","dataStructureKey":"aFlex"}',
1479 'label' =>
'aFlexFieldLabel',
1493 'pageTsConfig' => [],
1497 $dummyGroupExisting = $this->prophesize(FlexFormSegment::class);
1498 GeneralUtility::addInstance(FlexFormSegment::class, $dummyGroupExisting->reveal());
1500 $dummyGroupExisting->compile(Argument::that(
function ($result) use ($input) {
1501 if ($result[
'flexParentDatabaseRow'] === $input[
'databaseRow']) {
1505 }))->shouldBeCalled()->willReturnArgument(0);
1507 (
new TcaFlexProcess())->addData($input);