‪TYPO3CMS  10.4
EvaluateDisplayConditionsTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use Prophecy\Prophecy\ObjectProphecy;
24 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
25 
29 class ‪EvaluateDisplayConditionsTest extends UnitTestCase
30 {
35  {
36  $input = [
37  'databaseRow' => [],
38  'processedTca' => [
39  'columns' => [
40  'field_1' => [
41  'displayCond' => [
42  'FOO' => [
43  'condition1',
44  'condition2',
45  ],
46  ],
47  ],
48  ],
49  ],
50  ];
51  $this->expectException(\RuntimeException::class);
52  $this->expectExceptionCode(1481380393);
53  (new ‪EvaluateDisplayConditions())->addData($input);
54  }
55 
60  {
61  $input = [
62  'databaseRow' => [],
63  'processedTca' => [
64  'columns' => [
65  'field_1' => [
66  'displayCond' => [
67  ['condition1'],
68  ],
69  ],
70  ],
71  ],
72  ];
73  $this->expectException(\RuntimeException::class);
74  $this->expectExceptionCode(1481380393);
75  (new ‪EvaluateDisplayConditions())->addData($input);
76  }
77 
82  {
83  $input = [
84  'databaseRow' => [],
85  'processedTca' => [
86  'columns' => [
87  'field_1' => [
88  'displayCond' => false,
89  ],
90  ],
91  ],
92  ];
93  $this->expectException(\RuntimeException::class);
94  $this->expectExceptionCode(1481381058);
95  (new ‪EvaluateDisplayConditions())->addData($input);
96  }
97 
102  {
103  $input = [
104  'databaseRow' => [],
105  'processedTca' => [
106  'columns' => [
107  'field_1' => [
108  'displayCond' => 'foo',
109  ],
110  ],
111  ],
112  ];
113  $this->expectException(\RuntimeException::class);
114  $this->expectExceptionCode(1481381950);
115  (new ‪EvaluateDisplayConditions())->addData($input);
116  }
117 
122  {
123  $input = [
124  'databaseRow' => [],
125  'processedTca' => [
126  'columns' => [
127  'field_1' => [
128  'displayCond' => 'FIELD',
129  ],
130  ],
131  ],
132  ];
133  $this->expectException(\RuntimeException::class);
134  $this->expectExceptionCode(1481385695);
135  (new ‪EvaluateDisplayConditions())->addData($input);
136  }
137 
142  {
143  $input = [
144  'databaseRow' => [],
145  'processedTca' => [
146  'columns' => [
147  'field_1' => [
148  'displayCond' => 'FIELD:fieldName',
149  ],
150  ],
151  ],
152  ];
153  $this->expectException(\RuntimeException::class);
154  $this->expectExceptionCode(1481386239);
155  (new ‪EvaluateDisplayConditions())->addData($input);
156  }
157 
162  {
163  $input = [
164  'databaseRow' => [],
165  'processedTca' => [
166  'columns' => [
167  'field_1' => [
168  'displayCond' => 'FIELD:fieldName:foo',
169  ],
170  ],
171  ],
172  ];
173  $this->expectException(\RuntimeException::class);
174  $this->expectExceptionCode(1481386239);
175  (new ‪EvaluateDisplayConditions())->addData($input);
176  }
177 
182  {
183  $input = [
184  'databaseRow' => [],
185  'processedTca' => [
186  'columns' => [
187  'field_1' => [
188  'displayCond' => 'FIELD:fieldName:REQ',
189  ],
190  ],
191  ],
192  ];
193  $this->expectException(\RuntimeException::class);
194  $this->expectExceptionCode(1481401543);
195  (new ‪EvaluateDisplayConditions())->addData($input);
196  }
197 
202  {
203  $input = [
204  'databaseRow' => [],
205  'processedTca' => [
206  'columns' => [
207  'field_1' => [
208  'displayCond' => 'FIELD:fieldName:REQ:foo',
209  ],
210  ],
211  ],
212  ];
213  $this->expectException(\RuntimeException::class);
214  $this->expectExceptionCode(1481401892);
215  (new ‪EvaluateDisplayConditions())->addData($input);
216  }
217 
222  {
223  $input = [
224  'databaseRow' => [],
225  'processedTca' => [
226  'columns' => [
227  'field_1' => [
228  'displayCond' => 'FIELD:fieldName:>=:foo',
229  ],
230  ],
231  ],
232  ];
233  $this->expectException(\RuntimeException::class);
234  $this->expectExceptionCode(1481456806);
235  (new ‪EvaluateDisplayConditions())->addData($input);
236  }
237 
242  {
243  $input = [
244  'databaseRow' => [],
245  'processedTca' => [
246  'columns' => [
247  'field_1' => [
248  'displayCond' => 'FIELD:fieldName:-:23-',
249  ],
250  ],
251  ],
252  ];
253  $this->expectException(\RuntimeException::class);
254  $this->expectExceptionCode(1481457277);
255  (new ‪EvaluateDisplayConditions())->addData($input);
256  }
257 
262  {
263  $input = [
264  'databaseRow' => [],
265  'processedTca' => [
266  'columns' => [
267  'field_1' => [
268  'displayCond' => 'FIELD:fieldName:-:23-foo',
269  ],
270  ],
271  ],
272  ];
273  $this->expectException(\RuntimeException::class);
274  $this->expectExceptionCode(1481457277);
275  (new ‪EvaluateDisplayConditions())->addData($input);
276  }
277 
282  {
283  $input = [
284  'databaseRow' => [],
285  'processedTca' => [
286  'columns' => [
287  'field_1' => [
288  'displayCond' => 'REC',
289  ],
290  ],
291  ],
292  ];
293  $this->expectException(\RuntimeException::class);
294  $this->expectExceptionCode(1481384784);
295  (new ‪EvaluateDisplayConditions())->addData($input);
296  }
297 
302  {
303  $input = [
304  'databaseRow' => [],
305  'processedTca' => [
306  'columns' => [
307  'field_1' => [
308  'displayCond' => 'REC:foo',
309  ],
310  ],
311  ],
312  ];
313  $this->expectException(\RuntimeException::class);
314  $this->expectExceptionCode(1481384784);
315  (new ‪EvaluateDisplayConditions())->addData($input);
316  }
317 
322  {
323  $input = [
324  'databaseRow' => [],
325  'processedTca' => [
326  'columns' => [
327  'field_1' => [
328  'displayCond' => 'REC:NEW',
329  ],
330  ],
331  ],
332  ];
333  $this->expectException(\RuntimeException::class);
334  $this->expectExceptionCode(1481384947);
335  (new ‪EvaluateDisplayConditions())->addData($input);
336  }
337 
342  {
343  $input = [
344  'databaseRow' => [],
345  'processedTca' => [
346  'columns' => [
347  'field_1' => [
348  'displayCond' => 'REC:NEW:foo',
349  ],
350  ],
351  ],
352  ];
353  $this->expectException(\RuntimeException::class);
354  $this->expectExceptionCode(1481385173);
355  (new ‪EvaluateDisplayConditions())->addData($input);
356  }
357 
362  {
363  $input = [
364  'databaseRow' => [],
365  'processedTca' => [
366  'columns' => [
367  'field_1' => [
368  'displayCond' => 'REC:NEW:false',
369  ],
370  ],
371  ],
372  ];
373  $this->expectException(\RuntimeException::class);
374  $this->expectExceptionCode(1481467208);
375  (new ‪EvaluateDisplayConditions())->addData($input);
376  }
377 
382  {
383  $input = [
384  'databaseRow' => [],
385  'processedTca' => [
386  'columns' => [
387  'field_1' => [
388  'displayCond' => 'VERSION',
389  ],
390  ],
391  ],
392  ];
393  $this->expectException(\RuntimeException::class);
394  $this->expectExceptionCode(1481383660);
395  (new ‪EvaluateDisplayConditions())->addData($input);
396  }
397 
402  {
403  $input = [
404  'databaseRow' => [],
405  'processedTca' => [
406  'columns' => [
407  'field_1' => [
408  'displayCond' => 'VERSION:foo',
409  ],
410  ],
411  ],
412  ];
413  $this->expectException(\RuntimeException::class);
414  $this->expectExceptionCode(1481383660);
415  (new ‪EvaluateDisplayConditions())->addData($input);
416  }
417 
422  {
423  $input = [
424  'databaseRow' => [],
425  'processedTca' => [
426  'columns' => [
427  'field_1' => [
428  'displayCond' => 'VERSION:IS',
429  ],
430  ],
431  ],
432  ];
433  $this->expectException(\RuntimeException::class);
434  $this->expectExceptionCode(1481383888);
435  (new ‪EvaluateDisplayConditions())->addData($input);
436  }
437 
442  {
443  $input = [
444  'databaseRow' => [],
445  'processedTca' => [
446  'columns' => [
447  'field_1' => [
448  'displayCond' => 'VERSION:IS:foo',
449  ],
450  ],
451  ],
452  ];
453  $this->expectException(\RuntimeException::class);
454  $this->expectExceptionCode(1481384123);
455  (new ‪EvaluateDisplayConditions())->addData($input);
456  }
457 
462  {
463  $input = [
464  'databaseRow' => [],
465  'processedTca' => [
466  'columns' => [
467  'field_1' => [
468  'displayCond' => 'VERSION:IS:false',
469  ],
470  ],
471  ],
472  ];
473  $this->expectException(\RuntimeException::class);
474  $this->expectExceptionCode(1481469854);
475  (new ‪EvaluateDisplayConditions())->addData($input);
476  }
477 
482  {
483  $input = [
484  'databaseRow' => [],
485  'processedTca' => [
486  'columns' => [
487  'field_1' => [
488  'displayCond' => 'USER',
489  ],
490  ],
491  ],
492  ];
493  $this->expectException(\RuntimeException::class);
494  $this->expectExceptionCode(1481382954);
495  (new ‪EvaluateDisplayConditions())->addData($input);
496  }
497 
502  {
503  $input = [
504  'databaseRow' => [],
505  'processedTca' => [
506  'columns' => [
507  'field_1' => [
508  'displayCond' => 'USER:' . self::class . '->addDataEvaluatesUserConditionCallback:more:arguments',
509  ],
510  ],
511  ],
512  ];
513  $this->expectException(\RuntimeException::class);
514  $this->expectExceptionCode(1488130499);
515  (new ‪EvaluateDisplayConditions())->addData($input);
516  }
517 
525  public function ‪addDataEvaluatesUserConditionCallback(array $parameter)
526  {
527  $expected = [
528  'record' => [],
529  'flexContext' => [],
530  'flexformValueKey' => 'vDEF',
531  'conditionParameters' => [
532  0 => 'more',
533  1 => 'arguments',
534  ],
535  ];
536  if ($expected === $parameter) {
537  throw new \RuntimeException('testing', 1488130499);
538  }
539  }
540 
545  {
546  $input = [
547  'databaseRow' => [],
548  'processedTca' => [
549  'columns' => [
550  'field_1' => [
551  'displayCond' => 'USER:' . self::class . '->addDataResolvesAllUserParametersCallback:some:more:info',
552  'config' => [
553  'type' => 'input',
554  ],
555  ],
556  ],
557  ],
558  ];
559 
560  $expected = $input;
561  unset($expected['processedTca']['columns']['field_1']['displayCond']);
562 
563  self::assertSame($expected, (new ‪EvaluateDisplayConditions())->addData($input));
564  }
565 
574  public function ‪addDataResolvesAllUserParametersCallback(array $parameter)
575  {
576  $expected = [
577  0 => 'some',
578  1 => 'more',
579  2 => 'info',
580  ];
581 
582  if ($expected !== $parameter['conditionParameters']) {
583  throw new \RuntimeException('testing', 1538055997);
584  }
585 
586  return true;
587  }
588 
593  {
594  $input = [
595  'databaseRow' => [],
596  'processedTca' => [
597  'columns' => [
598  'field_1' => [
599  'config' => [
600  'type' => 'flex',
601  'ds' => [
602  'sheets' => [
603  'sDEF' => [
604  'ROOT' => [
605  'type' => 'array',
606  'el' => [
607  'foo' => [
608  'displayCond' => 'USER:' . self::class . '->addDataPassesFlexContextToUserConditionCallback:some:info',
609  ],
610  ],
611  ],
612  ],
613  ],
614  ],
615  ],
616  ],
617  ],
618  ],
619  ];
620 
621  $expected = $input;
622  unset($expected['processedTca']['columns']['field_1']['config']['ds']['sheets']['sDEF']['ROOT']['el']['foo']['displayCond']);
623 
624  self::assertSame($expected, (new ‪EvaluateDisplayConditions())->addData($input));
625  }
626 
635  public function ‪addDataPassesFlexContextToUserConditionCallback(array $parameter)
636  {
637  $expected = [
638  'context' => 'flexField',
639  'sheetNameFieldNames' => [
640  'sDEF.foo' => [
641  'sheetName' => 'sDEF',
642  'fieldName' => 'foo',
643  ],
644  ],
645  'currentSheetName' => 'sDEF',
646  'currentFieldName' => 'foo',
647  'flexFormDataStructure' => [
648  'sheets' => [
649  'sDEF' => [
650  'ROOT' => [
651  'type' => 'array',
652  'el' => [
653  'foo' => [
654  'displayCond' => 'USER:' . self::class . '->addDataPassesFlexContextToUserConditionCallback:some:info'
655  ],
656  ],
657  ],
658  ],
659  ],
660  ],
661  'flexFormRowData' => null,
662  ];
663 
664  if ($expected !== $parameter['flexContext']) {
665  throw new \RuntimeException('testing', 1538057402);
666  }
667 
668  return true;
669  }
670 
675  {
676  $input = [
677  'databaseRow' => [],
678  'processedTca' => [
679  'columns' => [
680  'field_1' => [
681  'config' => [
682  'type' => 'flex',
683  'ds' => [
684  'sheets' => [
685  'sheet' => [
686  'ROOT' => [
687  'el' => [
688  'name.field' => [],
689  ],
690  ],
691  ],
692  'sheet.name' => [
693  'ROOT' => [
694  'el' => [
695  'field' => [],
696  ],
697  ],
698  ],
699  ],
700  ],
701  ],
702  ],
703  ],
704  ],
705  ];
706  $this->expectException(\RuntimeException::class);
707  $this->expectExceptionCode(1481483061);
708  (new ‪EvaluateDisplayConditions())->addData($input);
709  }
710 
715  {
716  $input = [
717  'databaseRow' => [],
718  'processedTca' => [
719  'columns' => [
720  'field_1' => [
721  'config' => [
722  'type' => 'flex',
723  'ds' => [
724  'sheets' => [
725  'aSheet' => [
726  'ROOT' => [
727  'displayCond' => 'FIELD:aSheet.aField:=:foo',
728  'el' => [
729  'aField' => [],
730  ],
731  ],
732  ],
733  ],
734  ],
735  ],
736  ],
737  ],
738  ],
739  ];
740  $this->expectException(\RuntimeException::class);
741  $this->expectExceptionCode(1481485705);
742  (new ‪EvaluateDisplayConditions())->addData($input);
743  }
744 
749  {
750  $input = [
751  'databaseRow' => [],
752  'processedTca' => [
753  'columns' => [
754  'field_1' => [
755  'config' => [
756  'type' => 'flex',
757  'ds' => [
758  'sheets' => [
759  'sheet_1' => [],
760  'sheet_2' => [
761  'ROOT' => [
762  'displayCond' => 'FIELD:sheet_1.flexField_1:!=:foo',
763  ],
764  ],
765  ],
766  ],
767  ],
768  ],
769  ],
770  ],
771  ];
772  $this->expectException(\RuntimeException::class);
773  $this->expectExceptionCode(1481488492);
774  (new ‪EvaluateDisplayConditions())->addData($input);
775  }
776 
781  {
782  $input = [
783  'databaseRow' => [],
784  'processedTca' => [
785  'columns' => [
786  'field_1' => [
787  'config' => [
788  'type' => 'flex',
789  'ds' => [
790  'sheets' => [
791  'sheet_1' => [
792  'ROOT' => [
793  'el' => [
794  'flexField_1' => [],
795  'flexField_2' => [
796  'displayCond' => 'FIELD:flexField_1:!=:foo',
797  ],
798  ],
799  ],
800  ],
801  ],
802  ],
803  ],
804  ],
805  ],
806  ],
807  ];
808  $this->expectException(\RuntimeException::class);
809  $this->expectExceptionCode(1481492953);
810  (new ‪EvaluateDisplayConditions())->addData($input);
811  }
812 
817  {
818  $input = [
819  'databaseRow' => [],
820  'processedTca' => [
821  'columns' => [
822  'field_1' => [
823  'config' => [
824  'type' => 'flex',
825  'ds' => [
826  'sheets' => [
827  'sheet_1' => [
828  'ROOT' => [
829  'el' => [
830  'flexField_1' => [
831  'displayCond' => 'FIELD:foo.flexField_1:!=:foo',
832  ],
833  ],
834  ],
835  ],
836  ],
837  ],
838  ],
839  ],
840  ],
841  ],
842  ];
843  $this->expectException(\RuntimeException::class);
844  $this->expectExceptionCode(1481496170);
845  (new ‪EvaluateDisplayConditions())->addData($input);
846  }
847 
852  {
853  $input = [
854  'databaseRow' => [
855  'field_1' => [
856  'data' => [
857  'sheet_1' => [
858  'lDEF' => [
859  'section_1' => [
860  'el' => [
861  '1' => [
862  'container_1' => [],
863  ],
864  ],
865  ],
866  ],
867  ],
868  ],
869  ],
870  ],
871  'processedTca' => [
872  'columns' => [
873  'field_1' => [
874  'config' => [
875  'type' => 'flex',
876  'ds' => [
877  'sheets' => [
878  'sheet_1' => [
879  'ROOT' => [
880  'el' => [
881  'section_1' => [
882  'type' => 'array',
883  'section' => 1,
884  'children' => [
885  '1' => [
886  'el' => [
887  'containerField_1' => [
888  'displayCond' => 'FIELD:flexField_1:!=:foo',
889  ],
890  ],
891  ],
892  ],
893  ],
894  ],
895  ],
896  ],
897  ],
898  ],
899  ],
900  ],
901  ],
902  ],
903  ];
904  $this->expectException(\RuntimeException::class);
905  $this->expectExceptionCode(1481634649);
906  (new ‪EvaluateDisplayConditions())->addData($input);
907  }
908 
915  {
916  return [
917 
918  // tca field to tca field value tests
919  'remove tca field by tca field value' => [
920  // path that should be removed from 'processedTca' by condition
921  'columns/field_2',
922  // 'databaseRow'
923  [
924  'field_1' => 'foo',
925  ],
926  // 'processedTca'
927  [
928  'columns' => [
929  'field_2' => [
930  'displayCond' => 'FIELD:field_1:!=:foo',
931  ],
932  ],
933  ],
934  ],
935 
936  // flex field to tca field value tests
937  'remove flex form field by tca field value' => [
938  'columns/field_2/config/ds/sheets/sheet_1/ROOT/el/flexField_1',
939  [
940  'field_1' => 'foo',
941  ],
942  [
943  'columns' => [
944  'field_2' => [
945  'config' => [
946  'type' => 'flex',
947  'ds' => [
948  'sheets' => [
949  'sheet_1' => [
950  'ROOT' => [
951  'el' => [
952  'flexField_1' => [
953  'displayCond' => 'FIELD:parentRec.field_1:!=:foo',
954  ],
955  ],
956  ],
957  ],
958  ],
959  ],
960  ],
961  ],
962  ],
963  ],
964  ],
965 
966  // flex field to flex field value on same sheet tests
967  'remove flex form field by flex field value on same flex sheet' => [
968  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/flexField_2',
969  [
970  'field_1' => [
971  'data' => [
972  'sheet_1' => [
973  'lDEF' => [
974  'flexField_1' => [
975  'vDEF' => [
976  0 => 'foo',
977  ],
978  ],
979  ],
980  ],
981  ],
982  ],
983  ],
984  [
985  'columns' => [
986  'field_1' => [
987  'config' => [
988  'type' => 'flex',
989  'ds' => [
990  'sheets' => [
991  'sheet_1' => [
992  'ROOT' => [
993  'el' => [
994  'flexField_1' => [],
995  'flexField_2' => [
996  'displayCond' => 'FIELD:flexField_1:!=:foo',
997  ],
998  ],
999  ],
1000  ],
1001  ],
1002  ],
1003  ],
1004  ],
1005  ],
1006  ],
1007  ],
1008 
1009  'remove flex form field by flex field value on same flex sheet with dot in flex sheet name' => [
1010  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/flexField_2',
1011  [
1012  'field_1' => [
1013  'data' => [
1014  'sheet.1' => [
1015  'lDEF' => [
1016  'flexField_1' => [
1017  'vDEF' => [
1018  0 => 'foo',
1019  ],
1020  ],
1021  ],
1022  ],
1023  ],
1024  ],
1025  ],
1026  [
1027  'columns' => [
1028  'field_1' => [
1029  'config' => [
1030  'type' => 'flex',
1031  'ds' => [
1032  'sheets' => [
1033  'sheet.1' => [
1034  'ROOT' => [
1035  'el' => [
1036  'flexField_1' => [],
1037  'flexField_2' => [
1038  'displayCond' => 'FIELD:flexField_1:!=:foo',
1039  ],
1040  ],
1041  ],
1042  ],
1043  ],
1044  ],
1045  ],
1046  ],
1047  ],
1048  ],
1049  ],
1050 
1051  'remove flex form field by flex field value on same flex sheet with dot in flex field name' => [
1052  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/flexField_2',
1053  [
1054  'field_1' => [
1055  'data' => [
1056  'sheet_1' => [
1057  'lDEF' => [
1058  'flexField.1' => [
1059  'vDEF' => [
1060  0 => 'foo',
1061  ],
1062  ],
1063  ],
1064  ],
1065  ],
1066  ],
1067  ],
1068  [
1069  'columns' => [
1070  'field_1' => [
1071  'config' => [
1072  'type' => 'flex',
1073  'ds' => [
1074  'sheets' => [
1075  'sheet_1' => [
1076  'ROOT' => [
1077  'el' => [
1078  'flexField.1' => [],
1079  'flexField_2' => [
1080  'displayCond' => 'FIELD:flexField.1:!=:foo',
1081  ],
1082  ],
1083  ],
1084  ],
1085  ],
1086  ],
1087  ],
1088  ],
1089  ],
1090  ],
1091  ],
1092 
1093  'remove flex form field by flex field value on same flex sheet with dot in flex sheet name and dot in flex field name' => [
1094  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/flexField_2',
1095  [
1096  'field_1' => [
1097  'data' => [
1098  'sheet.1' => [
1099  'lDEF' => [
1100  'flexField.1' => [
1101  'vDEF' => [
1102  0 => 'foo',
1103  ],
1104  ],
1105  ],
1106  ],
1107  ],
1108  ],
1109  ],
1110  [
1111  'columns' => [
1112  'field_1' => [
1113  'config' => [
1114  'type' => 'flex',
1115  'ds' => [
1116  'sheets' => [
1117  'sheet.1' => [
1118  'ROOT' => [
1119  'el' => [
1120  'flexField.1' => [],
1121  'flexField_2' => [
1122  'displayCond' => 'FIELD:flexField.1:!=:foo',
1123  ],
1124  ],
1125  ],
1126  ],
1127  ],
1128  ],
1129  ],
1130  ],
1131  ],
1132  ],
1133  ],
1134 
1135  'remove flex form field by flex field value on same flex sheet with specified flex sheet name' => [
1136  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/flexField_2',
1137  [
1138  'field_1' => [
1139  'data' => [
1140  'sheet_1' => [
1141  'lDEF' => [
1142  'flexField_1' => [
1143  'vDEF' => [
1144  0 => 'foo',
1145  ],
1146  ],
1147  ],
1148  ],
1149  ],
1150  ],
1151  ],
1152  [
1153  'columns' => [
1154  'field_1' => [
1155  'config' => [
1156  'type' => 'flex',
1157  'ds' => [
1158  'sheets' => [
1159  'sheet_1' => [
1160  'ROOT' => [
1161  'el' => [
1162  'flexField_1' => [],
1163  'flexField_2' => [
1164  'displayCond' => 'FIELD:sheet_1.flexField_1:!=:foo',
1165  ],
1166  ],
1167  ],
1168  ],
1169  ],
1170  ],
1171  ],
1172  ],
1173  ],
1174  ],
1175  ],
1176 
1177  'remove flex form field by flex field value on same flex sheet with specified flex sheet name with dot in flex sheet name' => [
1178  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/flexField_2',
1179  [
1180  'field_1' => [
1181  'data' => [
1182  'sheet.1' => [
1183  'lDEF' => [
1184  'flexField_1' => [
1185  'vDEF' => [
1186  0 => 'foo',
1187  ],
1188  ],
1189  ],
1190  ],
1191  ],
1192  ],
1193  ],
1194  [
1195  'columns' => [
1196  'field_1' => [
1197  'config' => [
1198  'type' => 'flex',
1199  'ds' => [
1200  'sheets' => [
1201  'sheet.1' => [
1202  'ROOT' => [
1203  'el' => [
1204  'flexField_1' => [],
1205  'flexField_2' => [
1206  'displayCond' => 'FIELD:sheet.1.flexField_1:!=:foo',
1207  ],
1208  ],
1209  ],
1210  ],
1211  ],
1212  ],
1213  ],
1214  ],
1215  ],
1216  ],
1217  ],
1218 
1219  'remove flex form field by flex field value on same flex sheet with specified flex sheet name with dot in flex field name' => [
1220  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/flexField_2',
1221  [
1222  'field_1' => [
1223  'data' => [
1224  'sheet_1' => [
1225  'lDEF' => [
1226  'flexField.1' => [
1227  'vDEF' => [
1228  0 => 'foo',
1229  ],
1230  ],
1231  ],
1232  ],
1233  ],
1234  ],
1235  ],
1236  [
1237  'columns' => [
1238  'field_1' => [
1239  'config' => [
1240  'type' => 'flex',
1241  'ds' => [
1242  'sheets' => [
1243  'sheet_1' => [
1244  'ROOT' => [
1245  'el' => [
1246  'flexField.1' => [],
1247  'flexField_2' => [
1248  'displayCond' => 'FIELD:sheet_1.flexField.1:!=:foo',
1249  ],
1250  ],
1251  ],
1252  ],
1253  ],
1254  ],
1255  ],
1256  ],
1257  ],
1258  ],
1259  ],
1260 
1261  'remove flex form field by flex field value on same flex sheet with specified flex sheet name with dot in flex sheet name and dot in flex field name' => [
1262  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/flexField_2',
1263  [
1264  'field_1' => [
1265  'data' => [
1266  'sheet.1' => [
1267  'lDEF' => [
1268  'flexField.1' => [
1269  'vDEF' => [
1270  0 => 'foo',
1271  ],
1272  ],
1273  ],
1274  ],
1275  ],
1276  ],
1277  ],
1278  [
1279  'columns' => [
1280  'field_1' => [
1281  'config' => [
1282  'type' => 'flex',
1283  'ds' => [
1284  'sheets' => [
1285  'sheet.1' => [
1286  'ROOT' => [
1287  'el' => [
1288  'flexField.1' => [],
1289  'flexField_2' => [
1290  'displayCond' => 'FIELD:sheet.1.flexField.1:!=:foo',
1291  ],
1292  ],
1293  ],
1294  ],
1295  ],
1296  ],
1297  ],
1298  ],
1299  ],
1300  ],
1301  ],
1302 
1303  // flex field to flex field value on other sheet tests
1304  'remove flex form field by flex field value on other flex sheet' => [
1305  'columns/field_1/config/ds/sheets/sheet_2/ROOT/el/flexField_1',
1306  [
1307  'field_1' => [
1308  'data' => [
1309  'sheet_1' => [
1310  'lDEF' => [
1311  'flexField_1' => [
1312  'vDEF' => [
1313  0 => 'foo',
1314  ],
1315  ],
1316  ],
1317  ],
1318  ],
1319  ],
1320  ],
1321  [
1322  'columns' => [
1323  'field_1' => [
1324  'config' => [
1325  'type' => 'flex',
1326  'ds' => [
1327  'sheets' => [
1328  'sheet_1' => [
1329  'ROOT' => [
1330  'el' => [
1331  'flexField_1' => [],
1332  ],
1333  ],
1334  ],
1335  'sheet_2' => [
1336  'ROOT' => [
1337  'el' => [
1338  'flexField_1' => [
1339  'displayCond' => 'FIELD:sheet_1.flexField_1:!=:foo',
1340  ],
1341  ],
1342  ],
1343  ],
1344  ],
1345  ],
1346  ],
1347  ],
1348  ],
1349  ],
1350  ],
1351 
1352  'remove flex form field by flex field value on other flex sheet with dot in flex sheet name' => [
1353  'columns/field_1/config/ds/sheets/sheet_2/ROOT/el/flexField_1',
1354  [
1355  'field_1' => [
1356  'data' => [
1357  'sheet.1' => [
1358  'lDEF' => [
1359  'flexField_1' => [
1360  'vDEF' => [
1361  0 => 'foo',
1362  ],
1363  ],
1364  ],
1365  ],
1366  ],
1367  ],
1368  ],
1369  [
1370  'columns' => [
1371  'field_1' => [
1372  'config' => [
1373  'type' => 'flex',
1374  'ds' => [
1375  'sheets' => [
1376  'sheet.1' => [
1377  'ROOT' => [
1378  'el' => [
1379  'flexField_1' => [],
1380  ],
1381  ],
1382  ],
1383  'sheet_2' => [
1384  'ROOT' => [
1385  'el' => [
1386  'flexField_1' => [
1387  'displayCond' => 'FIELD:sheet.1.flexField_1:!=:foo',
1388  ],
1389  ],
1390  ],
1391  ],
1392  ],
1393  ],
1394  ],
1395  ],
1396  ],
1397  ],
1398  ],
1399 
1400  'remove flex form field by flex field value on other flex sheet with dot in flex field name' => [
1401  'columns/field_1/config/ds/sheets/sheet_2/ROOT/el/flexField_1',
1402  [
1403  'field_1' => [
1404  'data' => [
1405  'sheet_1' => [
1406  'lDEF' => [
1407  'flexField.1' => [
1408  'vDEF' => [
1409  0 => 'foo',
1410  ],
1411  ],
1412  ],
1413  ],
1414  ],
1415  ],
1416  ],
1417  [
1418  'columns' => [
1419  'field_1' => [
1420  'config' => [
1421  'type' => 'flex',
1422  'ds' => [
1423  'sheets' => [
1424  'sheet_1' => [
1425  'ROOT' => [
1426  'el' => [
1427  'flexField.1' => [],
1428  ],
1429  ],
1430  ],
1431  'sheet_2' => [
1432  'ROOT' => [
1433  'el' => [
1434  'flexField_1' => [
1435  'displayCond' => 'FIELD:sheet_1.flexField.1:!=:foo',
1436  ],
1437  ],
1438  ],
1439  ],
1440  ],
1441  ],
1442  ],
1443  ],
1444  ],
1445  ],
1446  ],
1447 
1448  'remove flex form field by flex field value on other flex sheet with dot in flex sheet name and dot in flex field name' => [
1449  'columns/field_1/config/ds/sheets/sheet_2/ROOT/el/flexField_1',
1450  [
1451  'field_1' => [
1452  'data' => [
1453  'sheet.1' => [
1454  'lDEF' => [
1455  'flexField.1' => [
1456  'vDEF' => [
1457  0 => 'foo',
1458  ],
1459  ],
1460  ],
1461  ],
1462  ],
1463  ],
1464  ],
1465  [
1466  'columns' => [
1467  'field_1' => [
1468  'config' => [
1469  'type' => 'flex',
1470  'ds' => [
1471  'sheets' => [
1472  'sheet.1' => [
1473  'ROOT' => [
1474  'el' => [
1475  'flexField.1' => [],
1476  ],
1477  ],
1478  ],
1479  'sheet_2' => [
1480  'ROOT' => [
1481  'el' => [
1482  'flexField_1' => [
1483  'displayCond' => 'FIELD:sheet.1.flexField.1:!=:foo',
1484  ],
1485  ],
1486  ],
1487  ],
1488  ],
1489  ],
1490  ],
1491  ],
1492  ],
1493  ],
1494  ],
1495 
1496  // flex sheet to tca field value tests
1497  'remove flex form sheet by tca field value' => [
1498  'columns/field_2/config/ds/sheets/sheet_1',
1499  [
1500  'field_1' => 'foo',
1501  ],
1502  [
1503  'columns' => [
1504  'field_2' => [
1505  'config' => [
1506  'type' => 'flex',
1507  'ds' => [
1508  'sheets' => [
1509  'sheet_1' => [
1510  'ROOT' => [
1511  'displayCond' => 'FIELD:parentRec.field_1:!=:foo',
1512  ],
1513  ],
1514  ],
1515  ],
1516  ],
1517  ],
1518  ],
1519  ],
1520  ],
1521 
1522  // flex sheet to flex field value tests
1523  'remove flex form sheet by flex field value on different flex sheet' => [
1524  'columns/field_1/config/ds/sheets/sheet_2',
1525  [
1526  'field_1' => [
1527  'data' => [
1528  'sheet_1' => [
1529  'lDEF' => [
1530  'flexField_1' => [
1531  'vDEF' => [
1532  0 => 'foo',
1533  ],
1534  ],
1535  ],
1536  ],
1537  ],
1538  ],
1539  ],
1540  [
1541  'columns' => [
1542  'field_1' => [
1543  'config' => [
1544  'type' => 'flex',
1545  'ds' => [
1546  'sheets' => [
1547  'sheet_1' => [
1548  'ROOT' => [
1549  'el' => [
1550  'flexField_1' => [],
1551  ],
1552  ],
1553  ],
1554  'sheet_2' => [
1555  'ROOT' => [
1556  'displayCond' => 'FIELD:sheet_1.flexField_1:!=:foo',
1557  ],
1558  ],
1559  ],
1560  ],
1561  ],
1562  ],
1563  ],
1564  ],
1565  ],
1566 
1567  'remove flex form sheet by flex field value on different flex sheet with dot in flex sheet name' => [
1568  'columns/field_1/config/ds/sheets/sheet.2',
1569  [
1570  'field_1' => [
1571  'data' => [
1572  'sheet.1' => [
1573  'lDEF' => [
1574  'flexField_1' => [
1575  'vDEF' => [
1576  0 => 'foo',
1577  ],
1578  ],
1579  ],
1580  ],
1581  ],
1582  ],
1583  ],
1584  [
1585  'columns' => [
1586  'field_1' => [
1587  'config' => [
1588  'type' => 'flex',
1589  'ds' => [
1590  'sheets' => [
1591  'sheet.1' => [
1592  'ROOT' => [
1593  'el' => [
1594  'flexField_1' => [],
1595  ],
1596  ],
1597  ],
1598  'sheet.2' => [
1599  'ROOT' => [
1600  'displayCond' => 'FIELD:sheet.1.flexField_1:!=:foo',
1601  ],
1602  ],
1603  ],
1604  ],
1605  ],
1606  ],
1607  ],
1608  ],
1609  ],
1610 
1611  'remove flex form sheet by flex field value on different flex sheet with dot in flex field name' => [
1612  'columns/field_1/config/ds/sheets/sheet_2',
1613  [
1614  'field_1' => [
1615  'data' => [
1616  'sheet_1' => [
1617  'lDEF' => [
1618  'flexField.1' => [
1619  'vDEF' => [
1620  0 => 'foo',
1621  ],
1622  ],
1623  ],
1624  ],
1625  ],
1626  ],
1627  ],
1628  [
1629  'columns' => [
1630  'field_1' => [
1631  'config' => [
1632  'type' => 'flex',
1633  'ds' => [
1634  'sheets' => [
1635  'sheet_1' => [
1636  'ROOT' => [
1637  'el' => [
1638  'flexField.1' => [],
1639  ],
1640  ],
1641  ],
1642  'sheet_2' => [
1643  'ROOT' => [
1644  'displayCond' => 'FIELD:sheet_1.flexField.1:!=:foo',
1645  ],
1646  ],
1647  ],
1648  ],
1649  ],
1650  ],
1651  ],
1652  ],
1653  ],
1654 
1655  'remove flex form sheet by flex field value on different flex sheet with dot in flex sheet name and dot in flex field name' => [
1656  'columns/field_1/config/ds/sheets/sheet.2',
1657  [
1658  'field_1' => [
1659  'data' => [
1660  'sheet.1' => [
1661  'lDEF' => [
1662  'flexField.1' => [
1663  'vDEF' => [
1664  0 => 'foo',
1665  ],
1666  ],
1667  ],
1668  ],
1669  ],
1670  ],
1671  ],
1672  [
1673  'columns' => [
1674  'field_1' => [
1675  'config' => [
1676  'type' => 'flex',
1677  'ds' => [
1678  'sheets' => [
1679  'sheet.1' => [
1680  'ROOT' => [
1681  'el' => [
1682  'flexField.1' => [],
1683  ],
1684  ],
1685  ],
1686  'sheet.2' => [
1687  'ROOT' => [
1688  'displayCond' => 'FIELD:sheet.1.flexField.1:!=:foo',
1689  ],
1690  ],
1691  ],
1692  ],
1693  ],
1694  ],
1695  ],
1696  ],
1697  ],
1698 
1699  // flex section container field to tca value tests
1700  'remove flex section container field by tca field value' => [
1701  'columns/field_2/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/containerField_1',
1702  [
1703  'field_1' => 'foo',
1704  'field_2' => [
1705  'data' => [
1706  'sheet_1' => [
1707  'lDEF' => [
1708  'section_1' => [
1709  'el' => [
1710  '1' => [],
1711  ],
1712  ],
1713  ],
1714  ],
1715  ],
1716  ],
1717  ],
1718  [
1719  'columns' => [
1720  'field_2' => [
1721  'config' => [
1722  'type' => 'flex',
1723  'ds' => [
1724  'sheets' => [
1725  'sheet_1' => [
1726  'ROOT' => [
1727  'el' => [
1728  'section_1' => [
1729  'type' => 'array',
1730  'section' => 1,
1731  'children' => [
1732  '1' => [
1733  'el' => [
1734  'containerField_1' => [
1735  'displayCond' => 'FIELD:parentRec.field_1:!=:foo',
1736  ],
1737  ],
1738  ],
1739  ],
1740  ],
1741  ],
1742  ],
1743  ],
1744  ],
1745  ],
1746  ],
1747  ],
1748  ],
1749  ],
1750  ],
1751 
1752  // flex section container field to flex field value of same sheet
1753  'remove flex section container field by flex field value on same flex sheet' => [
1754  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/containerField_1',
1755  [
1756  'field_1' => [
1757  'data' => [
1758  'sheet_1' => [
1759  'lDEF' => [
1760  'flexField_1' => [
1761  'vDEF' => [
1762  0 => 'foo',
1763  ],
1764  ],
1765  'section_1' => [
1766  'el' => [
1767  '1' => [],
1768  ],
1769  ],
1770  ],
1771  ],
1772  ],
1773  ],
1774  ],
1775  [
1776  'columns' => [
1777  'field_1' => [
1778  'config' => [
1779  'type' => 'flex',
1780  'ds' => [
1781  'sheets' => [
1782  'sheet_1' => [
1783  'ROOT' => [
1784  'el' => [
1785  'flexField_1' => [],
1786  'section_1' => [
1787  'type' => 'array',
1788  'section' => 1,
1789  'children' => [
1790  '1' => [
1791  'el' => [
1792  'containerField_1' => [
1793  'displayCond' => 'FIELD:flexField_1:!=:foo',
1794  ],
1795  ],
1796  ],
1797  ],
1798  ],
1799  ],
1800  ],
1801  ],
1802  ],
1803  ],
1804  ],
1805  ],
1806  ],
1807  ],
1808  ],
1809 
1810  'remove flex section container field by flex field value on same flex sheet with dot in flex sheet name' => [
1811  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/containerField_1',
1812  [
1813  'field_1' => [
1814  'data' => [
1815  'sheet.1' => [
1816  'lDEF' => [
1817  'flexField_1' => [
1818  'vDEF' => [
1819  0 => 'foo',
1820  ],
1821  ],
1822  'section_1' => [
1823  'el' => [
1824  '1' => [],
1825  ],
1826  ],
1827  ],
1828  ],
1829  ],
1830  ],
1831  ],
1832  [
1833  'columns' => [
1834  'field_1' => [
1835  'config' => [
1836  'type' => 'flex',
1837  'ds' => [
1838  'sheets' => [
1839  'sheet.1' => [
1840  'ROOT' => [
1841  'el' => [
1842  'flexField_1' => [],
1843  'section_1' => [
1844  'type' => 'array',
1845  'section' => 1,
1846  'children' => [
1847  '1' => [
1848  'el' => [
1849  'containerField_1' => [
1850  'displayCond' => 'FIELD:flexField_1:!=:foo',
1851  ],
1852  ],
1853  ],
1854  ],
1855  ],
1856  ],
1857  ],
1858  ],
1859  ],
1860  ],
1861  ],
1862  ],
1863  ],
1864  ],
1865  ],
1866 
1867  'remove flex section container field by flex field value on same flex sheet with dot in flex field name' => [
1868  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/containerField_1',
1869  [
1870  'field_1' => [
1871  'data' => [
1872  'sheet_1' => [
1873  'lDEF' => [
1874  'flexField.1' => [
1875  'vDEF' => [
1876  0 => 'foo',
1877  ],
1878  ],
1879  'section_1' => [
1880  'el' => [
1881  '1' => [],
1882  ],
1883  ],
1884  ],
1885  ],
1886  ],
1887  ],
1888  ],
1889  [
1890  'columns' => [
1891  'field_1' => [
1892  'config' => [
1893  'type' => 'flex',
1894  'ds' => [
1895  'sheets' => [
1896  'sheet_1' => [
1897  'ROOT' => [
1898  'el' => [
1899  'flexField.1' => [],
1900  'section_1' => [
1901  'type' => 'array',
1902  'section' => 1,
1903  'children' => [
1904  '1' => [
1905  'el' => [
1906  'containerField_1' => [
1907  'displayCond' => 'FIELD:flexField.1:!=:foo',
1908  ],
1909  ],
1910  ],
1911  ],
1912  ],
1913  ],
1914  ],
1915  ],
1916  ],
1917  ],
1918  ],
1919  ],
1920  ],
1921  ],
1922  ],
1923 
1924  'remove flex section container field by flex field value on same flex sheet with dot in flex sheet name and dot in flex field name' => [
1925  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/containerField_1',
1926  [
1927  'field_1' => [
1928  'data' => [
1929  'sheet.1' => [
1930  'lDEF' => [
1931  'flexField.1' => [
1932  'vDEF' => [
1933  0 => 'foo',
1934  ],
1935  ],
1936  'section_1' => [
1937  'el' => [
1938  '1' => [],
1939  ],
1940  ],
1941  ],
1942  ],
1943  ],
1944  ],
1945  ],
1946  [
1947  'columns' => [
1948  'field_1' => [
1949  'config' => [
1950  'type' => 'flex',
1951  'ds' => [
1952  'sheets' => [
1953  'sheet.1' => [
1954  'ROOT' => [
1955  'el' => [
1956  'flexField.1' => [],
1957  'section_1' => [
1958  'type' => 'array',
1959  'section' => 1,
1960  'children' => [
1961  '1' => [
1962  'el' => [
1963  'containerField_1' => [
1964  'displayCond' => 'FIELD:flexField.1:!=:foo',
1965  ],
1966  ],
1967  ],
1968  ],
1969  ],
1970  ],
1971  ],
1972  ],
1973  ],
1974  ],
1975  ],
1976  ],
1977  ],
1978  ],
1979  ],
1980 
1981  'remove flex section container field by flex field value on same flex sheet with specified flex sheet name' => [
1982  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/containerField_1',
1983  [
1984  'field_1' => [
1985  'data' => [
1986  'sheet_1' => [
1987  'lDEF' => [
1988  'flexField_1' => [
1989  'vDEF' => [
1990  0 => 'foo',
1991  ],
1992  ],
1993  'section_1' => [
1994  'el' => [
1995  '1' => [],
1996  ],
1997  ],
1998  ],
1999  ],
2000  ],
2001  ],
2002  ],
2003  [
2004  'columns' => [
2005  'field_1' => [
2006  'config' => [
2007  'type' => 'flex',
2008  'ds' => [
2009  'sheets' => [
2010  'sheet_1' => [
2011  'ROOT' => [
2012  'el' => [
2013  'flexField_1' => [],
2014  'section_1' => [
2015  'type' => 'array',
2016  'section' => 1,
2017  'children' => [
2018  '1' => [
2019  'el' => [
2020  'containerField_1' => [
2021  'displayCond' => 'FIELD:sheet_1.flexField_1:!=:foo',
2022  ],
2023  ],
2024  ],
2025  ],
2026  ],
2027  ],
2028  ],
2029  ],
2030  ],
2031  ],
2032  ],
2033  ],
2034  ],
2035  ],
2036  ],
2037 
2038  'remove flex section container field by flex field value on same flex sheet with specified flex sheet name with dot in flex sheet name' => [
2039  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/containerField_1',
2040  [
2041  'field_1' => [
2042  'data' => [
2043  'sheet.1' => [
2044  'lDEF' => [
2045  'flexField_1' => [
2046  'vDEF' => [
2047  0 => 'foo',
2048  ],
2049  ],
2050  'section_1' => [
2051  'el' => [
2052  '1' => [],
2053  ],
2054  ],
2055  ],
2056  ],
2057  ],
2058  ],
2059  ],
2060  [
2061  'columns' => [
2062  'field_1' => [
2063  'config' => [
2064  'type' => 'flex',
2065  'ds' => [
2066  'sheets' => [
2067  'sheet.1' => [
2068  'ROOT' => [
2069  'el' => [
2070  'flexField_1' => [],
2071  'section_1' => [
2072  'type' => 'array',
2073  'section' => 1,
2074  'children' => [
2075  '1' => [
2076  'el' => [
2077  'containerField_1' => [
2078  'displayCond' => 'FIELD:sheet.1.flexField_1:!=:foo',
2079  ],
2080  ],
2081  ],
2082  ],
2083  ],
2084  ],
2085  ],
2086  ],
2087  ],
2088  ],
2089  ],
2090  ],
2091  ],
2092  ],
2093  ],
2094 
2095  'remove flex section container field by flex field value on same flex sheet with specified flex sheet name with dot in flex field name' => [
2096  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/containerField_1',
2097  [
2098  'field_1' => [
2099  'data' => [
2100  'sheet_1' => [
2101  'lDEF' => [
2102  'flexField.1' => [
2103  'vDEF' => [
2104  0 => 'foo',
2105  ],
2106  ],
2107  'section_1' => [
2108  'el' => [
2109  '1' => [],
2110  ],
2111  ],
2112  ],
2113  ],
2114  ],
2115  ],
2116  ],
2117  [
2118  'columns' => [
2119  'field_1' => [
2120  'config' => [
2121  'type' => 'flex',
2122  'ds' => [
2123  'sheets' => [
2124  'sheet_1' => [
2125  'ROOT' => [
2126  'el' => [
2127  'flexField.1' => [],
2128  'section_1' => [
2129  'type' => 'array',
2130  'section' => 1,
2131  'children' => [
2132  '1' => [
2133  'el' => [
2134  'containerField_1' => [
2135  'displayCond' => 'FIELD:sheet_1.flexField.1:!=:foo',
2136  ],
2137  ],
2138  ],
2139  ],
2140  ],
2141  ],
2142  ],
2143  ],
2144  ],
2145  ],
2146  ],
2147  ],
2148  ],
2149  ],
2150  ],
2151 
2152  'remove flex section container field by flex field value on same flex sheet with specified flex sheet name with dot in flex sheet name and dot in flex field name' => [
2153  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/containerField_1',
2154  [
2155  'field_1' => [
2156  'data' => [
2157  'sheet.1' => [
2158  'lDEF' => [
2159  'flexField.1' => [
2160  'vDEF' => [
2161  0 => 'foo',
2162  ],
2163  ],
2164  'section_1' => [
2165  'el' => [
2166  '1' => [],
2167  ],
2168  ],
2169  ],
2170  ],
2171  ],
2172  ],
2173  ],
2174  [
2175  'columns' => [
2176  'field_1' => [
2177  'config' => [
2178  'type' => 'flex',
2179  'ds' => [
2180  'sheets' => [
2181  'sheet.1' => [
2182  'ROOT' => [
2183  'el' => [
2184  'flexField.1' => [],
2185  'section_1' => [
2186  'type' => 'array',
2187  'section' => 1,
2188  'children' => [
2189  '1' => [
2190  'el' => [
2191  'containerField_1' => [
2192  'displayCond' => 'FIELD:sheet.1.flexField.1:!=:foo',
2193  ],
2194  ],
2195  ],
2196  ],
2197  ],
2198  ],
2199  ],
2200  ],
2201  ],
2202  ],
2203  ],
2204  ],
2205  ],
2206  ],
2207  ],
2208 
2209  // flex section container field to flex field value of other sheet
2210  'remove flex section container field by flex field value on other flex sheet' => [
2211  'columns/field_1/config/ds/sheets/sheet_2/ROOT/el/section_1/children/1/el/containerField_1',
2212  [
2213  'field_1' => [
2214  'data' => [
2215  'sheet_1' => [
2216  'lDEF' => [
2217  'flexField_1' => [
2218  'vDEF' => [
2219  0 => 'foo',
2220  ],
2221  ],
2222  ],
2223  ],
2224  'sheet_2' => [
2225  'lDEF' => [
2226  'section_1' => [
2227  'el' => [
2228  '1' => [],
2229  ],
2230  ],
2231  ],
2232  ],
2233  ],
2234  ],
2235  ],
2236  [
2237  'columns' => [
2238  'field_1' => [
2239  'config' => [
2240  'type' => 'flex',
2241  'ds' => [
2242  'sheets' => [
2243  'sheet_1' => [
2244  'ROOT' => [
2245  'el' => [
2246  'flexField_1' => [],
2247  ],
2248  ],
2249  ],
2250  'sheet_2' => [
2251  'ROOT' => [
2252  'el' => [
2253  'section_1' => [
2254  'type' => 'array',
2255  'section' => 1,
2256  'children' => [
2257  '1' => [
2258  'el' => [
2259  'containerField_1' => [
2260  'displayCond' => 'FIELD:sheet_1.flexField_1:!=:foo',
2261  ],
2262  ],
2263  ],
2264  ],
2265  ],
2266  ],
2267  ],
2268  ],
2269  ],
2270  ],
2271  ],
2272  ],
2273  ],
2274  ],
2275  ],
2276 
2277  'remove flex section container field by flex field value on other flex sheet with dot in flex sheet name' => [
2278  'columns/field_1/config/ds/sheets/sheet_2/ROOT/el/section_1/children/1/el/containerField_1',
2279  [
2280  'field_1' => [
2281  'data' => [
2282  'sheet.1' => [
2283  'lDEF' => [
2284  'flexField_1' => [
2285  'vDEF' => [
2286  0 => 'foo',
2287  ],
2288  ],
2289  ],
2290  ],
2291  'sheet_2' => [
2292  'lDEF' => [
2293  'section_1' => [
2294  'el' => [
2295  '1' => [],
2296  ],
2297  ],
2298  ],
2299  ],
2300  ],
2301  ],
2302  ],
2303  [
2304  'columns' => [
2305  'field_1' => [
2306  'config' => [
2307  'type' => 'flex',
2308  'ds' => [
2309  'sheets' => [
2310  'sheet.1' => [
2311  'ROOT' => [
2312  'el' => [
2313  'flexField_1' => [],
2314  ],
2315  ],
2316  ],
2317  'sheet_2' => [
2318  'ROOT' => [
2319  'el' => [
2320  'section_1' => [
2321  'type' => 'array',
2322  'section' => 1,
2323  'children' => [
2324  '1' => [
2325  'el' => [
2326  'containerField_1' => [
2327  'displayCond' => 'FIELD:sheet.1.flexField_1:!=:foo',
2328  ],
2329  ],
2330  ],
2331  ],
2332  ],
2333  ],
2334  ],
2335  ],
2336  ],
2337  ],
2338  ],
2339  ],
2340  ],
2341  ],
2342  ],
2343 
2344  'remove flex section container field by flex field value on other flex sheet with dot in flex field name' => [
2345  'columns/field_1/config/ds/sheets/sheet_2/ROOT/el/section_1/children/1/el/containerField_1',
2346  [
2347  'field_1' => [
2348  'data' => [
2349  'sheet_1' => [
2350  'lDEF' => [
2351  'flexField.1' => [
2352  'vDEF' => [
2353  0 => 'foo',
2354  ],
2355  ],
2356  ],
2357  ],
2358  'sheet_2' => [
2359  'lDEF' => [
2360  'section_1' => [
2361  'el' => [
2362  '1' => [],
2363  ],
2364  ],
2365  ],
2366  ],
2367  ],
2368  ],
2369  ],
2370  [
2371  'columns' => [
2372  'field_1' => [
2373  'config' => [
2374  'type' => 'flex',
2375  'ds' => [
2376  'sheets' => [
2377  'sheet_1' => [
2378  'ROOT' => [
2379  'el' => [
2380  'flexField.1' => [],
2381  ],
2382  ],
2383  ],
2384  'sheet_2' => [
2385  'ROOT' => [
2386  'el' => [
2387  'section_1' => [
2388  'type' => 'array',
2389  'section' => 1,
2390  'children' => [
2391  '1' => [
2392  'el' => [
2393  'containerField_1' => [
2394  'displayCond' => 'FIELD:sheet_1.flexField.1:!=:foo',
2395  ],
2396  ],
2397  ],
2398  ],
2399  ],
2400  ],
2401  ],
2402  ],
2403  ],
2404  ],
2405  ],
2406  ],
2407  ],
2408  ],
2409  ],
2410 
2411  'remove flex section container field by flex field value on other flex sheet with dot in flex sheet name and dot in flex field name' => [
2412  'columns/field_1/config/ds/sheets/sheet_2/ROOT/el/section_1/children/1/el/containerField_1',
2413  [
2414  'field_1' => [
2415  'data' => [
2416  'sheet.1' => [
2417  'lDEF' => [
2418  'flexField.1' => [
2419  'vDEF' => [
2420  0 => 'foo',
2421  ],
2422  ],
2423  ],
2424  ],
2425  'sheet_2' => [
2426  'lDEF' => [
2427  'section_1' => [
2428  'el' => [
2429  '1' => [],
2430  ],
2431  ],
2432  ],
2433  ],
2434  ],
2435  ],
2436  ],
2437  [
2438  'columns' => [
2439  'field_1' => [
2440  'config' => [
2441  'type' => 'flex',
2442  'ds' => [
2443  'sheets' => [
2444  'sheet.1' => [
2445  'ROOT' => [
2446  'el' => [
2447  'flexField.1' => [],
2448  ],
2449  ],
2450  ],
2451  'sheet_2' => [
2452  'ROOT' => [
2453  'el' => [
2454  'section_1' => [
2455  'type' => 'array',
2456  'section' => 1,
2457  'children' => [
2458  '1' => [
2459  'el' => [
2460  'containerField_1' => [
2461  'displayCond' => 'FIELD:sheet.1.flexField.1:!=:foo',
2462  ],
2463  ],
2464  ],
2465  ],
2466  ],
2467  ],
2468  ],
2469  ],
2470  ],
2471  ],
2472  ],
2473  ],
2474  ],
2475  ],
2476  ],
2477 
2478  // flex section container field to flex field value of same container
2479  'remove flex section container field by flex container field value of same container' => [
2480  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/containerField_2',
2481  [
2482  'field_1' => [
2483  'data' => [
2484  'sheet_1' => [
2485  'lDEF' => [
2486  'section_1' => [
2487  'el' => [
2488  '1' => [
2489  'container_1' => [
2490  'el' => [
2491  'containerField_1' => [
2492  'vDEF' => 'foo',
2493  ],
2494  ],
2495  ],
2496  ],
2497  ],
2498  ],
2499  ],
2500  ],
2501  ],
2502  ],
2503  ],
2504  [
2505  'columns' => [
2506  'field_1' => [
2507  'config' => [
2508  'type' => 'flex',
2509  'ds' => [
2510  'sheets' => [
2511  'sheet_1' => [
2512  'ROOT' => [
2513  'el' => [
2514  'section_1' => [
2515  'type' => 'array',
2516  'section' => 1,
2517  'children' => [
2518  '1' => [
2519  'el' => [
2520  'containerField_1' => [],
2521  'containerField_2' => [
2522  'displayCond' => 'FIELD:containerField_1:!=:foo',
2523  ],
2524  ],
2525  ],
2526  ],
2527  ],
2528  ],
2529  ],
2530  ],
2531  ],
2532  ],
2533  ],
2534  ],
2535  ],
2536  ],
2537  ],
2538 
2539  'remove flex section container field by flex container field value of same container with dot in flex sheet name' => [
2540  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/containerField_2',
2541  [
2542  'field_1' => [
2543  'data' => [
2544  'sheet.1' => [
2545  'lDEF' => [
2546  'section_1' => [
2547  'el' => [
2548  '1' => [
2549  'container_1' => [
2550  'el' => [
2551  'containerField_1' => [
2552  'vDEF' => 'foo',
2553  ],
2554  ],
2555  ],
2556  ],
2557  ],
2558  ],
2559  ],
2560  ],
2561  ],
2562  ],
2563  ],
2564  [
2565  'columns' => [
2566  'field_1' => [
2567  'config' => [
2568  'type' => 'flex',
2569  'ds' => [
2570  'sheets' => [
2571  'sheet.1' => [
2572  'ROOT' => [
2573  'el' => [
2574  'section_1' => [
2575  'type' => 'array',
2576  'section' => 1,
2577  'children' => [
2578  '1' => [
2579  'el' => [
2580  'containerField_1' => [],
2581  'containerField_2' => [
2582  'displayCond' => 'FIELD:containerField_1:!=:foo',
2583  ],
2584  ],
2585  ],
2586  ],
2587  ],
2588  ],
2589  ],
2590  ],
2591  ],
2592  ],
2593  ],
2594  ],
2595  ],
2596  ],
2597  ],
2598 
2599  'remove flex section container field by flex container field value of same container with dot in container flex field name' => [
2600  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/containerField_2',
2601  [
2602  'field_1' => [
2603  'data' => [
2604  'sheet_1' => [
2605  'lDEF' => [
2606  'section_1' => [
2607  'el' => [
2608  '1' => [
2609  'container_1' => [
2610  'el' => [
2611  'containerField.1' => [
2612  'vDEF' => 'foo',
2613  ],
2614  ],
2615  ],
2616  ],
2617  ],
2618  ],
2619  ],
2620  ],
2621  ],
2622  ],
2623  ],
2624  [
2625  'columns' => [
2626  'field_1' => [
2627  'config' => [
2628  'type' => 'flex',
2629  'ds' => [
2630  'sheets' => [
2631  'sheet_1' => [
2632  'ROOT' => [
2633  'el' => [
2634  'section_1' => [
2635  'type' => 'array',
2636  'section' => 1,
2637  'children' => [
2638  '1' => [
2639  'el' => [
2640  'containerField.1' => [],
2641  'containerField_2' => [
2642  'displayCond' => 'FIELD:containerField.1:!=:foo',
2643  ],
2644  ],
2645  ],
2646  ],
2647  ],
2648  ],
2649  ],
2650  ],
2651  ],
2652  ],
2653  ],
2654  ],
2655  ],
2656  ],
2657  ],
2658 
2659  'remove flex section container field by flex container field value of same container with dot in flex sheet name and dot in container flex field name' => [
2660  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/containerField_2',
2661  [
2662  'field_1' => [
2663  'data' => [
2664  'sheet.1' => [
2665  'lDEF' => [
2666  'section_1' => [
2667  'el' => [
2668  '1' => [
2669  'container_1' => [
2670  'el' => [
2671  'containerField.1' => [
2672  'vDEF' => 'foo',
2673  ],
2674  ],
2675  ],
2676  ],
2677  ],
2678  ],
2679  ],
2680  ],
2681  ],
2682  ],
2683  ],
2684  [
2685  'columns' => [
2686  'field_1' => [
2687  'config' => [
2688  'type' => 'flex',
2689  'ds' => [
2690  'sheets' => [
2691  'sheet.1' => [
2692  'ROOT' => [
2693  'el' => [
2694  'section_1' => [
2695  'type' => 'array',
2696  'section' => 1,
2697  'children' => [
2698  '1' => [
2699  'el' => [
2700  'containerField.1' => [],
2701  'containerField_2' => [
2702  'displayCond' => 'FIELD:containerField.1:!=:foo',
2703  ],
2704  ],
2705  ],
2706  ],
2707  ],
2708  ],
2709  ],
2710  ],
2711  ],
2712  ],
2713  ],
2714  ],
2715  ],
2716  ],
2717  ],
2718 
2719  'remove flex section container field by flex container field value of same container with specified flex sheet name' => [
2720  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/containerField_2',
2721  [
2722  'field_1' => [
2723  'data' => [
2724  'sheet_1' => [
2725  'lDEF' => [
2726  'section_1' => [
2727  'el' => [
2728  '1' => [
2729  'container_1' => [
2730  'el' => [
2731  'containerField_1' => [
2732  'vDEF' => 'foo',
2733  ],
2734  ],
2735  ],
2736  ],
2737  ],
2738  ],
2739  ],
2740  ],
2741  ],
2742  ],
2743  ],
2744  [
2745  'columns' => [
2746  'field_1' => [
2747  'config' => [
2748  'type' => 'flex',
2749  'ds' => [
2750  'sheets' => [
2751  'sheet_1' => [
2752  'ROOT' => [
2753  'el' => [
2754  'section_1' => [
2755  'type' => 'array',
2756  'section' => 1,
2757  'children' => [
2758  '1' => [
2759  'el' => [
2760  'containerField_1' => [],
2761  'containerField_2' => [
2762  'displayCond' => 'FIELD:sheet_1.containerField_1:!=:foo',
2763  ],
2764  ],
2765  ],
2766  ],
2767  ],
2768  ],
2769  ],
2770  ],
2771  ],
2772  ],
2773  ],
2774  ],
2775  ],
2776  ],
2777  ],
2778 
2779  'remove flex section container field by flex container field value of same container with specified flex sheet name with dot in flex sheet name' => [
2780  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/containerField_2',
2781  [
2782  'field_1' => [
2783  'data' => [
2784  'sheet.1' => [
2785  'lDEF' => [
2786  'section_1' => [
2787  'el' => [
2788  '1' => [
2789  'container_1' => [
2790  'el' => [
2791  'containerField_1' => [
2792  'vDEF' => 'foo',
2793  ],
2794  ],
2795  ],
2796  ],
2797  ],
2798  ],
2799  ],
2800  ],
2801  ],
2802  ],
2803  ],
2804  [
2805  'columns' => [
2806  'field_1' => [
2807  'config' => [
2808  'type' => 'flex',
2809  'ds' => [
2810  'sheets' => [
2811  'sheet.1' => [
2812  'ROOT' => [
2813  'el' => [
2814  'section_1' => [
2815  'type' => 'array',
2816  'section' => 1,
2817  'children' => [
2818  '1' => [
2819  'el' => [
2820  'containerField_1' => [],
2821  'containerField_2' => [
2822  'displayCond' => 'FIELD:sheet.1.containerField_1:!=:foo',
2823  ],
2824  ],
2825  ],
2826  ],
2827  ],
2828  ],
2829  ],
2830  ],
2831  ],
2832  ],
2833  ],
2834  ],
2835  ],
2836  ],
2837  ],
2838 
2839  'remove flex section container field by flex container field value of same container with specified flex sheet name with dot in container flex field name' => [
2840  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/containerField_2',
2841  [
2842  'field_1' => [
2843  'data' => [
2844  'sheet_1' => [
2845  'lDEF' => [
2846  'section_1' => [
2847  'el' => [
2848  '1' => [
2849  'container_1' => [
2850  'el' => [
2851  'containerField.1' => [
2852  'vDEF' => 'foo',
2853  ],
2854  ],
2855  ],
2856  ],
2857  ],
2858  ],
2859  ],
2860  ],
2861  ],
2862  ],
2863  ],
2864  [
2865  'columns' => [
2866  'field_1' => [
2867  'config' => [
2868  'type' => 'flex',
2869  'ds' => [
2870  'sheets' => [
2871  'sheet_1' => [
2872  'ROOT' => [
2873  'el' => [
2874  'section_1' => [
2875  'type' => 'array',
2876  'section' => 1,
2877  'children' => [
2878  '1' => [
2879  'el' => [
2880  'containerField.1' => [],
2881  'containerField_2' => [
2882  'displayCond' => 'FIELD:sheet_1.containerField.1:!=:foo',
2883  ],
2884  ],
2885  ],
2886  ],
2887  ],
2888  ],
2889  ],
2890  ],
2891  ],
2892  ],
2893  ],
2894  ],
2895  ],
2896  ],
2897  ],
2898 
2899  'remove flex section container field by flex container field value of same container with specified flex sheet name with dot in flex sheet name and dot in container flex field name' => [
2900  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/containerField_2',
2901  [
2902  'field_1' => [
2903  'data' => [
2904  'sheet.1' => [
2905  'lDEF' => [
2906  'section_1' => [
2907  'el' => [
2908  '1' => [
2909  'container_1' => [
2910  'el' => [
2911  'containerField.1' => [
2912  'vDEF' => 'foo',
2913  ],
2914  ],
2915  ],
2916  ],
2917  ],
2918  ],
2919  ],
2920  ],
2921  ],
2922  ],
2923  ],
2924  [
2925  'columns' => [
2926  'field_1' => [
2927  'config' => [
2928  'type' => 'flex',
2929  'ds' => [
2930  'sheets' => [
2931  'sheet.1' => [
2932  'ROOT' => [
2933  'el' => [
2934  'section_1' => [
2935  'type' => 'array',
2936  'section' => 1,
2937  'children' => [
2938  '1' => [
2939  'el' => [
2940  'containerField.1' => [],
2941  'containerField_2' => [
2942  'displayCond' => 'FIELD:sheet.1.containerField.1:!=:foo',
2943  ],
2944  ],
2945  ],
2946  ],
2947  ],
2948  ],
2949  ],
2950  ],
2951  ],
2952  ],
2953  ],
2954  ],
2955  ],
2956  ],
2957  ],
2958 
2959  // flex section container field to flex field value of same container with naming clash to flex field value of same sheet
2960  'remove flex section container field by flex container field value of same container with naming clash' => [
2961  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/field_2',
2962  [
2963  'field_1' => [
2964  'data' => [
2965  'sheet_1' => [
2966  'lDEF' => [
2967  'field_1' => [
2968  'vDEF' => [
2969  0 => 'bar',
2970  ],
2971  ],
2972  'section_1' => [
2973  'el' => [
2974  '1' => [
2975  'container_1' => [
2976  'el' => [
2977  'field_1' => [
2978  'vDEF' => 'foo',
2979  ],
2980  ],
2981  ],
2982  ],
2983  ],
2984  ],
2985  ],
2986  ],
2987  ],
2988  ],
2989  ],
2990  [
2991  'columns' => [
2992  'field_1' => [
2993  'config' => [
2994  'type' => 'flex',
2995  'ds' => [
2996  'sheets' => [
2997  'sheet_1' => [
2998  'ROOT' => [
2999  'el' => [
3000  'section_1' => [
3001  'type' => 'array',
3002  'section' => 1,
3003  'children' => [
3004  '1' => [
3005  'el' => [
3006  'field_1' => [],
3007  'field_2' => [
3008  'displayCond' => 'FIELD:field_1:!=:foo',
3009  ],
3010  ],
3011  ],
3012  ],
3013  ],
3014  ],
3015  ],
3016  ],
3017  ],
3018  ],
3019  ],
3020  ],
3021  ],
3022  ],
3023  ],
3024 
3025  'remove flex section container field by flex container field value of same container with naming clash with dot in flex sheet name' => [
3026  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/field_2',
3027  [
3028  'field_1' => [
3029  'data' => [
3030  'sheet.1' => [
3031  'lDEF' => [
3032  'field_1' => [
3033  'vDEF' => [
3034  0 => 'bar',
3035  ],
3036  ],
3037  'section_1' => [
3038  'el' => [
3039  '1' => [
3040  'container_1' => [
3041  'el' => [
3042  'field_1' => [
3043  'vDEF' => 'foo',
3044  ],
3045  ],
3046  ],
3047  ],
3048  ],
3049  ],
3050  ],
3051  ],
3052  ],
3053  ],
3054  ],
3055  [
3056  'columns' => [
3057  'field_1' => [
3058  'config' => [
3059  'type' => 'flex',
3060  'ds' => [
3061  'sheets' => [
3062  'sheet.1' => [
3063  'ROOT' => [
3064  'el' => [
3065  'section_1' => [
3066  'type' => 'array',
3067  'section' => 1,
3068  'children' => [
3069  '1' => [
3070  'el' => [
3071  'field_1' => [],
3072  'field_2' => [
3073  'displayCond' => 'FIELD:field_1:!=:foo',
3074  ],
3075  ],
3076  ],
3077  ],
3078  ],
3079  ],
3080  ],
3081  ],
3082  ],
3083  ],
3084  ],
3085  ],
3086  ],
3087  ],
3088  ],
3089 
3090  'remove flex section container field by flex container field value of same container with naming clash with dot in flex field name' => [
3091  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/field_2',
3092  [
3093  'field_1' => [
3094  'data' => [
3095  'sheet_1' => [
3096  'lDEF' => [
3097  'field.1' => [
3098  'vDEF' => [
3099  0 => 'bar',
3100  ],
3101  ],
3102  'section_1' => [
3103  'el' => [
3104  '1' => [
3105  'container_1' => [
3106  'el' => [
3107  'field.1' => [
3108  'vDEF' => 'foo',
3109  ],
3110  ],
3111  ],
3112  ],
3113  ],
3114  ],
3115  ],
3116  ],
3117  ],
3118  ],
3119  ],
3120  [
3121  'columns' => [
3122  'field_1' => [
3123  'config' => [
3124  'type' => 'flex',
3125  'ds' => [
3126  'sheets' => [
3127  'sheet_1' => [
3128  'ROOT' => [
3129  'el' => [
3130  'section_1' => [
3131  'type' => 'array',
3132  'section' => 1,
3133  'children' => [
3134  '1' => [
3135  'el' => [
3136  'field.1' => [],
3137  'field_2' => [
3138  'displayCond' => 'FIELD:field.1:!=:foo',
3139  ],
3140  ],
3141  ],
3142  ],
3143  ],
3144  ],
3145  ],
3146  ],
3147  ],
3148  ],
3149  ],
3150  ],
3151  ],
3152  ],
3153  ],
3154 
3155  'remove flex section container field by flex container field value of same container with naming clash with dot in flex sheet name and dot in flex field name' => [
3156  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/field_2',
3157  [
3158  'field_1' => [
3159  'data' => [
3160  'sheet.1' => [
3161  'lDEF' => [
3162  'field.1' => [
3163  'vDEF' => [
3164  0 => 'bar',
3165  ],
3166  ],
3167  'section_1' => [
3168  'el' => [
3169  '1' => [
3170  'container_1' => [
3171  'el' => [
3172  'field.1' => [
3173  'vDEF' => 'foo',
3174  ],
3175  ],
3176  ],
3177  ],
3178  ],
3179  ],
3180  ],
3181  ],
3182  ],
3183  ],
3184  ],
3185  [
3186  'columns' => [
3187  'field_1' => [
3188  'config' => [
3189  'type' => 'flex',
3190  'ds' => [
3191  'sheets' => [
3192  'sheet.1' => [
3193  'ROOT' => [
3194  'el' => [
3195  'section_1' => [
3196  'type' => 'array',
3197  'section' => 1,
3198  'children' => [
3199  '1' => [
3200  'el' => [
3201  'field.1' => [],
3202  'field_2' => [
3203  'displayCond' => 'FIELD:field.1:!=:foo',
3204  ],
3205  ],
3206  ],
3207  ],
3208  ],
3209  ],
3210  ],
3211  ],
3212  ],
3213  ],
3214  ],
3215  ],
3216  ],
3217  ],
3218  ],
3219 
3220  'remove flex section container field by flex container field value of same container with naming clash with specified flex sheet name' => [
3221  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/field_2',
3222  [
3223  'field_1' => [
3224  'data' => [
3225  'sheet_1' => [
3226  'lDEF' => [
3227  'field_1' => [
3228  'vDEF' => [
3229  0 => 'bar',
3230  ],
3231  ],
3232  'section_1' => [
3233  'el' => [
3234  '1' => [
3235  'container_1' => [
3236  'el' => [
3237  'field_1' => [
3238  'vDEF' => 'foo',
3239  ],
3240  ],
3241  ],
3242  ],
3243  ],
3244  ],
3245  ],
3246  ],
3247  ],
3248  ],
3249  ],
3250  [
3251  'columns' => [
3252  'field_1' => [
3253  'config' => [
3254  'type' => 'flex',
3255  'ds' => [
3256  'sheets' => [
3257  'sheet_1' => [
3258  'ROOT' => [
3259  'el' => [
3260  'section_1' => [
3261  'type' => 'array',
3262  'section' => 1,
3263  'children' => [
3264  '1' => [
3265  'el' => [
3266  'field_1' => [],
3267  'field_2' => [
3268  'displayCond' => 'FIELD:sheet_1.field_1:!=:foo',
3269  ],
3270  ],
3271  ],
3272  ],
3273  ],
3274  ],
3275  ],
3276  ],
3277  ],
3278  ],
3279  ],
3280  ],
3281  ],
3282  ],
3283  ],
3284 
3285  'remove flex section container field by flex container field value of same container with naming clash with specified flex sheet name with dot in flex sheet name' => [
3286  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/field_2',
3287  [
3288  'field_1' => [
3289  'data' => [
3290  'sheet.1' => [
3291  'lDEF' => [
3292  'field_1' => [
3293  'vDEF' => [
3294  0 => 'bar',
3295  ],
3296  ],
3297  'section_1' => [
3298  'el' => [
3299  '1' => [
3300  'container_1' => [
3301  'el' => [
3302  'field_1' => [
3303  'vDEF' => 'foo',
3304  ],
3305  ],
3306  ],
3307  ],
3308  ],
3309  ],
3310  ],
3311  ],
3312  ],
3313  ],
3314  ],
3315  [
3316  'columns' => [
3317  'field_1' => [
3318  'config' => [
3319  'type' => 'flex',
3320  'ds' => [
3321  'sheets' => [
3322  'sheet.1' => [
3323  'ROOT' => [
3324  'el' => [
3325  'section_1' => [
3326  'type' => 'array',
3327  'section' => 1,
3328  'children' => [
3329  '1' => [
3330  'el' => [
3331  'field_1' => [],
3332  'field_2' => [
3333  'displayCond' => 'FIELD:sheet.1.field_1:!=:foo',
3334  ],
3335  ],
3336  ],
3337  ],
3338  ],
3339  ],
3340  ],
3341  ],
3342  ],
3343  ],
3344  ],
3345  ],
3346  ],
3347  ],
3348  ],
3349 
3350  'remove flex section container field by flex container field value of same container with naming clash with specified flex sheet name with dot in flex field name' => [
3351  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1/children/1/el/field_2',
3352  [
3353  'field_1' => [
3354  'data' => [
3355  'sheet_1' => [
3356  'lDEF' => [
3357  'field.1' => [
3358  'vDEF' => [
3359  0 => 'bar',
3360  ],
3361  ],
3362  'section_1' => [
3363  'el' => [
3364  '1' => [
3365  'container_1' => [
3366  'el' => [
3367  'field.1' => [
3368  'vDEF' => 'foo',
3369  ],
3370  ],
3371  ],
3372  ],
3373  ],
3374  ],
3375  ],
3376  ],
3377  ],
3378  ],
3379  ],
3380  [
3381  'columns' => [
3382  'field_1' => [
3383  'config' => [
3384  'type' => 'flex',
3385  'ds' => [
3386  'sheets' => [
3387  'sheet_1' => [
3388  'ROOT' => [
3389  'el' => [
3390  'section_1' => [
3391  'type' => 'array',
3392  'section' => 1,
3393  'children' => [
3394  '1' => [
3395  'el' => [
3396  'field.1' => [],
3397  'field_2' => [
3398  'displayCond' => 'FIELD:sheet_1.field.1:!=:foo',
3399  ],
3400  ],
3401  ],
3402  ],
3403  ],
3404  ],
3405  ],
3406  ],
3407  ],
3408  ],
3409  ],
3410  ],
3411  ],
3412  ],
3413  ],
3414 
3415  'remove flex section container field by flex container field value of same container with naming clash with specified flex sheet name with dot in flex sheet name and dot in flex field name' => [
3416  'columns/field_1/config/ds/sheets/sheet.1/ROOT/el/section_1/children/1/el/field_2',
3417  [
3418  'field_1' => [
3419  'data' => [
3420  'sheet.1' => [
3421  'lDEF' => [
3422  'field.1' => [
3423  'vDEF' => [
3424  0 => 'bar',
3425  ],
3426  ],
3427  'section_1' => [
3428  'el' => [
3429  '1' => [
3430  'container_1' => [
3431  'el' => [
3432  'field.1' => [
3433  'vDEF' => 'foo',
3434  ],
3435  ],
3436  ],
3437  ],
3438  ],
3439  ],
3440  ],
3441  ],
3442  ],
3443  ],
3444  ],
3445  [
3446  'columns' => [
3447  'field_1' => [
3448  'config' => [
3449  'type' => 'flex',
3450  'ds' => [
3451  'sheets' => [
3452  'sheet.1' => [
3453  'ROOT' => [
3454  'el' => [
3455  'section_1' => [
3456  'type' => 'array',
3457  'section' => 1,
3458  'children' => [
3459  '1' => [
3460  'el' => [
3461  'field.1' => [],
3462  'field_2' => [
3463  'displayCond' => 'FIELD:sheet.1.field.1:!=:foo',
3464  ],
3465  ],
3466  ],
3467  ],
3468  ],
3469  ],
3470  ],
3471  ],
3472  ],
3473  ],
3474  ],
3475  ],
3476  ],
3477  ],
3478  ],
3479 
3480  // Some special scenarios
3481  'remove flex sheet by nested OR condition' => [
3482  'columns/field_1/config/ds/sheets/sheet_2',
3483  [
3484  'field_1' => [
3485  'data' => [
3486  'sheet_1' => [
3487  'lDEF' => [
3488  'field_1' => [
3489  'vDEF' => [
3490  0 => 'foo',
3491  ],
3492  ],
3493  ],
3494  ],
3495  ],
3496  ],
3497  ],
3498  [
3499  'columns' => [
3500  'field_1' => [
3501  'config' => [
3502  'type' => 'flex',
3503  'ds' => [
3504  'sheets' => [
3505  'sheet_1' => [
3506  'ROOT' => [
3507  'type' => 'array',
3508  'el' => [
3509  'field_1' => [],
3510  ],
3511  ],
3512  ],
3513  'sheet_2' => [
3514  'ROOT' => [
3515  'type' => 'array',
3516  'el' => [],
3517  'displayCond' => [
3518  'OR' => [
3519  'FIELD:sheet_1.field_1:=:LIST',
3520  'FIELD:sheet_1.field_1:!=:foo',
3521  ],
3522  ],
3523  ],
3524  ],
3525  ],
3526  ],
3527  ],
3528  ],
3529  ],
3530  ],
3531  ],
3532 
3533  // flex section container has a display condition
3534  'remove flex section container' => [
3535  'columns/field_1/config/ds/sheets/sheet_1/ROOT/el/section_1',
3536  [
3537  'field_1' => [
3538  'data' => [
3539  'sheet_1' => [
3540  'lDEF' => [
3541  'field_1' => [
3542  'vDEF' => [
3543  0 => 'foo',
3544  ],
3545  ],
3546  ],
3547  ],
3548  ],
3549  ],
3550  ],
3551  [
3552  'columns' => [
3553  'field_1' => [
3554  'config' => [
3555  'type' => 'flex',
3556  'ds' => [
3557  'sheets' => [
3558  'sheet_1' => [
3559  'ROOT' => [
3560  'el' => [
3561  'field_1' => [],
3562  'section_1' => [
3563  'type' => 'array',
3564  'section' => 1,
3565  'displayCond' => 'FIELD:field_1:!=:foo',
3566  'children' => [],
3567  ],
3568  ],
3569  ],
3570  ],
3571  ],
3572  ],
3573  ],
3574  ],
3575  ],
3576  ],
3577  ],
3578 
3579  // field name to sheet name overlap
3580  'remove flex field even if sheet name and field name overlap' => [
3581  'columns/field_1/config/ds/sheets/field_1/ROOT/el/field_2',
3582  [
3583  'field_1' => [
3584  'data' => [
3585  'field_1' => [
3586  'lDEF' => [
3587  'field_1' => [
3588  'vDEF' => [
3589  0 => 'foo',
3590  ],
3591  ],
3592  ],
3593  ],
3594  ],
3595  ],
3596  ],
3597  [
3598  'columns' => [
3599  'field_1' => [
3600  'config' => [
3601  'type' => 'flex',
3602  'ds' => [
3603  'sheets' => [
3604  'field_1' => [
3605  'ROOT' => [
3606  'el' => [
3607  'field_1' => [],
3608  'field_2' => [
3609  'displayCond' => 'FIELD:field_1.field_1:!=:foo',
3610  ],
3611  ],
3612  ],
3613  ],
3614  ],
3615  ],
3616  ],
3617  ],
3618  ],
3619  ],
3620  ],
3621 
3622  ];
3623  }
3624 
3632  public function ‪addDataRemovesTcaReferencingOtherFieldsInDisplayCondition($processedTcaFieldToBeRemovedPath, array $databaseRow, array $processedTca)
3633  {
3634  $input = [
3635  'databaseRow' => $databaseRow,
3636  'processedTca' => $processedTca,
3637  ];
3638  $expected = ‪ArrayUtility::removeByPath($input, 'processedTca/' . $processedTcaFieldToBeRemovedPath);
3639  self::assertSame($expected, (new ‪EvaluateDisplayConditions())->addData($input));
3640  }
3641 
3652  {
3653  return [
3654  'Field is not greater zero if not given' => [
3655  'FIELD:uid:>:0',
3656  [],
3657  false,
3658  ],
3659  'Field is not equal 0 if not given' => [
3660  'FIELD:uid:=:0',
3661  [],
3662  false,
3663  ],
3664  'Field is not greater zero if empty array given' => [
3665  'FIELD:foo:>:0',
3666  ['foo' => []],
3667  false,
3668  ],
3669  'Field is not greater than or equal to zero if empty array given' => [
3670  'FIELD:foo:>=:0',
3671  ['foo' => []],
3672  false,
3673  ],
3674  'Field is less than 1 if empty array given' => [
3675  'FIELD:foo:<:1',
3676  ['foo' => []],
3677  true,
3678  ],
3679  'Field is less than or equal to 1 if empty array given' => [
3680  'FIELD:foo:<=:1',
3681  ['foo' => []],
3682  true,
3683  ],
3684  'Field does not equal 0 if empty array given' => [
3685  'FIELD:foo:=:0',
3686  ['foo' => []],
3687  false,
3688  ],
3689  'Field value string comparison' => [
3690  'FIELD:foo:=:bar',
3691  ['foo' => 'bar'],
3692  true,
3693  ],
3694  'Field value string comparison against list' => [
3695  'FIELD:foo:IN:bar,baz',
3696  ['foo' => 'baz'],
3697  true,
3698  ],
3699  'Field value comparison of 1 against multi-value field of 5 returns true' => [
3700  'FIELD:content:BIT:1',
3701  ['content' => '5'],
3702  true,
3703  ],
3704  'Field value comparison of 2 against multi-value field of 5 returns false' => [
3705  'FIELD:content:BIT:2',
3706  ['content' => '5'],
3707  false,
3708  ],
3709  'Field value of 5 negated comparison against multi-value field of 5 returns false' => [
3710  'FIELD:content:!BIT:5',
3711  ['content' => '5'],
3712  false,
3713  ],
3714  'Field value comparison for required value is false for different value' => [
3715  'FIELD:foo:REQ:FALSE',
3716  ['foo' => 'bar'],
3717  false,
3718  ],
3719  'Field value string not equal comparison' => [
3720  'FIELD:foo:!=:baz',
3721  ['foo' => 'bar'],
3722  true,
3723  ],
3724  'Field value string not equal comparison against list' => [
3725  'FIELD:foo:!IN:bar,baz',
3726  ['foo' => 'foo'],
3727  true,
3728  ],
3729  'Field value in range' => [
3730  'FIELD:uid:-:3-42',
3731  ['uid' => '23'],
3732  true,
3733  ],
3734  'Field value greater than' => [
3735  'FIELD:uid:>=:42',
3736  ['uid' => '23'],
3737  false,
3738  ],
3739  'Field value containing colons' => [
3740  'FIELD:foo:=:x:y:z',
3741  ['foo' => 'x:y:z'],
3742  true,
3743  ],
3744  'New is TRUE for new comparison with TRUE' => [
3745  'REC:NEW:TRUE',
3746  ['uid' => null],
3747  true,
3748  ],
3749  'New is FALSE for new comparison with FALSE' => [
3750  'REC:NEW:FALSE',
3751  ['uid' => null],
3752  false,
3753  ],
3754  'New is FALSE for not new element' => [
3755  'REC:NEW:TRUE',
3756  ['uid' => 42],
3757  false,
3758  ],
3759  'New is TRUE for not new element compared to FALSE' => [
3760  'REC:NEW:FALSE',
3761  ['uid' => 42],
3762  true,
3763  ],
3764  'Version is TRUE for versioned row' => [
3765  'VERSION:IS:TRUE',
3766  [
3767  'uid' => 42,
3768  't3ver_oid' => 12,
3769  ],
3770  true,
3771  ],
3772  'Version is TRUE for not versioned row compared with FALSE' => [
3773  'VERSION:IS:FALSE',
3774  [
3775  'uid' => 42,
3776  't3ver_oid' => 0,
3777  ],
3778  true,
3779  ],
3780  'Version is TRUE for NULL row compared with TRUE' => [
3781  'VERSION:IS:TRUE',
3782  [
3783  'uid' => null,
3784  'pid' => null,
3785  ],
3786  false,
3787  ],
3788  'Single condition with AND compares to TRUE if the one is OK' => [
3789  [
3790  'AND' => [
3791  'FIELD:testField:>:9',
3792  ],
3793  ],
3794  [
3795  'testField' => 10,
3796  ],
3797  true,
3798  ],
3799  'Multiple conditions with AND compare to TRUE if all are OK' => [
3800  [
3801  'AND' => [
3802  'FIELD:testField:>:9',
3803  'FIELD:testField:<:11',
3804  ],
3805  ],
3806  [
3807  'testField' => 10,
3808  ],
3809  true,
3810  ],
3811  'Multiple conditions with AND compare to FALSE if one fails' => [
3812  [
3813  'AND' => [
3814  'FIELD:testField:>:9',
3815  'FIELD:testField:<:11',
3816  ],
3817  ],
3818  [
3819  'testField' => 99,
3820  ],
3821  false,
3822  ],
3823  'Single condition with OR compares to TRUE if the one is OK' => [
3824  [
3825  'OR' => [
3826  'FIELD:testField:>:9',
3827  ],
3828  ],
3829  [
3830  'testField' => 10,
3831  ],
3832  true,
3833  ],
3834  'Multiple conditions with OR compare to TRUE if one is OK' => [
3835  [
3836  'OR' => [
3837  'FIELD:testField:<:9',
3838  'FIELD:testField:<:11',
3839  ],
3840  ],
3841  [
3842  'testField' => 10,
3843  ],
3844  true,
3845  ],
3846  'Multiple conditions with OR compare to FALSE is all fail' => [
3847  [
3848  'OR' => [
3849  'FIELD:testField:<:9',
3850  'FIELD:testField:<:11',
3851  ],
3852  ],
3853  [
3854  'testField' => 99,
3855  ],
3856  false,
3857  ],
3858  'Multiple nested conditions evaluate to TRUE' => [
3859  [
3860  'AND' => [
3861  'FIELD:testField:>:9',
3862  'OR' => [
3863  'FIELD:testField:<:100',
3864  'FIELD:testField:>:-100',
3865  ],
3866  ],
3867  ],
3868  [
3869  'testField' => 10,
3870  ],
3871  true,
3872  ],
3873  'Multiple nested conditions evaluate to FALSE' => [
3874  [
3875  'AND' => [
3876  'FIELD:testField:>:9',
3877  'OR' => [
3878  'FIELD:testField:<:100',
3879  'FIELD:testField:>:-100',
3880  ],
3881  ],
3882  ],
3883  [
3884  'testField' => -999,
3885  ],
3886  false,
3887  ],
3888  ];
3889  }
3890 
3898  public function ‪matchConditionStrings($condition, array $record, $expectedResult)
3899  {
3900  $input = [
3901  'databaseRow' => $record,
3902  'processedTca' => [
3903  'columns' => [
3904  'testField' => [
3905  'displayCond' => $condition,
3906  'config' => [
3907  'type' => 'input',
3908  ],
3909  ],
3910  ],
3911  ],
3912  ];
3913 
3914  $backendUserAuthenticationProphecy = $this->prophesize(BackendUserAuthentication::class);
3915  ‪$GLOBALS['BE_USER'] = $backendUserAuthenticationProphecy->reveal();
3916 
3917  $expected = $input;
3918  if ($expectedResult) {
3919  // displayCond vanished from result array after this data provider is done
3920  unset($expected['processedTca']['columns']['testField']['displayCond']);
3921  } else {
3922  unset($expected['processedTca']['columns']['testField']);
3923  }
3924  self::assertSame($expected, (new ‪EvaluateDisplayConditions())->addData($input));
3925  }
3926 
3934  public function ‪matchConditionStringsWithRecordTestFieldBeingArray($condition, array $record, $expectedResult)
3935  {
3936  $input = [
3937  'processedTca' => [
3938  'columns' => [
3939  'testField' => [
3940  'displayCond' => $condition,
3941  'config' => [
3942  'type' => 'input',
3943  ],
3944  ],
3945  ],
3946  ],
3947  ];
3948 
3949  $input['databaseRow'] = $record;
3950  if (!empty($record['testField'])) {
3951  $input['databaseRow'] = [
3952  'testField' => [
3953  'key' => $record['testField'],
3954  ],
3955  ];
3956  }
3957 
3958  $backendUserAuthenticationProphecy = $this->prophesize(BackendUserAuthentication::class);
3959  ‪$GLOBALS['BE_USER'] = $backendUserAuthenticationProphecy->reveal();
3960 
3961  $expected = $input;
3962  if ($expectedResult) {
3963  // displayCond vanished from result array after this data provider is done
3964  unset($expected['processedTca']['columns']['testField']['displayCond']);
3965  } else {
3966  unset($expected['processedTca']['columns']['testField']);
3967  }
3968  self::assertSame($expected, (new ‪EvaluateDisplayConditions())->addData($input));
3969  }
3970 
3975  {
3976  $input = [
3977  'databaseRow' => [],
3978  'processedTca' => [
3979  'columns' => [
3980  'aField' => [
3981  'displayCond' => 'HIDE_FOR_NON_ADMINS',
3982  'config' => [
3983  'type' => 'input',
3984  ],
3985  ],
3986  ],
3987  ],
3988  ];
3989 
3991  $backendUserProphecy = $this->prophesize(BackendUserAuthentication::class);
3992  ‪$GLOBALS['BE_USER'] = $backendUserProphecy->reveal();
3993  $backendUserProphecy->isAdmin()->shouldBeCalled()->willReturn(true);
3994 
3995  $expected = $input;
3996  unset($expected['processedTca']['columns']['aField']['displayCond']);
3997 
3998  self::assertSame($expected, (new ‪EvaluateDisplayConditions())->addData($input));
3999  }
4000 
4005  {
4006  $input = [
4007  'databaseRow' => [],
4008  'processedTca' => [
4009  'columns' => [
4010  'aField' => [
4011  'displayCond' => 'HIDE_FOR_NON_ADMINS',
4012  'config' => [
4013  'type' => 'input',
4014  ],
4015  ],
4016  ],
4017  ],
4018  ];
4019 
4021  $backendUserProphecy = $this->prophesize(BackendUserAuthentication::class);
4022  ‪$GLOBALS['BE_USER'] = $backendUserProphecy->reveal();
4023  $backendUserProphecy->isAdmin()->shouldBeCalled()->willReturn(false);
4024 
4025  $expected = $input;
4026  unset($expected['processedTca']['columns']['aField']);
4027  self::assertSame($expected, (new ‪EvaluateDisplayConditions())->addData($input));
4028  }
4029 }
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfConditionTypeIsUnknown
‪addDataThrowsExceptionIfConditionTypeIsUnknown()
Definition: EvaluateDisplayConditionsTest.php:101
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfMultipleConditionsAreNotCombinedWithAndOrOr
‪addDataThrowsExceptionIfMultipleConditionsAreNotCombinedWithAndOrOr()
Definition: EvaluateDisplayConditionsTest.php:34
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFlexSheetNameAndFieldNameCombinationsOverlap
‪addDataThrowsExceptionIfFlexSheetNameAndFieldNameCombinationsOverlap()
Definition: EvaluateDisplayConditionsTest.php:674
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfRecordConditionHasNoNewKeyword
‪addDataThrowsExceptionIfRecordConditionHasNoNewKeyword()
Definition: EvaluateDisplayConditionsTest.php:281
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataRemovesTcaReferencingOtherFieldsInDisplayCondition
‪addDataRemovesTcaReferencingOtherFieldsInDisplayCondition($processedTcaFieldToBeRemovedPath, array $databaseRow, array $processedTca)
Definition: EvaluateDisplayConditionsTest.php:3632
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataRemovesTcaReferencingOtherFieldsInDisplayConditionDataProvider
‪array addDataRemovesTcaReferencingOtherFieldsInDisplayConditionDataProvider()
Definition: EvaluateDisplayConditionsTest.php:914
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFieldConditionRangeComparisonHasInvalidOperand
‪addDataThrowsExceptionIfFieldConditionRangeComparisonHasInvalidOperand()
Definition: EvaluateDisplayConditionsTest.php:241
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfVersionConditionHasNoUidInDatabaseRow
‪addDataThrowsExceptionIfVersionConditionHasNoUidInDatabaseRow()
Definition: EvaluateDisplayConditionsTest.php:461
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\matchConditionStringsWithRecordTestFieldBeingArray
‪matchConditionStringsWithRecordTestFieldBeingArray($condition, array $record, $expectedResult)
Definition: EvaluateDisplayConditionsTest.php:3934
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest
Definition: EvaluateDisplayConditionsTest.php:30
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfRecordConditionHasNoUidInDatabaseRow
‪addDataThrowsExceptionIfRecordConditionHasNoUidInDatabaseRow()
Definition: EvaluateDisplayConditionsTest.php:361
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFlexFieldReferencingFlexFieldIsNotFoundInFieldValue
‪addDataThrowsExceptionIfFlexFieldReferencingFlexFieldIsNotFoundInFieldValue()
Definition: EvaluateDisplayConditionsTest.php:816
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataResolvesAllUserParameters
‪addDataResolvesAllUserParameters()
Definition: EvaluateDisplayConditionsTest.php:544
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFlexSheetConditionReferencesFieldFromSameSheet
‪addDataThrowsExceptionIfFlexSheetConditionReferencesFieldFromSameSheet()
Definition: EvaluateDisplayConditionsTest.php:714
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfRecordConditionHasNoOperand
‪addDataThrowsExceptionIfRecordConditionHasNoOperand()
Definition: EvaluateDisplayConditionsTest.php:321
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfVersionConditionHasNoIsKeyword
‪addDataThrowsExceptionIfVersionConditionHasNoIsKeyword()
Definition: EvaluateDisplayConditionsTest.php:381
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\matchConditionStrings
‪matchConditionStrings($condition, array $record, $expectedResult)
Definition: EvaluateDisplayConditionsTest.php:3898
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataPassesFlexContextToUserConditionCallback
‪bool addDataPassesFlexContextToUserConditionCallback(array $parameter)
Definition: EvaluateDisplayConditionsTest.php:635
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfVersionConditionHasInvalidOperand
‪addDataThrowsExceptionIfVersionConditionHasInvalidOperand()
Definition: EvaluateDisplayConditionsTest.php:441
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFieldConditionRangeComparisonHasInvalidMaxOperand
‪addDataThrowsExceptionIfFieldConditionRangeComparisonHasInvalidMaxOperand()
Definition: EvaluateDisplayConditionsTest.php:261
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\matchHideForNonAdminsReturnsTrueIfBackendUserIsAdmin
‪matchHideForNonAdminsReturnsTrueIfBackendUserIsAdmin()
Definition: EvaluateDisplayConditionsTest.php:3974
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFieldConditionHasNoFieldName
‪addDataThrowsExceptionIfFieldConditionHasNoFieldName()
Definition: EvaluateDisplayConditionsTest.php:121
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataEvaluatesUserCondition
‪addDataEvaluatesUserCondition()
Definition: EvaluateDisplayConditionsTest.php:501
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFlexFieldFieldConditionReferencesNotExistingFieldValue
‪addDataThrowsExceptionIfFlexFieldFieldConditionReferencesNotExistingFieldValue()
Definition: EvaluateDisplayConditionsTest.php:780
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFieldConditionHasNoOperand
‪addDataThrowsExceptionIfFieldConditionHasNoOperand()
Definition: EvaluateDisplayConditionsTest.php:181
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\matchHideForNonAdminsReturnsFalseIfBackendUserIsNotAdmin
‪matchHideForNonAdminsReturnsFalseIfBackendUserIsNotAdmin()
Definition: EvaluateDisplayConditionsTest.php:4004
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfVersionConditionHasInvalidIsKeyword
‪addDataThrowsExceptionIfVersionConditionHasInvalidIsKeyword()
Definition: EvaluateDisplayConditionsTest.php:401
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataEvaluatesUserConditionCallback
‪addDataEvaluatesUserConditionCallback(array $parameter)
Definition: EvaluateDisplayConditionsTest.php:525
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFieldConditionHasInvalidOperator
‪addDataThrowsExceptionIfFieldConditionHasInvalidOperator()
Definition: EvaluateDisplayConditionsTest.php:161
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfConditionIsNotStringOrArray
‪addDataThrowsExceptionIfConditionIsNotStringOrArray()
Definition: EvaluateDisplayConditionsTest.php:81
‪TYPO3\CMS\Core\Utility\ArrayUtility\removeByPath
‪static array removeByPath(array $array, $path, $delimiter='/')
Definition: ArrayUtility.php:316
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfVersionConditionHasNoOperand
‪addDataThrowsExceptionIfVersionConditionHasNoOperand()
Definition: EvaluateDisplayConditionsTest.php:421
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFlexSectionContainerFoundNoReferencedFieldValue
‪addDataThrowsExceptionIfFlexSectionContainerFoundNoReferencedFieldValue()
Definition: EvaluateDisplayConditionsTest.php:851
‪TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions
Definition: EvaluateDisplayConditions.php:30
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataTrowsExceptionIfFlexFieldSheetConditionReferencesNotExistingFieldValue
‪addDataTrowsExceptionIfFlexFieldSheetConditionReferencesNotExistingFieldValue()
Definition: EvaluateDisplayConditionsTest.php:748
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFieldConditionReqHasInvalidOperand
‪addDataThrowsExceptionIfFieldConditionReqHasInvalidOperand()
Definition: EvaluateDisplayConditionsTest.php:201
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataPassesFlexContextToUserCondition
‪addDataPassesFlexContextToUserCondition()
Definition: EvaluateDisplayConditionsTest.php:592
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfUserConditionHasNoUserfuncSpecified
‪addDataThrowsExceptionIfUserConditionHasNoUserfuncSpecified()
Definition: EvaluateDisplayConditionsTest.php:481
‪TYPO3\CMS\Core\Utility\ArrayUtility
Definition: ArrayUtility.php:24
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFieldConditionNumberComparisonHasInvalidOperand
‪addDataThrowsExceptionIfFieldConditionNumberComparisonHasInvalidOperand()
Definition: EvaluateDisplayConditionsTest.php:221
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfFieldConditionHasNoOperator
‪addDataThrowsExceptionIfFieldConditionHasNoOperator()
Definition: EvaluateDisplayConditionsTest.php:141
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfRecordConditionHasInvalidNewKeyword
‪addDataThrowsExceptionIfRecordConditionHasInvalidNewKeyword()
Definition: EvaluateDisplayConditionsTest.php:301
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIAConditionHasNoStringAsKey
‪addDataThrowsExceptionIAConditionHasNoStringAsKey()
Definition: EvaluateDisplayConditionsTest.php:59
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataResolvesAllUserParametersCallback
‪bool addDataResolvesAllUserParametersCallback(array $parameter)
Definition: EvaluateDisplayConditionsTest.php:574
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\conditionStringDataProvider
‪array conditionStringDataProvider()
Definition: EvaluateDisplayConditionsTest.php:3651
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\EvaluateDisplayConditionsTest\addDataThrowsExceptionIfRecordConditionHasInvalidOperand
‪addDataThrowsExceptionIfRecordConditionHasInvalidOperand()
Definition: EvaluateDisplayConditionsTest.php:341
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider
Definition: DatabaseDefaultLanguagePageRowTest.php:18