‪TYPO3CMS  11.5
FilesContentObjectTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
24 use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
26 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
27 
28 class ‪FilesContentObjectTest extends FunctionalTestCase
29 {
31 
33  'typo3/sysext/frontend/Tests/Functional/Fixtures/Images' => 'fileadmin/images',
34  'typo3/sysext/frontend/Tests/Functional/ContentObject/ImagesInStorage2' => 'storage2/images',
35  'typo3/sysext/frontend/Tests/Functional/ContentObject/ImagesInStorage3' => 'storage3/images',
36  ];
37 
38  protected function ‪setUp(): void
39  {
40  parent::setUp();
41  $this->setUpBackendUserFromFixture(1);
42  $this->importCSVDataSet(__DIR__ . '/DataSet/FilesContentObjectDataSet.csv');
43 
44  $typoScriptFrontendController = $this->createMock(TypoScriptFrontendController::class);
45  $typoScriptFrontendController->sys_page = GeneralUtility::makeInstance(PageRepository::class);
46  ‪$GLOBALS['TSFE'] = $typoScriptFrontendController;
47  $contentObjectRenderer = GeneralUtility::getContainer()->get(ContentObjectRenderer::class);
48  $request = new ‪ServerRequest();
49  $contentObjectRenderer->setRequest($request);
50  $this->subject = $contentObjectRenderer->getContentObject('FILES');
51  }
52 
54  {
55  return [
56  'One file reference' => [
57  [
58  'references' => '1',
59  'renderObj' => 'TEXT',
60  'renderObj.' => [
61  'data' => 'file:current:name',
62  'wrap' => '<p>|</p>',
63  ],
64  ],
65  '<p>team-t3board10.jpg</p>',
66  ],
67  'One file reference with begin higher than allowed' => [
68  [
69  'references' => '1',
70  'begin' => '1',
71  'renderObj' => 'TEXT',
72  'renderObj.' => [
73  'data' => 'file:current:name',
74  'wrap' => '<p>|</p>',
75  ],
76  ],
77  '',
78  ],
79  'One file reference with maxItems higher than allowed' => [
80  [
81  'references' => '1',
82  'maxItems' => '2',
83  'renderObj' => 'TEXT',
84  'renderObj.' => [
85  'data' => 'file:current:name',
86  'wrap' => '<p>|</p>',
87  ],
88  ],
89  '<p>team-t3board10.jpg</p>',
90  ],
91  'Multiple file references' => [
92  [
93  'references' => '1,2,3',
94  'renderObj' => 'TEXT',
95  'renderObj.' => [
96  'data' => 'file:current:name',
97  'wrap' => '<p>|</p>',
98  ],
99  ],
100  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
101  ],
102  'Multiple file references with begin' => [
103  [
104  'references' => '1,2,3',
105  'begin' => '1',
106  'renderObj' => 'TEXT',
107  'renderObj.' => [
108  'data' => 'file:current:name',
109  'wrap' => '<p>|</p>',
110  ],
111  ],
112  '<p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
113  ],
114  'Multiple file references with negative begin' => [
115  [
116  'references' => '1,2,3',
117  'begin' => '-1',
118  'renderObj' => 'TEXT',
119  'renderObj.' => [
120  'data' => 'file:current:name',
121  'wrap' => '<p>|</p>',
122  ],
123  ],
124  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
125  ],
126  'Multiple file references with maxItems' => [
127  [
128  'references' => '1,2,3',
129  'maxItems' => '2',
130  'renderObj' => 'TEXT',
131  'renderObj.' => [
132  'data' => 'file:current:name',
133  'wrap' => '<p>|</p>',
134  ],
135  ],
136  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p>',
137  ],
138  'Multiple file references with negative maxItems' => [
139  [
140  'references' => '1,2,3',
141  'maxItems' => '-2',
142  'renderObj' => 'TEXT',
143  'renderObj.' => [
144  'data' => 'file:current:name',
145  'wrap' => '<p>|</p>',
146  ],
147  ],
148  '',
149  ],
150  'Multiple file references with begin and maxItems' => [
151  [
152  'references' => '1,2,3',
153  'begin' => '1',
154  'maxItems' => '1',
155  'renderObj' => 'TEXT',
156  'renderObj.' => [
157  'data' => 'file:current:name',
158  'wrap' => '<p>|</p>',
159  ],
160  ],
161  '<p>kasper-skarhoj1.jpg</p>',
162  ],
163  'Multiple file references unsorted' => [
164  [
165  'references' => '1,3,2',
166  'renderObj' => 'TEXT',
167  'renderObj.' => [
168  'data' => 'file:current:name',
169  'wrap' => '<p>|</p>',
170  ],
171  ],
172  '<p>team-t3board10.jpg</p><p>typo3-logo.png</p><p>kasper-skarhoj1.jpg</p>',
173  ],
174  'Multiple file references sorted by name' => [
175  [
176  'references' => '3,1,2',
177  'sorting' => 'name',
178  'renderObj' => 'TEXT',
179  'renderObj.' => [
180  'data' => 'file:current:name',
181  'wrap' => '<p>|</p>',
182  ],
183  ],
184  '<p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p>',
185  ],
186  ];
187  }
188 
193  public function ‪renderReturnsFilesForFileReferences(array $configuration, string $expected): void
194  {
195  self::assertSame($expected, $this->subject->render($configuration));
196  }
197 
199  {
200  return [
201  'One file' => [
202  [
203  'files' => '1',
204  'renderObj' => 'TEXT',
205  'renderObj.' => [
206  'data' => 'file:current:name',
207  'wrap' => '<p>|</p>',
208  ],
209  ],
210  '<p>team-t3board10.jpg</p>',
211  ],
212  'One file with begin higher than allowed' => [
213  [
214  'files' => '1',
215  'begin' => '1',
216  'renderObj' => 'TEXT',
217  'renderObj.' => [
218  'data' => 'file:current:name',
219  'wrap' => '<p>|</p>',
220  ],
221  ],
222  '',
223  ],
224  'One file with maxItems higher than allowed' => [
225  [
226  'files' => '1',
227  'maxItems' => '2',
228  'renderObj' => 'TEXT',
229  'renderObj.' => [
230  'data' => 'file:current:name',
231  'wrap' => '<p>|</p>',
232  ],
233  ],
234  '<p>team-t3board10.jpg</p>',
235  ],
236  'Multiple files' => [
237  [
238  'files' => '1,2,3',
239  'renderObj' => 'TEXT',
240  'renderObj.' => [
241  'data' => 'file:current:name',
242  'wrap' => '<p>|</p>',
243  ],
244  ],
245  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
246  ],
247  'Multiple files with begin' => [
248  [
249  'files' => '1,2,3',
250  'begin' => '1',
251  'renderObj' => 'TEXT',
252  'renderObj.' => [
253  'data' => 'file:current:name',
254  'wrap' => '<p>|</p>',
255  ],
256  ],
257  '<p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
258  ],
259  'Multiple files with negative begin' => [
260  [
261  'files' => '1,2,3',
262  'begin' => '-1',
263  'renderObj' => 'TEXT',
264  'renderObj.' => [
265  'data' => 'file:current:name',
266  'wrap' => '<p>|</p>',
267  ],
268  ],
269  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
270  ],
271  'Multiple files with maxItems' => [
272  [
273  'files' => '1,2,3',
274  'maxItems' => '2',
275  'renderObj' => 'TEXT',
276  'renderObj.' => [
277  'data' => 'file:current:name',
278  'wrap' => '<p>|</p>',
279  ],
280  ],
281  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p>',
282  ],
283  'Multiple files with negative maxItems' => [
284  [
285  'files' => '1,2,3',
286  'maxItems' => '-2',
287  'renderObj' => 'TEXT',
288  'renderObj.' => [
289  'data' => 'file:current:name',
290  'wrap' => '<p>|</p>',
291  ],
292  ],
293  '',
294  ],
295  'Multiple files with begin and maxItems' => [
296  [
297  'files' => '1,2,3',
298  'begin' => '1',
299  'maxItems' => '1',
300  'renderObj' => 'TEXT',
301  'renderObj.' => [
302  'data' => 'file:current:name',
303  'wrap' => '<p>|</p>',
304  ],
305  ],
306  '<p>kasper-skarhoj1.jpg</p>',
307  ],
308  'Multiple files unsorted' => [
309  [
310  'files' => '1,3,2',
311  'renderObj' => 'TEXT',
312  'renderObj.' => [
313  'data' => 'file:current:name',
314  'wrap' => '<p>|</p>',
315  ],
316  ],
317  '<p>team-t3board10.jpg</p><p>typo3-logo.png</p><p>kasper-skarhoj1.jpg</p>',
318  ],
319  'Multiple files sorted by name' => [
320  [
321  'files' => '3,1,2',
322  'sorting' => 'name',
323  'renderObj' => 'TEXT',
324  'renderObj.' => [
325  'data' => 'file:current:name',
326  'wrap' => '<p>|</p>',
327  ],
328  ],
329  '<p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p>',
330  ],
331  ];
332  }
333 
338  public function ‪renderReturnsFilesForFiles(array $configuration, string $expected): void
339  {
340  self::assertSame($expected, $this->subject->render($configuration));
341  }
342 
344  {
345  return [
346  'One collection' => [
347  [
348  'collections' => '1',
349  'renderObj' => 'TEXT',
350  'renderObj.' => [
351  'data' => 'file:current:name',
352  'wrap' => '<p>|</p>',
353  ],
354  ],
355  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
356  ],
357  'One collection with begin' => [
358  [
359  'collections' => '1',
360  'begin' => '1',
361  'renderObj' => 'TEXT',
362  'renderObj.' => [
363  'data' => 'file:current:name',
364  'wrap' => '<p>|</p>',
365  ],
366  ],
367  '<p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
368  ],
369  'One collection with begin higher than allowed' => [
370  [
371  'collections' => '1',
372  'begin' => '3',
373  'renderObj' => 'TEXT',
374  'renderObj.' => [
375  'data' => 'file:current:name',
376  'wrap' => '<p>|</p>',
377  ],
378  ],
379  '',
380  ],
381  'One collection with maxItems' => [
382  [
383  'collections' => '1',
384  'maxItems' => '2',
385  'renderObj' => 'TEXT',
386  'renderObj.' => [
387  'data' => 'file:current:name',
388  'wrap' => '<p>|</p>',
389  ],
390  ],
391  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p>',
392  ],
393  'One collection with maxItems higher than allowed' => [
394  [
395  'collections' => '1',
396  'maxItems' => '4',
397  'renderObj' => 'TEXT',
398  'renderObj.' => [
399  'data' => 'file:current:name',
400  'wrap' => '<p>|</p>',
401  ],
402  ],
403  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
404  ],
405  'One collections with begin and maxItems' => [
406  [
407  'collections' => '1',
408  'begin' => '1',
409  'maxItems' => '1',
410  'renderObj' => 'TEXT',
411  'renderObj.' => [
412  'data' => 'file:current:name',
413  'wrap' => '<p>|</p>',
414  ],
415  ],
416  '<p>kasper-skarhoj1.jpg</p>',
417  ],
418  'Multiple collections' => [
419  [
420  'collections' => '1,2,3',
421  'renderObj' => 'TEXT',
422  'renderObj.' => [
423  'data' => 'file:current:name',
424  'wrap' => '<p>|</p>',
425  ],
426  ],
427  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p><p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p>',
428  ],
429  'Multiple collections with begin' => [
430  [
431  'collections' => '1,2,3',
432  'begin' => '3',
433  'renderObj' => 'TEXT',
434  'renderObj.' => [
435  'data' => 'file:current:name',
436  'wrap' => '<p>|</p>',
437  ],
438  ],
439  '<p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p>',
440  ],
441  'Multiple collections with negative begin' => [
442  [
443  'collections' => '1,2,3',
444  'begin' => '-3',
445  'renderObj' => 'TEXT',
446  'renderObj.' => [
447  'data' => 'file:current:name',
448  'wrap' => '<p>|</p>',
449  ],
450  ],
451  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p><p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p>',
452  ],
453  'Multiple collections with maxItems' => [
454  [
455  'collections' => '1,2,3',
456  'maxItems' => '5',
457  'renderObj' => 'TEXT',
458  'renderObj.' => [
459  'data' => 'file:current:name',
460  'wrap' => '<p>|</p>',
461  ],
462  ],
463  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p><p>file4.jpg</p><p>file5.jpg</p>',
464  ],
465  'Multiple collections with negative maxItems' => [
466  [
467  'collections' => '1,2,3',
468  'maxItems' => '-5',
469  'renderObj' => 'TEXT',
470  'renderObj.' => [
471  'data' => 'file:current:name',
472  'wrap' => '<p>|</p>',
473  ],
474  ],
475  '',
476  ],
477  'Multiple collections with begin and maxItems' => [
478  [
479  'collections' => '1,2,3',
480  'begin' => '4',
481  'maxItems' => '3',
482  'renderObj' => 'TEXT',
483  'renderObj.' => [
484  'data' => 'file:current:name',
485  'wrap' => '<p>|</p>',
486  ],
487  ],
488  '<p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p>',
489  ],
490  'Multiple collections unsorted' => [
491  [
492  'collections' => '1,3,2',
493  'renderObj' => 'TEXT',
494  'renderObj.' => [
495  'data' => 'file:current:name',
496  'wrap' => '<p>|</p>',
497  ],
498  ],
499  '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p><p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p>',
500  ],
501  'Multiple collections sorted by name' => [
502  [
503  'collections' => '3,1,2',
504  'sorting' => 'name',
505  'renderObj' => 'TEXT',
506  'renderObj.' => [
507  'data' => 'file:current:name',
508  'wrap' => '<p>|</p>',
509  ],
510  ],
511  '<p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p><p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p>',
512  ],
513  ];
514  }
515 
520  public function ‪renderReturnsFilesForCollections(array $configuration, string $expected): void
521  {
522  self::assertSame($expected, $this->subject->render($configuration));
523  }
524 
526  {
527  return [
528  'One folder' => [
529  [
530  'folders' => '1:images/',
531  'renderObj' => 'TEXT',
532  'renderObj.' => [
533  'data' => 'file:current:name',
534  'wrap' => '<p>|</p>',
535  ],
536  ],
537  '<p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p>',
538  ],
539  'One folder with begin' => [
540  [
541  'folders' => '1:images/',
542  'begin' => '1',
543  'renderObj' => 'TEXT',
544  'renderObj.' => [
545  'data' => 'file:current:name',
546  'wrap' => '<p>|</p>',
547  ],
548  ],
549  '<p>team-t3board10.jpg</p><p>typo3-logo.png</p>',
550  ],
551  'One folder with begin higher than allowed' => [
552  [
553  'folders' => '1:images/',
554  'begin' => '3',
555  'renderObj' => 'TEXT',
556  'renderObj.' => [
557  'data' => 'file:current:name',
558  'wrap' => '<p>|</p>',
559  ],
560  ],
561  '',
562  ],
563  'One folder with maxItems' => [
564  [
565  'folders' => '1:images/',
566  'maxItems' => '2',
567  'renderObj' => 'TEXT',
568  'renderObj.' => [
569  'data' => 'file:current:name',
570  'wrap' => '<p>|</p>',
571  ],
572  ],
573  '<p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p>',
574  ],
575  'One folder with maxItems higher than allowed' => [
576  [
577  'folders' => '1:images/',
578  'maxItems' => '4',
579  'renderObj' => 'TEXT',
580  'renderObj.' => [
581  'data' => 'file:current:name',
582  'wrap' => '<p>|</p>',
583  ],
584  ],
585  '<p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p>',
586  ],
587  'One folder with begin and maxItems' => [
588  [
589  'folders' => '1:images/',
590  'begin' => '1',
591  'maxItems' => '1',
592  'renderObj' => 'TEXT',
593  'renderObj.' => [
594  'data' => 'file:current:name',
595  'wrap' => '<p>|</p>',
596  ],
597  ],
598  '<p>team-t3board10.jpg</p>',
599  ],
600  'Multiple folders' => [
601  [
602  'folders' => '1:images/,2:images/,3:images/',
603  'renderObj' => 'TEXT',
604  'renderObj.' => [
605  'data' => 'file:current:name',
606  'wrap' => '<p>|</p>',
607  ],
608  ],
609  '<p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p><p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p>',
610  ],
611  'Multiple folders with begin' => [
612  [
613  'folders' => '1:images/,2:images/,3:images/',
614  'begin' => '3',
615  'renderObj' => 'TEXT',
616  'renderObj.' => [
617  'data' => 'file:current:name',
618  'wrap' => '<p>|</p>',
619  ],
620  ],
621  '<p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p>',
622  ],
623  'Multiple folders with negative begin' => [
624  [
625  'folders' => '1:images/,2:images/,3:images/',
626  'begin' => '-3',
627  'renderObj' => 'TEXT',
628  'renderObj.' => [
629  'data' => 'file:current:name',
630  'wrap' => '<p>|</p>',
631  ],
632  ],
633  '<p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p><p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p>',
634  ],
635  'Multiple folders with maxItems' => [
636  [
637  'folders' => '1:images/,2:images/,3:images/',
638  'maxItems' => '5',
639  'renderObj' => 'TEXT',
640  'renderObj.' => [
641  'data' => 'file:current:name',
642  'wrap' => '<p>|</p>',
643  ],
644  ],
645  '<p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p><p>file4.jpg</p><p>file5.jpg</p>',
646  ],
647  'Multiple folders with negative maxItems' => [
648  [
649  'folders' => '1:images/,2:images/,3:images/',
650  'maxItems' => '-5',
651  'renderObj' => 'TEXT',
652  'renderObj.' => [
653  'data' => 'file:current:name',
654  'wrap' => '<p>|</p>',
655  ],
656  ],
657  '',
658  ],
659  'Multiple folders with begin and maxItems' => [
660  [
661  'folders' => '1:images/,2:images/,3:images/',
662  'begin' => '4',
663  'maxItems' => '3',
664  'renderObj' => 'TEXT',
665  'renderObj.' => [
666  'data' => 'file:current:name',
667  'wrap' => '<p>|</p>',
668  ],
669  ],
670  '<p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p>',
671  ],
672  'Multiple folders unsorted' => [
673  [
674  'folders' => '1:images/,3:images/,2:images/',
675  'renderObj' => 'TEXT',
676  'renderObj.' => [
677  'data' => 'file:current:name',
678  'wrap' => '<p>|</p>',
679  ],
680  ],
681  '<p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p><p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p>',
682  ],
683  'Multiple folders sorted by name' => [
684  [
685  'folders' => '3:images/,1:images/,2:images/',
686  'sorting' => 'name',
687  'renderObj' => 'TEXT',
688  'renderObj.' => [
689  'data' => 'file:current:name',
690  'wrap' => '<p>|</p>',
691  ],
692  ],
693  '<p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p><p>file7.jpg</p><p>file8.jpg</p><p>file9.jpg</p><p>kasper-skarhoj1.jpg</p><p>team-t3board10.jpg</p><p>typo3-logo.png</p>',
694  ],
695  'Multiple folders recursively' => [
696  [
697  'folders' => '2:images/',
698  'folders.' => [
699  'recursive' => '1',
700  ],
701  'renderObj' => 'TEXT',
702  'renderObj.' => [
703  'data' => 'file:current:name',
704  'wrap' => '<p>|</p>',
705  ],
706  ],
707  '<p>afilesub1.jpg</p><p>afilesub2.jpg</p><p>afilesub3.jpg</p><p>bfilesub1.jpg</p><p>bfilesub2.jpg</p><p>bfilesub3.jpg</p><p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p>',
708  ],
709  'Multiple folders recursively, sorted by name' => [
710  [
711  'folders' => '2:images/',
712  'folders.' => [
713  'recursive' => '1',
714  ],
715  'sorting' => 'name',
716  'renderObj' => 'TEXT',
717  'renderObj.' => [
718  'data' => 'file:current:name',
719  'wrap' => '<p>|</p>',
720  ],
721  ],
722  '<p>afilesub1.jpg</p><p>afilesub2.jpg</p><p>afilesub3.jpg</p><p>bfilesub1.jpg</p><p>bfilesub2.jpg</p><p>bfilesub3.jpg</p><p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p>',
723  ],
724  ];
725  }
726 
731  public function ‪renderReturnsFilesForFolders(array $configuration, string $expected): void
732  {
733  self::assertSame($expected, $this->subject->render($configuration));
734  }
735 
737  {
738  yield 'references option as array with nothing provided returns nothing' => [
739  'configuration' => [
740  'references.' => [
741  'fieldName' => '',
742  ],
743  'renderObj' => 'TEXT',
744  'renderObj.' => [
745  'data' => 'file:current:name',
746  'wrap' => '<p>|</p>',
747  ],
748  ],
749  'data' => [],
750  'table' => 'tt_content',
751  'expected' => '',
752  ];
753 
754  yield 'references option as array and field name provided takes row of current data' => [
755  'configuration' => [
756  'references.' => [
757  'fieldName' => 'image',
758  ],
759  'renderObj' => 'TEXT',
760  'renderObj.' => [
761  'data' => 'file:current:name',
762  'wrap' => '<p>|</p>',
763  ],
764  ],
765  'data' => [
766  'uid' => 298,
767  'image' => 3,
768  ],
769  'table' => 'tt_content',
770  'expected' => '<p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p>',
771  ];
772 
773  yield 'references option as array with uid provided overrides current uid, but uses same current table' => [
774  'configuration' => [
775  'references.' => [
776  'fieldName' => 'image',
777  'uid' => '297',
778  ],
779  'renderObj' => 'TEXT',
780  'renderObj.' => [
781  'data' => 'file:current:name',
782  'wrap' => '<p>|</p>',
783  ],
784  ],
785  'data' => [
786  'uid' => 298,
787  'image' => 3,
788  ],
789  'table' => 'tt_content',
790  'expected' => '<p>team-t3board10.jpg</p><p>kasper-skarhoj1.jpg</p><p>typo3-logo.png</p>',
791  ];
792 
793  yield 'references option as array with uid and table provided ignores current data completely' => [
794  'configuration' => [
795  'references.' => [
796  'fieldName' => 'media',
797  'uid' => '1',
798  'table' => 'pages',
799  ],
800  'renderObj' => 'TEXT',
801  'renderObj.' => [
802  'data' => 'file:current:name',
803  'wrap' => '<p>|</p>',
804  ],
805  ],
806  'data' => [
807  'uid' => 298,
808  'image' => 3,
809  ],
810  'table' => 'tt_content',
811  'expected' => '<p>file7.jpg</p>',
812  ];
813 
814  yield 'references option as array where uid results in nothing, falls back to current data' => [
815  'configuration' => [
816  'references.' => [
817  'fieldName' => 'image',
818  'uid.' => [
819  'field' => 'not_existing_field',
820  ],
821  ],
822  'renderObj' => 'TEXT',
823  'renderObj.' => [
824  'data' => 'file:current:name',
825  'wrap' => '<p>|</p>',
826  ],
827  ],
828  'data' => [
829  'uid' => 298,
830  'image' => 3,
831  ],
832  'table' => 'tt_content',
833  'expected' => '<p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p>',
834  ];
835 
836  yield 'references option as array where table results in nothing, falls back to current data' => [
837  'configuration' => [
838  'references.' => [
839  'fieldName' => 'image',
840  'table' => '',
841  ],
842  'renderObj' => 'TEXT',
843  'renderObj.' => [
844  'data' => 'file:current:name',
845  'wrap' => '<p>|</p>',
846  ],
847  ],
848  'data' => [
849  'uid' => 298,
850  'image' => 3,
851  ],
852  'table' => 'tt_content',
853  'expected' => '<p>file4.jpg</p><p>file5.jpg</p><p>file6.jpg</p>',
854  ];
855  }
856 
861  public function ‪renderReturnsFilesForReferencesAsArray(array $configuration, array $data, string $table, string $expected): void
862  {
863  $this->subject->getContentObjectRenderer()->start($data, $table);
864  self::assertSame($expected, $this->subject->render($configuration));
865  }
866 }
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\$subject
‪AbstractContentObject $subject
Definition: FilesContentObjectTest.php:30
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest
Definition: FilesContentObjectTest.php:29
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForFiles
‪renderReturnsFilesForFiles(array $configuration, string $expected)
Definition: FilesContentObjectTest.php:338
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForCollectionsDataProvider
‪renderReturnsFilesForCollectionsDataProvider()
Definition: FilesContentObjectTest.php:343
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForFoldersDataProvider
‪renderReturnsFilesForFoldersDataProvider()
Definition: FilesContentObjectTest.php:525
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\setUp
‪setUp()
Definition: FilesContentObjectTest.php:38
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForFilesDataProvider
‪renderReturnsFilesForFilesDataProvider()
Definition: FilesContentObjectTest.php:198
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\$pathsToProvideInTestInstance
‪$pathsToProvideInTestInstance
Definition: FilesContentObjectTest.php:32
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForFolders
‪renderReturnsFilesForFolders(array $configuration, string $expected)
Definition: FilesContentObjectTest.php:731
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:37
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForCollections
‪renderReturnsFilesForCollections(array $configuration, string $expected)
Definition: FilesContentObjectTest.php:520
‪TYPO3\CMS\Frontend\ContentObject\AbstractContentObject
Definition: AbstractContentObject.php:29
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForReferencesAsArray
‪renderReturnsFilesForReferencesAsArray(array $configuration, array $data, string $table, string $expected)
Definition: FilesContentObjectTest.php:861
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForFileReferencesDataProvider
‪renderReturnsFilesForFileReferencesDataProvider()
Definition: FilesContentObjectTest.php:53
‪TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController
Definition: TypoScriptFrontendController.php:104
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForReferencesAsArrayDataProvider
‪renderReturnsFilesForReferencesAsArrayDataProvider()
Definition: FilesContentObjectTest.php:736
‪TYPO3\CMS\Core\Domain\Repository\PageRepository
Definition: PageRepository.php:53
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject
Definition: ContentObjectRendererTest.php:18
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\FilesContentObjectTest\renderReturnsFilesForFileReferences
‪renderReturnsFilesForFileReferences(array $configuration, string $expected)
Definition: FilesContentObjectTest.php:193