‪TYPO3CMS  ‪main
RichtextTest.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 
21 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
22 
23 final class ‪RichtextTest extends UnitTestCase
24 {
29  {
30  $fieldConfig = [
31  'type' => 'text',
32  'enableRichtext' => true,
33  ];
34  $pageTsConfig = [
35  'classes.' => [
36  'aClass' => 'aConfig',
37  ],
38  'default.' => [
39  'removeComments' => '1',
40  ],
41  'config.' => [
42  'aTable.' => [
43  'aField.' => [
44  'types.' => [
45  'textmedia.' => [
46  'proc.' => [
47  'overruleMode' => 'myTransformation',
48  ],
49  ],
50  ],
51  ],
52  ],
53  ],
54  ];
55  $expected = [
56  'classes.' => [
57  'aClass' => 'aConfig',
58  ],
59  'removeComments' => '1',
60  'proc.' => [
61  'overruleMode' => 'myTransformation',
62  ],
63  'preset' => 'default',
64  'classes' => [
65  'aClass' => 'aConfig',
66  ],
67  'proc' => [
68  'overruleMode' => 'myTransformation',
69  ],
70  ];
71  // Accessible mock to $subject since getRtePageTsConfigOfPid calls BackendUtility::getPagesTSconfig()
72  // which can't be mocked in a sane way
73  $subject = $this->getAccessibleMock(Richtext::class, ['getRtePageTsConfigOfPid'], [], '', false);
74  $subject->expects(self::once())->method('getRtePageTsConfigOfPid')->with(42)->willReturn($pageTsConfig);
75  ‪$output = $subject->getConfiguration('aTable', 'aField', 42, 'textmedia', $fieldConfig);
76  self::assertSame($expected, ‪$output);
77  }
78 
83  {
84  $fieldConfig = [
85  'type' => 'text',
86  'enableRichtext' => true,
87  ];
88  $pageTsConfig = [
89  'classes.' => [
90  'aClass' => 'aConfig',
91  ],
92  'default.' => [
93  'removeComments' => '1',
94  ],
95  'config.' => [
96  'aTable.' => [
97  'aField.' => [
98  'proc.' => [
99  'overruleMode' => 'myTransformation',
100  ],
101  ],
102  ],
103  ],
104  ];
105  $expected = [
106  'classes.' => [
107  'aClass' => 'aConfig',
108  ],
109  'removeComments' => '1',
110  'proc.' => [
111  'overruleMode' => 'myTransformation',
112  ],
113  'preset' => 'default',
114  'classes' => [
115  'aClass' => 'aConfig',
116  ],
117  'proc' => [
118  'overruleMode' => 'myTransformation',
119  ],
120  ];
121  // Accessible mock to $subject since getRtePageTsConfigOfPid calls BackendUtility::getPagesTSconfig()
122  // which can't be mocked in a sane way
123  $subject = $this->getAccessibleMock(Richtext::class, ['getRtePageTsConfigOfPid'], [], '', false);
124  $subject->expects(self::once())->method('getRtePageTsConfigOfPid')->with(42)->willReturn($pageTsConfig);
125  ‪$output = $subject->getConfiguration('aTable', 'aField', 42, 'textmedia', $fieldConfig);
126  self::assertSame($expected, ‪$output);
127  }
128 
133  {
134  $fieldConfig = [
135  'type' => 'text',
136  'enableRichtext' => true,
137  ];
138  $pageTsConfig = [
139  'classes.' => [
140  'aClass' => 'aConfig',
141  ],
142  'default.' => [
143  'removeComments' => '1',
144  ],
145  ];
146  $expected = [
147  'classes.' => [
148  'aClass' => 'aConfig',
149  ],
150  'removeComments' => '1',
151  'preset' => 'default',
152  'classes' => [
153  'aClass' => 'aConfig',
154  ],
155  'proc.' => [
156  'overruleMode' => 'default',
157  ],
158  ];
159  // Accessible mock to $subject since getRtePageTsConfigOfPid calls BackendUtility::getPagesTSconfig()
160  // which can't be mocked in a sane way
161  $subject = $this->getAccessibleMock(Richtext::class, ['getRtePageTsConfigOfPid'], [], '', false);
162  $subject->expects(self::once())->method('getRtePageTsConfigOfPid')->with(42)->willReturn($pageTsConfig);
163  ‪$output = $subject->getConfiguration('aTable', 'aField', 42, 'textmedia', $fieldConfig);
164  self::assertSame($expected, ‪$output);
165  }
166 
171  {
172  $fieldConfig = [
173  'type' => 'text',
174  'enableRichtext' => true,
175  ];
176  $pageTsConfig = [
177  'classes.' => [
178  'aClass' => 'aConfig',
179  ],
180  'default.' => [
181  'classes.' => [
182  'aClass' => 'anotherConfig',
183  ],
184  'editor.' => [
185  'config.' => [
186  'contentsCss.' => [
187  '0' => 'my.css',
188  ],
189  ],
190  ],
191  ],
192  ];
193  $expected = [
194  'classes.' => [
195  'aClass' => 'anotherConfig',
196  ],
197  'editor.' => [
198  'config.' => [
199  'contentsCss.' => [
200  '0' => 'my.css',
201  ],
202  ],
203  ],
204  'preset' => 'default',
205  'classes' => [
206  'aClass' => 'anotherConfig',
207  ],
208  'editor' => [
209  'config' => [
210  'alignment' => [
211  'options' => [
212  ['name' => 'left', 'className' => 'text-start'],
213  ['name' => 'center', 'className' => 'text-center'],
214  ['name' => 'right', 'className' => 'text-end'],
215  ['name' => 'justify', 'className' => 'text-justify'],
216  ],
217  ],
218  'contentsCss' => [
219  'my.css',
220  ],
221  'toolbar' => [
222  'items' => [
223  'softhyphen',
224  ],
225  'removeItems' => [],
226  'shouldNotGroupWhenFull' => true,
227  ],
228  'wordCount' => [
229  'displayCharacters' => true,
230  'displayWords' => true,
231  ],
232  ],
233  ],
234  'proc.' => [
235  'overruleMode' => 'default',
236  ],
237  ];
238  // Accessible mock to $subject since getRtePageTsConfigOfPid calls BackendUtility::getPagesTSconfig()
239  // which can't be mocked in a sane way
240  $subject = $this->getAccessibleMock(Richtext::class, ['getRtePageTsConfigOfPid'], [], '', false);
241  $subject->expects(self::once())->method('getRtePageTsConfigOfPid')->with(42)->willReturn($pageTsConfig);
242  ‪$output = $subject->getConfiguration('aTable', 'aField', 42, 'textmedia', $fieldConfig);
243  self::assertSame($expected, ‪$output);
244  }
245 
250  {
251  $fieldConfig = [
252  'type' => 'text',
253  'enableRichtext' => true,
254  ];
255  $pageTsConfig = [
256  'classes.' => [
257  'aClass' => 'aConfig',
258  ],
259  'default.' => [
260  'classes.' => [
261  'aClass' => 'anotherConfig',
262  ],
263  ],
264  'config.' => [
265  'aTable.' => [
266  'aField.' => [
267  'classes.' => [
268  'aClass' => 'aThirdConfig',
269  ],
270  'editor.' => [
271  'config.' => [
272  'contentsCss.' => [
273  '0' => 'my.css',
274  ],
275  ],
276  ],
277  ],
278  ],
279  ],
280  ];
281  $expected = [
282  // Config with pagets dots
283  'classes.' => [
284  'aClass' => 'aThirdConfig',
285  ],
286  'editor.' => [
287  'config.' => [
288  'contentsCss.' => [
289  '0' => 'my.css',
290  ],
291  ],
292  ],
293  'preset' => 'default',
294  // Config without pagets dots
295  'classes' => [
296  'aClass' => 'aThirdConfig',
297  ],
298  'editor' => [
299  'config' => [
300  'alignment' => [
301  'options' => [
302  ['name' => 'left', 'className' => 'text-start'],
303  ['name' => 'center', 'className' => 'text-center'],
304  ['name' => 'right', 'className' => 'text-end'],
305  ['name' => 'justify', 'className' => 'text-justify'],
306  ],
307  ],
308  'contentsCss' => [
309  'my.css',
310  ],
311  'toolbar' => [
312  'items' => [
313  'softhyphen',
314  ],
315  'removeItems' => [],
316  'shouldNotGroupWhenFull' => true,
317  ],
318  'wordCount' => [
319  'displayCharacters' => true,
320  'displayWords' => true,
321  ],
322  ],
323  ],
324  'proc.' => [
325  'overruleMode' => 'default',
326  ],
327  ];
328  // Accessible mock to $subject since getRtePageTsConfigOfPid calls BackendUtility::getPagesTSconfig()
329  // which can't be mocked in a sane way
330  $subject = $this->getAccessibleMock(Richtext::class, ['getRtePageTsConfigOfPid'], [], '', false);
331  $subject->expects(self::once())->method('getRtePageTsConfigOfPid')->with(42)->willReturn($pageTsConfig);
332  ‪$output = $subject->getConfiguration('aTable', 'aField', 42, 'textmedia', $fieldConfig);
333  self::assertSame($expected, ‪$output);
334  }
335 
340  {
341  $fieldConfig = [
342  'type' => 'text',
343  'enableRichtext' => true,
344  ];
345  $pageTsConfig = [
346  'classes.' => [
347  'aClass' => 'aConfig',
348  ],
349  'default.' => [
350  'classes.' => [
351  'aClass' => 'anotherConfig',
352  ],
353  ],
354  'config.' => [
355  'aTable.' => [
356  'aField.' => [
357  'classes.' => [
358  'aClass' => 'aThirdConfig',
359  ],
360  'editor.' => [
361  'config.' => [
362  'contentsCss.' => [
363  '0' => 'my.css',
364  ],
365  ],
366  ],
367  'types.' => [
368  'textmedia.' => [
369  'classes.' => [
370  'aClass' => 'aTypeSpecificConfig',
371  ],
372  'editor.' => [
373  'config.' => [
374  'contentsCss.' => [
375  '0' => 'your.css',
376  ],
377  ],
378  ],
379  ],
380  ],
381  ],
382  ],
383  ],
384  ];
385  $expected = [
386  // Config with pagets dots
387  'classes.' => [
388  'aClass' => 'aTypeSpecificConfig',
389  ],
390  'editor.' => [
391  'config.' => [
392  'contentsCss.' => [
393  '0' => 'your.css',
394  ],
395  ],
396  ],
397  'preset' => 'default',
398  // Config without pagets dots
399  'classes' => [
400  'aClass' => 'aTypeSpecificConfig',
401  ],
402  'editor' => [
403  'config' => [
404  'alignment' => [
405  'options' => [
406  ['name' => 'left', 'className' => 'text-start'],
407  ['name' => 'center', 'className' => 'text-center'],
408  ['name' => 'right', 'className' => 'text-end'],
409  ['name' => 'justify', 'className' => 'text-justify'],
410  ],
411  ],
412  'contentsCss' => [
413  'your.css',
414  ],
415  'toolbar' => [
416  'items' => [
417  'softhyphen',
418  ],
419  'removeItems' => [],
420  'shouldNotGroupWhenFull' => true,
421  ],
422  'wordCount' => [
423  'displayCharacters' => true,
424  'displayWords' => true,
425  ],
426  ],
427  ],
428  'proc.' => [
429  'overruleMode' => 'default',
430  ],
431  ];
432  // Accessible mock to $subject since getRtePageTsConfigOfPid calls BackendUtility::getPagesTSconfig()
433  // which can't be mocked in a sane way
434  $subject = $this->getAccessibleMock(Richtext::class, ['getRtePageTsConfigOfPid'], [], '', false);
435  $subject->expects(self::once())->method('getRtePageTsConfigOfPid')->with(42)->willReturn($pageTsConfig);
436  ‪$output = $subject->getConfiguration('aTable', 'aField', 42, 'textmedia', $fieldConfig);
437  self::assertSame($expected, ‪$output);
438  }
439 
444  {
445  $pageId = 42;
446  $presetKey = 'default';
447 
448  $preset = [
449  'editor' => [
450  'config' => [
451  'width' => 100,
452  ],
453  ],
454  ];
455 
456  $pageTsConfigArray = [
457  'preset' => $presetKey,
458  'editor.' => [
459  'config.' => [
460  'width' => 200,
461  ],
462  ],
463  ];
464 
465  $subject = $this->getAccessibleMock(
466  Richtext::class,
467  ['loadConfigurationFromPreset', 'getRtePageTsConfigOfPid'],
468  [],
469  '',
470  false
471  );
472  $subject->expects(self::once())->method('loadConfigurationFromPreset')->with($presetKey)->willReturn($preset);
473  $subject->expects(self::once())->method('getRtePageTsConfigOfPid')->with($pageId)->willReturn($pageTsConfigArray);
474 
475  ‪$output = $subject->getConfiguration('tt_content', 'bodytext', $pageId, 'textmedia', $pageTsConfigArray);
476 
477  $expected = [
478  'editor' => [
479  'config' => [
480  'alignment' => [
481  'options' => [
482  ['name' => 'left', 'className' => 'text-start'],
483  ['name' => 'center', 'className' => 'text-center'],
484  ['name' => 'right', 'className' => 'text-end'],
485  ['name' => 'justify', 'className' => 'text-justify'],
486  ],
487  ],
488  'toolbar' => [
489  'items' => [
490  'softhyphen',
491  ],
492  'removeItems' => [],
493  'shouldNotGroupWhenFull' => true,
494  ],
495  'width' => 200,
496  'wordCount' => [
497  'displayCharacters' => true,
498  'displayWords' => true,
499  ],
500  ],
501  ],
502  'editor.' => [
503  'config.' => [
504  'width' => 200,
505  ],
506  ],
507  'preset' => 'default',
508  'proc.' => [
509  'overruleMode' => 'default',
510  ],
511  ];
512 
513  self::assertSame($expected, ‪$output);
514  }
515 
517  {
518  return [
519  [
520  'fieldConfig' => [
521  'type' => 'text',
522  'enableRichtext' => true,
523  'richtextConfiguration' => 'testRteConfigTca',
524  ],
525  'pageTsConfig' => [
526  'classes.' => [
527  'aClass' => 'aConfig',
528  ],
529  'default.' => [
530  'preset' => 'testRteConfigTsconfigDefault',
531  ],
532  'config.' => [
533  'aTable.' => [
534  'aField.' => [
535  'preset' => 'testRteConfigTsconfigAField',
536  ],
537  ],
538  ],
539  ],
540  'expected' => [
541  'classes.' => [
542  'aClass' => 'aConfig',
543  ],
544  'preset' => 'testRteConfigTsconfigAField',
545  'classes' => [
546  'aClass' => 'aConfig',
547  ],
548  'proc.' => [
549  'overruleMode' => 'default',
550  ],
551  ],
552  'message' => 'Preset of testRteConfig* in three place TCA',
553  ],
554  [
555  'fieldConfig' => [
556  'type' => 'text',
557  'enableRichtext' => true,
558  ],
559  'pageTsConfig' => [
560  'classes.' => [
561  'aClass' => 'aConfig',
562  ],
563  'default.' => [
564  'preset' => 'testRteConfigTsconfigDefault',
565  ],
566  'config.' => [
567  'aTable.' => [
568  'aField.' => [
569  'preset' => 'testRteConfigTsconfigAField',
570  ],
571  ],
572  ],
573  ],
574  'expected' => [
575  'classes.' => [
576  'aClass' => 'aConfig',
577  ],
578  'preset' => 'testRteConfigTsconfigAField',
579  'classes' => [
580  'aClass' => 'aConfig',
581  ],
582  'proc.' => [
583  'overruleMode' => 'default',
584  ],
585  ],
586  'message' => 'Preset of testRteConfig* in two place TCA, lowest is pagetsconfig definition for field of table',
587 
588  ],
589  [
590  'fieldConfig' => [
591  'type' => 'text',
592  'enableRichtext' => true,
593  'richtextConfiguration' => 'testRteConfigTca',
594  ],
595  'pageTsConfig' => [
596  'classes.' => [
597  'aClass' => 'aConfig',
598  ],
599  'default.' => [
600  'preset' => 'testRteConfigTsconfigDefault',
601  ],
602  ],
603  'expected' => [
604  'classes.' => [
605  'aClass' => 'aConfig',
606  ],
607  'preset' => 'testRteConfigTca',
608  'classes' => [
609  'aClass' => 'aConfig',
610  ],
611  'proc.' => [
612  'overruleMode' => 'default',
613  ],
614  ],
615  'message' => 'Preset of testRteConfig* in two place TCA, lowest is definition in tca',
616 
617  ],
618  [
619  'fieldConfig' => [
620  'type' => 'text',
621  'enableRichtext' => true,
622  'richtextConfiguration' => 'testRteConfigTca',
623  ],
624  'pageTsConfig' => [
625  'classes.' => [
626  'aClass' => 'aConfig',
627  ],
628  ],
629  'expected' => [
630  'classes.' => [
631  'aClass' => 'aConfig',
632  ],
633  'preset' => 'testRteConfigTca',
634  'classes' => [
635  'aClass' => 'aConfig',
636  ],
637  'proc.' => [
638  'overruleMode' => 'default',
639  ],
640  ],
641  'message' => 'single Preset of testRteConfig* defined in TCA',
642 
643  ],
644  [
645  'fieldConfig' => [
646  'type' => 'text',
647  'enableRichtext' => true,
648  ],
649  'pageTsConfig' => [
650  'classes.' => [
651  'aClass' => 'aConfig',
652  ],
653  'default.' => [
654  'preset' => 'testRteConfigTsconfigDefault',
655  ],
656  ],
657  'expected' => [
658  'classes.' => [
659  'aClass' => 'aConfig',
660  ],
661  'preset' => 'testRteConfigTsconfigDefault',
662  'classes' => [
663  'aClass' => 'aConfig',
664  ],
665  'proc.' => [
666  'overruleMode' => 'default',
667  ],
668  ],
669  'message' => 'single Preset of testRteConfig* defined in PageTSconfig for default of RTE',
670  ],
671  [
672  'fieldConfig' => [
673  'type' => 'text',
674  'enableRichtext' => true,
675  'richtextConfiguration' => 'testRteConfigTca',
676  ],
677  'pageTsConfig' => [
678  'classes.' => [
679  'aClass' => 'aConfig',
680  ],
681  'config.' => [
682  'aTable.' => [
683  'aField.' => [
684  'preset' => 'testRteConfigTsconfigAField',
685  ],
686  ],
687  ],
688  ],
689  'expected' => [
690  'classes.' => [
691  'aClass' => 'aConfig',
692  ],
693  'preset' => 'testRteConfigTsconfigAField',
694  'classes' => [
695  'aClass' => 'aConfig',
696  ],
697  'proc.' => [
698  'overruleMode' => 'default',
699  ],
700  ],
701  'message' => 'single Preset of testRteConfig* defined in PageTSconfig for field of table ',
702  ],
703  [
704  'fieldConfig' => [
705  'type' => 'text',
706  'enableRichtext' => true,
707  'richtextConfiguration' => 'testRteConfigTca',
708  ],
709  'pageTsConfig' => [
710  'classes.' => [
711  'aClass' => 'aConfig',
712  ],
713  'default.' => [
714  'preset' => 'testRteConfigTsconfigDefault',
715  ],
716  'config.' => [
717  'aTable.' => [
718  'aField.' => [
719  'preset' => 'testRteConfigTsconfigAField',
720  'types.' => [
721  'textmedia.' => [
722  'preset' => 'testRteConfigTsconfigATypes',
723  ],
724  ],
725  ],
726  ],
727  ],
728  ],
729  'expected' => [
730  'classes.' => [
731  'aClass' => 'aConfig',
732  ],
733  'preset' => 'testRteConfigTsconfigATypes',
734  'classes' => [
735  'aClass' => 'aConfig',
736  ],
737  'proc.' => [
738  'overruleMode' => 'default',
739  ],
740  ],
741  'message' => 'Preset of testRteConfigTsconfigA* in four place TCA',
742  ],
743  [
744  'fieldConfig' => [
745  'type' => 'text',
746  'enableRichtext' => true,
747  ],
748  'pageTsConfig' => [
749  'classes.' => [
750  'aClass' => 'aConfig',
751  ],
752  'config.' => [
753  'aTable.' => [
754  'aField.' => [
755  'preset' => 'testRteConfigTsconfigAField',
756  'types.' => [
757  'textmedia.' => [
758  'preset' => 'testRteConfigTsconfigATypes',
759  ],
760  ],
761  ],
762  ],
763  ],
764  ],
765  'expected' => [
766  'classes.' => [
767  'aClass' => 'aConfig',
768  ],
769  'preset' => 'testRteConfigTsconfigATypes',
770  'classes' => [
771  'aClass' => 'aConfig',
772  ],
773  'proc.' => [
774  'overruleMode' => 'default',
775  ],
776  ],
777  'message' => 'the preset for CType in pagetsconfig is more reliable than preset for field of tables',
778  ],
779 
780  [
781  'fieldConfig' => [
782  'type' => 'text',
783  'enableRichtext' => true,
784  ],
785  'pageTsConfig' => [
786  'classes.' => [
787  'aClass' => 'aConfig',
788  ],
789  'config.' => [
790  'aTable.' => [
791  'aField.' => [
792  'preset' => 'testRteConfigTsconfigAField',
793  'types.' => [
794  'textmedia.' => [
795  'preset' => 'testRteConfigTsconfigATypes',
796  ],
797  ],
798  ],
799  ],
800  ],
801  ],
802  'expected' => [
803  'classes.' => [
804  'aClass' => 'aConfig',
805  ],
806  'preset' => 'testRteConfigTsconfigATypes',
807  'classes' => [
808  'aClass' => 'aConfig',
809  ],
810  'proc.' => [
811  'overruleMode' => 'default',
812  ],
813  ],
814  'message' => 'the recordtype overrules the definition of an table-field',
815  ],
816 
817  ];
818  }
819 
824  public function ‪getConfigurationFindPresetInPageTsOverridesPreset($fieldConfig, $pageTsConfig, $expected, $message): void
825  {
826  // Accessible mock to $subject since getRtePageTsConfigOfPid calls BackendUtility::getPagesTSconfig()
827  // which can't be mocked in a sane way
828  $subject = $this->getAccessibleMock(Richtext::class, ['getRtePageTsConfigOfPid'], [], '', false);
829  $subject->expects(self::once())->method('getRtePageTsConfigOfPid')->with(42)->willReturn($pageTsConfig);
830  ‪$output = $subject->getConfiguration('aTable', 'aField', 42, 'textmedia', $fieldConfig);
831  self::assertSame($expected, ‪$output);
832  }
833 }
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest
Definition: RichtextTest.php:24
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest\getConfigurationOverridesByFieldAndTypeSpecificConfig
‪getConfigurationOverridesByFieldAndTypeSpecificConfig()
Definition: RichtextTest.php:339
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest\dataProviderGetConfigurationFindPresetInPageTsOverridesPreset
‪static dataProviderGetConfigurationFindPresetInPageTsOverridesPreset()
Definition: RichtextTest.php:516
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest\getConfigurationUsesOverruleModeFromConfig
‪getConfigurationUsesOverruleModeFromConfig()
Definition: RichtextTest.php:82
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest\getConfigurationOverridesByFieldSpecificConfig
‪getConfigurationOverridesByFieldSpecificConfig()
Definition: RichtextTest.php:249
‪$output
‪$output
Definition: annotationChecker.php:119
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest\getConfigurationSetsOverruleModeIfMissing
‪getConfigurationSetsOverruleModeIfMissing()
Definition: RichtextTest.php:132
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest\getConfigurationPageTsOverridesPreset
‪getConfigurationPageTsOverridesPreset()
Definition: RichtextTest.php:443
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest\getConfigurationFindPresetInPageTsOverridesPreset
‪getConfigurationFindPresetInPageTsOverridesPreset($fieldConfig, $pageTsConfig, $expected, $message)
Definition: RichtextTest.php:824
‪TYPO3\CMS\Core\Configuration\Richtext
Definition: Richtext.php:34
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest\getConfigurationUsesOverruleModeFromType
‪getConfigurationUsesOverruleModeFromType()
Definition: RichtextTest.php:28
‪TYPO3\CMS\Core\Tests\Unit\Configuration\RichtextTest\getConfigurationOverridesByDefault
‪getConfigurationOverridesByDefault()
Definition: RichtextTest.php:170
‪TYPO3\CMS\Core\Tests\Unit\Configuration
Definition: CKEditor5MigratorTest.php:18