‪TYPO3CMS  ‪main
TreeControllerTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
22 use PHPUnit\Framework\MockObject\MockObject;
23 use Symfony\Component\DependencyInjection\Container;
36 use TYPO3\TestingFramework\Core\AccessibleObjectInterface;
37 use TYPO3\TestingFramework\Core\Functional\Framework\DataHandling\Scenario\DataHandlerFactory;
38 use TYPO3\TestingFramework\Core\Functional\Framework\DataHandling\Scenario\DataHandlerWriter;
39 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
40 
41 final class ‪TreeControllerTest extends FunctionalTestCase
42 {
45 
46  protected const ‪LANGUAGE_PRESETS = [
47  'EN' => ['id' => 0, 'title' => 'English', 'locale' => 'en_US.UTF8'],
48  ];
49 
50  protected array ‪$coreExtensionsToLoad = ['workspaces'];
51 
52  private ‪TreeController&MockObject&AccessibleObjectInterface ‪$subject;
54  private ‪Context ‪$context;
55 
56  protected function ‪setUp(): void
57  {
58  parent::setUp();
59 
60  $this->withDatabaseSnapshot(function () {
61  $this->importCSVDataSet(__DIR__ . '/Fixtures/be_users.csv');
62  // Admin user for importing dataset
63  $this->backendUser = $this->setUpBackendUser(1);
64  ‪$GLOBALS['LANG'] = $this->get(LanguageServiceFactory::class)->createFromUserPreferences($this->backendUser);
65  $scenarioFile = __DIR__ . '/Fixtures/PagesWithBEPermissions.yaml';
66  $factory = DataHandlerFactory::fromYamlFile($scenarioFile);
67  $writer = DataHandlerWriter::withBackendUser($this->backendUser);
68  $writer->invokeFactory($factory);
69  static::failIfArrayIsNotEmpty($writer->getErrors());
70  }, function () {
71  $this->backendUser = $this->setUpBackendUser(1);
72  ‪$GLOBALS['LANG'] = $this->get(LanguageServiceFactory::class)->createFromUserPreferences($this->backendUser);
73  });
74 
75  // Regular editor, non admin
76  $this->backendUser = $this->setUpBackendUser(9);
77  $this->context = GeneralUtility::makeInstance(Context::class);
78  $this->subject = $this->getAccessibleMock(TreeController::class, null);
79  }
80 
81  protected function ‪tearDown(): void
82  {
83  unset($this->subject, $this->backendUser, $this->context);
84  parent::tearDown();
85  }
86 
87  #[Test]
88  public function ‪getAllEntryPointPageTrees(): void
89  {
90  $actual = $this->subject->_call('getAllEntryPointPageTrees');
91  $keepProperties = array_flip(['uid', 'title', '_children']);
92  $actual = $this->sortTreeArray($actual);
93  $actual = $this->normalizeTreeArray($actual, $keepProperties);
94 
95  $expected = [
96  [
97  'uid' => 0,
98  'title' => 'New TYPO3 site',
99  '_children' => [
100  [
101  'uid' => 1000,
102  'title' => 'ACME Inc',
103  '_children' => [
104  [
105  'uid' => 1100,
106  'title' => 'EN: Welcome',
107  '_children' => [
108  ],
109  ],
110  [
111  'uid' => 1200,
112  'title' => 'EN: Features',
113  '_children' => [
114  [
115  'uid' => 1210,
116  'title' => 'EN: Frontend Editing',
117  '_children' => [
118  ],
119  ],
120  [
121  'uid' => 1230,
122  'title' => 'EN: Managing content',
123  '_children' => [
124  ],
125  ],
126  ],
127  ],
128  [
129  'uid' => 1400,
130  'title' => 'EN: ACME in your Region',
131  '_children' => [
132  [
133  'uid' => 1410,
134  'title' => 'EN: Groups',
135  '_children' => [
136  ],
137  ],
138  ],
139  ],
140  [
141  'uid' => 1500,
142  'title' => 'Internal',
143  '_children' => [
144  [
145  'uid' => 1520,
146  'title' => 'Forecasts',
147  '_children' => [],
148  ],
149  [
150  'uid' => 1530,
151  'title' => 'Reports',
152  '_children' => [
153  ],
154  ],
155  ],
156  ],
157  [
158  'uid' => 1700,
159  'title' => 'Announcements & News',
160  '_children' => [
161  ],
162  ],
163  [
164  'uid' => 404,
165  'title' => 'Page not found',
166  '_children' => [
167  ],
168  ],
169  [
170  'uid' => 1930,
171  'title' => 'Our Blog',
172  '_children' => [
173  ],
174  ],
175  [
176  'uid' => 1990,
177  'title' => 'Storage',
178  '_children' => [
179  ],
180  ],
181  ],
182  ],
183  [
184  'uid' => 8110,
185  'title' => 'Europe',
186  '_children' => [
187  [
188  'uid' => 811000,
189  'title' => 'France',
190  '_children' => [],
191  ],
192  ],
193  ],
194  ],
195  ],
196  ];
197  self::assertEquals($expected, $actual);
198  }
199 
200  #[Test]
202  {
203  $this->backendUser->setWebMounts([0, 7000]);
204  $actual = $this->subject->_call('getAllEntryPointPageTrees');
205  $keepProperties = array_flip(['uid', 'title', '_children']);
206  $actual = $this->sortTreeArray($actual);
207  $actual = $this->normalizeTreeArray($actual, $keepProperties);
208 
209  $expected = [
210  [
211  'uid' => 0,
212  'title' => 'New TYPO3 site',
213  '_children' => [
214  [
215  'uid' => 1000,
216  'title' => 'ACME Inc',
217  '_children' => [
218  [
219  'uid' => 1100,
220  'title' => 'EN: Welcome',
221  '_children' => [
222  ],
223  ],
224  [
225  'uid' => 1200,
226  'title' => 'EN: Features',
227  '_children' => [
228  ],
229  ],
230  [
231  'uid' => 1400,
232  'title' => 'EN: ACME in your Region',
233  '_children' => [
234  ],
235  ],
236  [
237  'uid' => 1500,
238  'title' => 'Internal',
239  '_children' => [
240  ],
241  ],
242  [
243  'uid' => 1700,
244  'title' => 'Announcements & News',
245  '_children' => [
246  ],
247  ],
248  [
249  'uid' => 404,
250  'title' => 'Page not found',
251  '_children' => [
252  ],
253  ],
254  [
255  'uid' => 1930,
256  'title' => 'Our Blog',
257  '_children' => [
258  ],
259  ],
260  [
261  'uid' => 1990,
262  'title' => 'Storage',
263  '_children' => [
264  ],
265  ],
266  ],
267  ],
268  [
269  'uid' => 7000,
270  'title' => 'Common Collection',
271  '_children' => [
272  [
273  'uid' => 7100,
274  'title' => 'Announcements & News',
275  '_children' => [],
276  ],
277  ],
278  ],
279  ],
280  ],
281  [
282  'uid' => 7000,
283  'title' => 'Common Collection',
284  '_children' => [
285  [
286  'uid' => 7100,
287  'title' => 'Announcements & News',
288  '_children' => [
289  [
290  'uid' => 7110,
291  'title' => 'Markets',
292  '_children' => [],
293  ],
294  [
295  'uid' => 7120,
296  'title' => 'Products',
297  '_children' => [],
298  ],
299  [
300  'uid' => 7130,
301  'title' => 'Partners',
302  '_children' => [],
303  ],
304  ],
305  ],
306  ],
307  ],
308  ];
309  self::assertEquals($expected, $actual);
310  }
311 
312  #[Test]
313  public function ‪getAllEntryPointPageTreesWithSearch(): void
314  {
315  $actual = $this->subject->_call('getAllEntryPointPageTrees', 0, 'Groups');
316  $keepProperties = array_flip(['uid', 'title', '_children']);
317  $actual = $this->sortTreeArray($actual);
318  $actual = $this->normalizeTreeArray($actual, $keepProperties);
319 
320  $expected = [
321  [
322  'uid' => 0,
323  'title' => 'New TYPO3 site',
324  '_children' => [
325  [
326  'uid' => 1000,
327  'title' => 'ACME Inc',
328  '_children' => [
329  [
330  'uid' => 1400,
331  'title' => 'EN: ACME in your Region',
332  '_children' => [
333  [
334  'uid' => 1410,
335  'title' => 'EN: Groups',
336  '_children' => [
337  ],
338  ],
339  ],
340  ],
341  ],
342  ],
343  [
344  'uid' => 8110,
345  'title' => 'Europe',
346  '_children' => [
347  ],
348  ],
349  ],
350  ],
351  ];
352  self::assertEquals($expected, $actual);
353  }
354 
355  #[Test]
356  public function ‪getSubtreeForAccessiblePage(): void
357  {
358  $actual = $this->subject->_call('getAllEntryPointPageTrees', 1200);
359  $keepProperties = array_flip(['uid', 'title', '_children']);
360  $actual = $this->sortTreeArray($actual);
361  $actual = $this->normalizeTreeArray($actual, $keepProperties);
362 
363  $expected = [
364  [
365  'uid' => 1200,
366  'title' => 'EN: Features',
367  '_children' => [
368  [
369  'uid' => 1210,
370  'title' => 'EN: Frontend Editing',
371  '_children' => [
372  ],
373  ],
374  [
375  'uid' => 1230,
376  'title' => 'EN: Managing content',
377  '_children' => [
378  ],
379  ],
380  ],
381  ],
382  ];
383  self::assertEquals($expected, $actual);
384  }
385 
386  #[Test]
387  public function ‪getSubtreeForNonAccessiblePage(): void
388  {
389  $actual = $this->subject->_call('getAllEntryPointPageTrees', 1510);
390  $keepProperties = array_flip(['uid', 'title', '_children']);
391  $actual = $this->sortTreeArray($actual);
392  $actual = $this->normalizeTreeArray($actual, $keepProperties);
393 
394  $expected = [];
395  self::assertEquals($expected, $actual);
396  }
397 
398  #[Test]
399  public function ‪getSubtreeForPageOutsideMountPoint(): void
400  {
401  $actual = $this->subject->_call('getAllEntryPointPageTrees', 7000);
402  $keepProperties = array_flip(['uid', 'title', '_children']);
403  $actual = $this->sortTreeArray($actual);
404  $actual = $this->normalizeTreeArray($actual, $keepProperties);
405 
406  $expected = [];
407  self::assertEquals($expected, $actual);
408  }
409 
410  #[Test]
412  {
413  $this->backendUser->setWebmounts([1210, 1100]);
414  $actual = $this->subject->_call('getAllEntryPointPageTrees');
415  $keepProperties = array_flip(['uid', 'title', '_children']);
416  $actual = $this->sortTreeArray($actual);
417  $actual = $this->normalizeTreeArray($actual, $keepProperties);
418 
419  $expected = [
420  [
421  'uid' => 0,
422  'title' => 'New TYPO3 site',
423  '_children' => [
424  [
425  'uid' => 1210,
426  'title' => 'EN: Frontend Editing',
427  '_children' => [
428  ],
429  ],
430  [
431  'uid' => 1100,
432  'title' => 'EN: Welcome',
433  '_children' => [
434  ],
435  ],
436  ],
437  ],
438  ];
439  self::assertEquals($expected, $actual);
440  }
441 
442  #[Test]
443  public function ‪getAllEntryPointPageTreesInWorkspace(): void
444  {
445  $this->‪setWorkspace(1);
446  $actual = $this->subject->_call('getAllEntryPointPageTrees');
447  $keepProperties = array_flip(['uid', 'title', '_children']);
448  $actual = $this->sortTreeArray($actual);
449  $actual = $this->normalizeTreeArray($actual, $keepProperties);
450 
451  $expected = [
452  [
453  'uid' => 0,
454  'title' => 'New TYPO3 site',
455  '_children' => [
456  [
457  'uid' => 1000,
458  'title' => 'ACME Inc',
459  '_children' => [
460  [
461  'uid' => 1950,
462  'title' => 'EN: Goodbye',
463  '_children' => [
464  [
465  'uid' => 10015,
466  'title' => 'EN: Really Goodbye',
467  '_children' => [
468  ],
469  ],
470  ],
471  ],
472  [
473  'uid' => 1100,
474  'title' => 'EN: Welcome',
475  '_children' => [
476  ],
477  ],
478  [
479  'uid' => 1200,
480  'title' => 'EN: Features modified',
481  '_children' => [
482  [
483  'uid' => 1240,
484  'title' => 'EN: Managing data',
485  '_children' => [],
486  ],
487  [
488  'uid' => 1230,
489  'title' => 'EN: Managing content',
490  '_children' => [
491  ],
492  ],
493  ],
494  ],
495  [
496  'uid' => 1500,
497  'title' => 'Internal',
498  '_children' => [
499  [
500  'uid' => 1520,
501  'title' => 'Forecasts',
502  '_children' => [],
503  ],
504  [
505  'uid' => 1530,
506  'title' => 'Reports',
507  '_children' => [
508  ],
509  ],
510  ],
511  ],
512  [
513  'uid' => 1700,
514  'title' => 'Announcements & News',
515  '_children' => [
516  [
517  // page moved in workspace 1
518  // from pid 8110 to pid 1700 (visible now)
519  'uid' => 811000,
520  'title' => 'France',
521  '_children' => [],
522  ],
523  [
524  // page with sub-pages moved in workspace 1
525  // from pid 1510 (missing permissions) to pid 1700 (visible now)
526  'uid' => 1511,
527  'title' => 'Products',
528  '_children' => [],
529  ],
530  ],
531  ],
532  [
533  'uid' => 404,
534  'title' => 'Page not found',
535  '_children' => [
536  ],
537  ],
538  [
539  'uid' => 1930,
540  'title' => 'Our Blog',
541  '_children' => [
542  ],
543  ],
544  [
545  'uid' => 1990,
546  'title' => 'Storage',
547  '_children' => [
548  ],
549  ],
550  ],
551  ],
552  [
553  'uid' => 8110,
554  'title' => 'Europe',
555  '_children' => [
556  ],
557  ],
558  ],
559  ],
560  ];
561  self::assertEquals($expected, $actual);
562  }
563 
565  {
566  return [
567  'search for "ACME in your Region" (live value, but deleted in workspace)' => [
568  'ACME in your Region',
569  [],
570  ],
571  'search for non-existing value' => [
572  sha1(random_bytes(10)),
573  [],
574  ],
575  'search for "groups" (live value, but changed in workspace)' => [
576  'Groups',
577  [],
578  ],
579  'search for "teams" (workspace value)' => [
580  'Teams',
581  [
582  [
583  'uid' => 1400,
584  'title' => 'EN: ACME in your Region',
585  '_children' => [
586  [
587  'uid' => 1410,
588  'title' => 'EN: Teams modified',
589  '_children' => [],
590  ],
591  ],
592  ],
593  ],
594  ],
595  // page with sub-pages moved in workspace 1
596  // from pid 1510 (missing permissions) to pid 1700 (visible now)
597  'search for "products" (moved from pid 1510 to pid 1700 in workspace)' => [
598  'Product',
599  [
600  [
601  'uid' => 1700,
602  'title' => 'Announcements & News',
603  '_children' => [
604  [
605  'uid' => 1511,
606  'title' => 'Products',
607  '_children' => [
608  [
609  'uid' => 151110,
610  'title' => 'Product 1',
611  '_children' => [],
612  ],
613  ],
614  ],
615  ],
616  ],
617  ],
618  ],
619  ];
620  }
621 
622  #[DataProvider('getAllEntryPointPageTreesInWorkspaceWithSearchDataProvider')]
623  #[Test]
624  public function ‪getAllEntryPointPageTreesInWorkspaceWithSearch(string $search, array $expectedChildren): void
625  {
626  $this->‪setWorkspace(1);
627  // the record was changed from live "Groups" to "Teams modified" in a workspace
628  $actual = $this->subject->_call('getAllEntryPointPageTrees', 0, $search);
629  $keepProperties = array_flip(['uid', 'title', '_children']);
630  $actual = $this->sortTreeArray($actual);
631  $actual = $this->normalizeTreeArray($actual, $keepProperties);
632 
633  $expected = [
634  [
635  'uid' => 0,
636  'title' => 'New TYPO3 site',
637  '_children' => [
638  [
639  'uid' => 1000,
640  'title' => 'ACME Inc',
641  '_children' => $expectedChildren,
642  ],
643  [
644  'uid' => 8110,
645  'title' => 'Europe',
646  '_children' => [
647  ],
648  ],
649  ],
650  ],
651  ];
652  self::assertEquals($expected, $actual);
653  }
654 
655  #[Test]
656  public function ‪getSubtreeForAccessiblePageInWorkspace(): void
657  {
658  $this->‪setWorkspace(1);
659  $actual = $this->subject->_call('getAllEntryPointPageTrees', 1200);
660  $keepProperties = array_flip(['uid', 'title', '_children']);
661  $actual = $this->sortTreeArray($actual);
662  $actual = $this->normalizeTreeArray($actual, $keepProperties);
663 
664  $expected = [
665  [
666  'uid' => 1200,
667  'title' => 'EN: Features modified',
668  '_children' => [
669  [
670  'uid' => 1240,
671  'title' => 'EN: Managing data',
672  '_children' => [
673  [
674  'uid' => 124010,
675  'title' => 'EN: Managing complex data',
676  '_children' => [],
677  ],
678  ],
679  ],
680  [
681  'uid' => 1230,
682  'title' => 'EN: Managing content',
683  '_children' => [
684  ],
685  ],
686  ],
687  ],
688  ];
689  self::assertEquals($expected, $actual);
690  }
691 
692  #[Test]
693  public function ‪pageTreeItemsModificationEventIsTriggered(): void
694  {
695  $afterPageTreeItemsPreparedEvent = null;
696 
698  $container = $this->get('service_container');
699  $container->set(
700  'after-page-tree-items-prepared-listener',
701  static function (‪AfterPageTreeItemsPreparedEvent $event) use (&$afterPageTreeItemsPreparedEvent) {
702  $afterPageTreeItemsPreparedEvent = $event;
703  }
704  );
705 
706  $eventListener = $container->get(ListenerProvider::class);
707  $eventListener->addListener(AfterPageTreeItemsPreparedEvent::class, 'after-page-tree-items-prepared-listener');
708 
709  $request = new ‪ServerRequest(new ‪Uri('https://example.com'));
710 
711  (new ‪TreeController())->fetchDataAction($request);
712 
713  self::assertInstanceOf(AfterPageTreeItemsPreparedEvent::class, $afterPageTreeItemsPreparedEvent);
714  self::assertEquals($request, $afterPageTreeItemsPreparedEvent->getRequest());
715  self::assertCount(12, $afterPageTreeItemsPreparedEvent->getItems());
716  self::assertEquals('1000', $afterPageTreeItemsPreparedEvent->getItems()[1]['identifier']);
717  self::assertEquals('ACME Inc', $afterPageTreeItemsPreparedEvent->getItems()[1]['name']);
718  }
719 
720  private function ‪setWorkspace(int $workspaceId): void
721  {
722  $this->backendUser->workspace = $workspaceId;
723  $this->context->setAspect('workspace', new ‪WorkspaceAspect($workspaceId));
724  }
725 }
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getSubtreeForNonAccessiblePage
‪getSubtreeForNonAccessiblePage()
Definition: TreeControllerTest.php:386
‪TYPO3\CMS\Core\Localization\LanguageServiceFactory
Definition: LanguageServiceFactory.php:25
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\$subject
‪TreeController &MockObject &AccessibleObjectInterface $subject
Definition: TreeControllerTest.php:51
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\setUp
‪setUp()
Definition: TreeControllerTest.php:55
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getAllEntryPointPageTreesWithRootPageAsMountPoint
‪getAllEntryPointPageTreesWithRootPageAsMountPoint()
Definition: TreeControllerTest.php:200
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\LANGUAGE_PRESETS
‪const LANGUAGE_PRESETS
Definition: TreeControllerTest.php:45
‪TYPO3\CMS\Core\Context\WorkspaceAspect
Definition: WorkspaceAspect.php:31
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getAllEntryPointPageTreesWithSearch
‪getAllEntryPointPageTreesWithSearch()
Definition: TreeControllerTest.php:312
‪TYPO3\CMS\Backend\Controller\Event\AfterPageTreeItemsPreparedEvent
Definition: AfterPageTreeItemsPreparedEvent.php:26
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getAllEntryPointPageTreesWithMountPointPreservesOrdering
‪getAllEntryPointPageTreesWithMountPointPreservesOrdering()
Definition: TreeControllerTest.php:410
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getSubtreeForAccessiblePageInWorkspace
‪getSubtreeForAccessiblePageInWorkspace()
Definition: TreeControllerTest.php:655
‪TYPO3\CMS\Backend\Tests\Functional\Tree\Repository\Fixtures\Tree\NormalizeTreeTrait
Definition: NormalizeTreeTrait.php:21
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait
Definition: SiteBasedTestTrait.php:37
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getAllEntryPointPageTreesInWorkspace
‪getAllEntryPointPageTreesInWorkspace()
Definition: TreeControllerTest.php:442
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getSubtreeForPageOutsideMountPoint
‪getSubtreeForPageOutsideMountPoint()
Definition: TreeControllerTest.php:398
‪TYPO3\CMS\Backend\Controller\Page\TreeController
Definition: TreeController.php:48
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\pageTreeItemsModificationEventIsTriggered
‪pageTreeItemsModificationEventIsTriggered()
Definition: TreeControllerTest.php:692
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getAllEntryPointPageTrees
‪getAllEntryPointPageTrees()
Definition: TreeControllerTest.php:87
‪TYPO3\CMS\Core\Context\Context
Definition: Context.php:54
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getAllEntryPointPageTreesInWorkspaceWithSearch
‪getAllEntryPointPageTreesInWorkspaceWithSearch(string $search, array $expectedChildren)
Definition: TreeControllerTest.php:623
‪TYPO3\CMS\Core\Http\Uri
Definition: Uri.php:30
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\setWorkspace
‪setWorkspace(int $workspaceId)
Definition: TreeControllerTest.php:719
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page
Definition: LocalizationControllerTest.php:18
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\$backendUser
‪BackendUserAuthentication $backendUser
Definition: TreeControllerTest.php:52
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\$context
‪Context $context
Definition: TreeControllerTest.php:53
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest
Definition: TreeControllerTest.php:42
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getSubtreeForAccessiblePage
‪getSubtreeForAccessiblePage()
Definition: TreeControllerTest.php:355
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\$coreExtensionsToLoad
‪array $coreExtensionsToLoad
Definition: TreeControllerTest.php:49
‪TYPO3\CMS\Core\EventDispatcher\ListenerProvider
Definition: ListenerProvider.php:30
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\getAllEntryPointPageTreesInWorkspaceWithSearchDataProvider
‪static getAllEntryPointPageTreesInWorkspaceWithSearchDataProvider()
Definition: TreeControllerTest.php:563
‪TYPO3\CMS\Backend\Tests\Functional\Controller\Page\TreeControllerTest\tearDown
‪tearDown()
Definition: TreeControllerTest.php:80