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