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