‪TYPO3CMS  11.5
ExtensionUtilityTest.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 
26 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
27 
31 class ‪ExtensionUtilityTest extends UnitTestCase
32 {
33  protected function ‪setUp(): void
34  {
35  parent::setUp();
36  ‪$GLOBALS['TSFE'] = new \stdClass();
37  ‪$GLOBALS['TSFE']->tmpl = new \stdClass();
38  ‪$GLOBALS['TSFE']->tmpl->setup = [];
39  ‪$GLOBALS['TSFE']->tmpl->setup['tt_content.']['list.']['20.'] = [
40  '9' => 'CASE',
41  '9.' => [
42  'key.' => [
43  'field' => 'layout',
44  ],
45  0 => '< plugin.tt_news',
46  ],
47  'extensionname_someplugin' => 'USER',
48  'extensionname_someplugin.' => [
49  'userFunc' => Bootstrap::class . '->run',
50  'extensionName' => 'ExtensionName',
51  'pluginName' => 'SomePlugin',
52  ],
53  'someotherextensionname_secondplugin' => 'USER',
54  'someotherextensionname_secondplugin.' => [
55  'userFunc' => Bootstrap::class . '->run',
56  'extensionName' => 'SomeOtherExtensionName',
57  'pluginName' => 'SecondPlugin',
58  ],
59  'extensionname_thirdplugin' => 'USER',
60  'extensionname_thirdplugin.' => [
61  'userFunc' => Bootstrap::class . '->run',
62  'extensionName' => 'ExtensionName',
63  'pluginName' => 'ThirdPlugin',
64  ],
65  ];
66  }
67 
73  {
74  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
75  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [FirstController::class => 'index']);
76  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
77  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
78  self::assertStringContainsString('
79  userFunc = TYPO3\\CMS\\Extbase\\Core\\Bootstrap->run
80  extensionName = MyExtension
81  pluginName = Pi1', $staticTypoScript);
82  self::assertStringNotContainsString('USER_INT', $staticTypoScript);
83  }
84 
90  {
91  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
92  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [FirstController::class => 'index']);
93  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
94  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
95  }
96 
102  {
103  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
104  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
105  FirstController::class => 'index',
106  ]);
107  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
108  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
109  self::assertStringContainsString('
110  extensionName = MyExtension
111  pluginName = Pi1', $staticTypoScript);
112  $expectedResult = [
113  'controllers' => [
114  FirstController::class => [
115  'className' => FirstController::class,
116  'alias' => 'First',
117  'actions' => ['index'],
118  ],
119  ],
120  'pluginType' => 'list_type',
121  ];
122  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
123  }
124 
130  {
131  $this->expectException(\InvalidArgumentException::class);
132  $this->expectExceptionCode(1239891990);
133  ‪ExtensionUtility::configurePlugin('', 'SomePlugin', [
134  'FirstController' => 'index',
135  ]);
136  }
137 
143  {
144  $this->expectException(\InvalidArgumentException::class);
145  $this->expectExceptionCode(1239891988);
146  ‪ExtensionUtility::configurePlugin('MyExtension', '', [
147  'FirstController' => 'index',
148  ]);
149  }
150 
156  {
157  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
158  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
159  FirstController::class => 'index,show,new, create,delete,edit,update',
160  ], [
161  FirstController::class => 'index,show',
162  ]);
163  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
164  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
165  self::assertStringContainsString('
166  extensionName = MyExtension
167  pluginName = Pi1', $staticTypoScript);
168  $expectedResult = [
169  'controllers' => [
170  FirstController::class => [
171  'className' => FirstController::class,
172  'alias' => 'First',
173  'actions' => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
174  'nonCacheableActions' => ['index', 'show'],
175  ],
176  ],
177  'pluginType' => 'list_type',
178  ];
179  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
180  }
181 
187  {
188  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
189  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
190  FirstController::class => 'index,show,new, create,delete,edit,update',
191  ], [
192  FirstController::class => 'new,show',
193  ]);
194  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
195  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
196  self::assertStringContainsString('
197  extensionName = MyExtension
198  pluginName = Pi1', $staticTypoScript);
199  $expectedResult = [
200  'controllers' => [
201  FirstController::class => [
202  'className' => FirstController::class,
203  'alias' => 'First',
204  'actions' => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
205  'nonCacheableActions' => ['new', 'show'],
206  ],
207  ],
208  'pluginType' => 'list_type',
209  ];
210  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
211  }
212 
218  {
219  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
220  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
221  FirstController::class => 'index,show,new,create,delete,edit,update',
222  SecondController::class => 'index,show,delete',
223  ThirdController::class => 'create',
224  ], [
225  FirstController::class => 'new,create,edit,update',
226  ThirdController::class => 'create',
227  ]);
228  $expectedResult = [
229  'controllers' => [
230  FirstController::class => [
231  'className' => FirstController::class,
232  'alias' => 'First',
233  'actions' => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
234  'nonCacheableActions' => ['new', 'create', 'edit', 'update'],
235  ],
236  SecondController::class => [
237  'className' => SecondController::class,
238  'alias' => 'Second',
239  'actions' => ['index', 'show', 'delete'],
240  ],
241  ThirdController::class => [
242  'className' => ThirdController::class,
243  'alias' => 'Third',
244  'actions' => ['create'],
245  'nonCacheableActions' => ['create'],
246  ],
247  ],
248  'pluginType' => 'list_type',
249  ];
250  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
251  }
252 
258  {
259  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
260  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
261  FirstController::class => 'index,show,new,create,delete,edit,update',
262  SecondController::class => 'index,show,delete',
263  ThirdController::class => 'create',
264  ], [
265  FirstController::class => 'index,new,create,edit,update',
266  SecondController::class => 'delete',
267  ThirdController::class => 'create',
268  ]);
269  $expectedResult = [
270  'controllers' => [
271  FirstController::class => [
272  'className' => FirstController::class,
273  'alias' => 'First',
274  'actions' => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
275  'nonCacheableActions' => ['index', 'new', 'create', 'edit', 'update'],
276  ],
277  SecondController::class => [
278  'className' => SecondController::class,
279  'alias' => 'Second',
280  'actions' => ['index', 'show', 'delete'],
281  'nonCacheableActions' => ['delete'],
282  ],
283  ThirdController::class => [
284  'className' => ThirdController::class,
285  'alias' => 'Third',
286  'actions' => ['create'],
287  'nonCacheableActions' => ['create'],
288  ],
289  ],
290  'pluginType' => 'list_type',
291  ];
292  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
293  }
294 
302  {
303  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = [];
305  'indexed_search',
306  'Pi2',
307  'Testing'
308  );
309  self::assertEquals(
310  'EXT:indexed_search/Resources/Public/Icons/Extension.png',
311  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][2]
312  );
313  self::assertSame(
314  'indexedsearch_pi2',
315  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][1]
316  );
317  }
318 
326  {
327  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = [];
329  'IndexedSearch',
330  'Pi2',
331  'Testing'
332  );
333  self::assertEquals(
334  'EXT:indexed_search/Resources/Public/Icons/Extension.png',
335  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][2]
336  );
337  self::assertSame(
338  'indexedsearch_pi2',
339  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][1]
340  );
341  }
342 
350  {
351  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = [];
353  'IndexedSearch',
354  'Pi2',
355  'Testing',
356  'EXT:indexed_search/foo.gif'
357  );
358  self::assertEquals(
359  'EXT:indexed_search/foo.gif',
360  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][2]
361  );
362  }
363 
371  {
372  $typeConverterClassName = ArrayConverter::class;
373 
374  // the Extbase EXTCONF is not set at all at this point
375  ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['typeConverters'] = [];
376 
377  ‪ExtensionUtility::registerTypeConverter($typeConverterClassName);
378 
379  self::assertEquals($typeConverterClassName, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['typeConverters'][0]);
380  self::assertCount(1, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['typeConverters']);
381 
382  ‪ExtensionUtility::registerTypeConverter($typeConverterClassName);
383  self::assertCount(1, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['typeConverters']);
384  }
385 
392  {
393  return [
394  'Vendor TYPO3\CMS, extension, controller given' => [
395  [
396  'vendorName' => 'TYPO3\\CMS',
397  'extensionName' => 'Ext',
398  'subpackageKey' => '',
399  'controllerName' => 'Foo',
400  ],
401  'TYPO3\\CMS\\Ext\\Controller\\FooController',
402  ],
403  'Vendor VENDOR, extension, controller given' => [
404  [
405  'vendorName' => 'VENDOR',
406  'extensionName' => 'Ext',
407  'subpackageKey' => '',
408  'controllerName' => 'Foo',
409  ],
410  'VENDOR\\Ext\\Controller\\FooController',
411  ],
412  'Vendor VENDOR, extension subpackage, controller given' => [
413  [
414  'vendorName' => 'VENDOR',
415  'extensionName' => 'Ext',
416  'subpackageKey' => 'ViewHelpers\\Widget',
417  'controllerName' => 'Foo',
418  ],
419  'VENDOR\\Ext\\ViewHelpers\\Widget\\Controller\\FooController',
420  ],
421  ];
422  }
423 
431  public function ‪getControllerObjectNameResolvesControllerObjectNameCorrectly($controllerArguments, $controllerObjectName): void
432  {
433  self::assertEquals(
434  $controllerObjectName,
436  $controllerArguments['vendorName'],
437  $controllerArguments['extensionName'],
438  $controllerArguments['subpackageKey'],
439  $controllerArguments['controllerName']
440  )
441  );
442  }
443 
448  {
449  return [
450  'Class in root namespace without controller suffix' => [
451  '',
452  'Foo',
453  ],
454  'Class in root namespace without controller suffix (2)' => [
455  '',
456  'FooBarBazQuxBlaBlub',
457  ],
458  'Controller in root namespace' => [
459  'Foo',
460  'FooController',
461  ],
462  'Controller in root namespace (lowercase)' => [
463  'foo',
464  'fooController',
465  ],
466  'Controller in namespace' => [
467  'Foo',
468  'TYPO3\\CMS\\Ext\\Controller\\FooController',
469  ],
470  'Controller in arbitrary namespace' => [
471  'Foo',
472  'Foo\\Bar\\baz\\qUx\\FooController',
473  ],
474  'Controller with lowercase suffix' => [
475  '',
476  'Foo\\Bar\\baz\\qUx\\Foocontroller',
477  ],
478  'Controller in arbitrary namespace with subfolder in Controller namespace' => [
479  'Baz\\Foo',
480  'Foo\\Bar\\Controller\\Baz\\FooController',
481  ],
482  ];
483  }
484 
492  public function ‪checkResolveControllerAliasFromControllerClassName(string $expectedControllerAlias, string $controllerClassName): void
493  {
494  self::assertEquals(
495  $expectedControllerAlias,
497  $controllerClassName
498  )
499  );
500  }
501 
506  {
507  return [
508  'Class in root namespace' => [
509  '',
510  'IndexedSearch',
511  'Foo',
512  ],
513  'Namespaced class without extension name as namespace part' => [
514  '',
515  'IndexedSearch',
516  'Foo\\Bar\\Baz\\Qux',
517  ],
518  'Namespaced class without vendor part before extension name part' => [
519  '',
520  'IndexedSearch',
521  'IndexedSearch\\Controller\\SearchController',
522  ],
523  'Namespaced class with single vendor part' => [
524  'Foo',
525  'IndexedSearch',
526  'Foo\\IndexedSearch\\Controller\\SearchController',
527  ],
528  'Namespaced class with multiple vendor parts' => [
529  'TYPO\\CMS',
530  'IndexedSearch',
531  'TYPO\\CMS\\IndexedSearch\\Controller\\SearchController',
532  ],
533  ];
534  }
535 
545  string $expectedVendor,
546  string $extensionName,
547  string $controllerClassName
548  ): void {
549  self::assertEquals(
550  $expectedVendor,
552  $extensionName,
553  $controllerClassName
554  )
555  );
556  }
557 }
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginWorksForASingleControllerAction
‪configurePluginWorksForASingleControllerAction()
Definition: ExtensionUtilityTest.php:101
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\MyExtension\Controller\FirstController
Definition: FirstController.php:20
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\resolveVendorFromExtensionAndControllerClassName
‪static string resolveVendorFromExtensionAndControllerClassName(string $extensionName, string $controllerClassName)
Definition: ExtensionUtility.php:339
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\registerPlugin
‪static registerPlugin($extensionName, $pluginName, $pluginTitle, $pluginIcon=null, $group='default')
Definition: ExtensionUtility.php:139
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginWorksForMultipleControllerActionsWithNonCacheableActionAsDefault
‪configurePluginWorksForMultipleControllerActionsWithNonCacheableActionAsDefault()
Definition: ExtensionUtilityTest.php:257
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\resolveControllerAliasFromControllerClassName
‪static string resolveControllerAliasFromControllerClassName(string $controllerClassName)
Definition: ExtensionUtility.php:293
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility
Definition: ExtensionUtility.php:29
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUnderscoredExtensionNameAndIconPathNotGiven
‪registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUnderscoredExtensionNameAndIconPathNotGiven()
Definition: ExtensionUtilityTest.php:301
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest
Definition: ExtensionUtilityTest.php:32
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginCreatesCorrectDefaultTypoScriptSetup
‪configurePluginCreatesCorrectDefaultTypoScriptSetup()
Definition: ExtensionUtilityTest.php:89
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\registerPluginTriggersAddPluginWhichSetsPluginIconPathIfIconPathIsGiven
‪registerPluginTriggersAddPluginWhichSetsPluginIconPathIfIconPathIsGiven()
Definition: ExtensionUtilityTest.php:349
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUpperCameCasedExtensionNameAndIconPathNotGiven
‪registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUpperCameCasedExtensionNameAndIconPathNotGiven()
Definition: ExtensionUtilityTest.php:325
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\registerTypeConverter
‪static registerTypeConverter($typeConverterClassName)
Definition: ExtensionUtility.php:367
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginWorksForMinimalisticSetup
‪configurePluginWorksForMinimalisticSetup()
Definition: ExtensionUtilityTest.php:72
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginThrowsExceptionIfPluginNameIsEmpty
‪configurePluginThrowsExceptionIfPluginNameIsEmpty()
Definition: ExtensionUtilityTest.php:142
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\getControllerObjectNameResolvesControllerObjectNameCorrectly
‪getControllerObjectNameResolvesControllerObjectNameCorrectly($controllerArguments, $controllerObjectName)
Definition: ExtensionUtilityTest.php:431
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\configurePlugin
‪static configurePlugin($extensionName, $pluginName, array $controllerActions, array $nonCacheableControllerActions=[], $pluginType=self::PLUGIN_TYPE_PLUGIN)
Definition: ExtensionUtility.php:50
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginRespectsNonDefaultActionAsANonCacheableAction
‪configurePluginRespectsNonDefaultActionAsANonCacheableAction()
Definition: ExtensionUtilityTest.php:186
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\MyExtension\Controller\SecondController
Definition: SecondController.php:20
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\checkResolveControllerAliasFromControllerClassNameDataProvider
‪array checkResolveControllerAliasFromControllerClassNameDataProvider()
Definition: ExtensionUtilityTest.php:447
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginRespectsDefaultActionAsANonCacheableAction
‪configurePluginRespectsDefaultActionAsANonCacheableAction()
Definition: ExtensionUtilityTest.php:155
‪TYPO3\CMS\Extbase\Tests\Unit\Utility
Definition: DebuggerUtilityTest.php:18
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\getControllerClassName
‪static string getControllerClassName(string $vendor, string $extensionKey, string $subPackageKey, string $controllerAlias)
Definition: ExtensionUtility.php:259
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\setUp
‪setUp()
Definition: ExtensionUtilityTest.php:33
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\controllerArgumentsAndExpectedObjectName
‪array controllerArgumentsAndExpectedObjectName()
Definition: ExtensionUtilityTest.php:391
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\checkResolveControllerAliasFromControllerClassName
‪checkResolveControllerAliasFromControllerClassName(string $expectedControllerAlias, string $controllerClassName)
Definition: ExtensionUtilityTest.php:492
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Extbase\Core\Bootstrap
Definition: Bootstrap.php:42
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\checkResolveVendorFromExtensionAndControllerClassName
‪checkResolveVendorFromExtensionAndControllerClassName(string $expectedVendor, string $extensionName, string $controllerClassName)
Definition: ExtensionUtilityTest.php:544
‪TYPO3\CMS\Extbase\Property\TypeConverter\ArrayConverter
Definition: ArrayConverter.php:28
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginThrowsExceptionIfExtensionNameIsEmpty
‪configurePluginThrowsExceptionIfExtensionNameIsEmpty()
Definition: ExtensionUtilityTest.php:129
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginWorksForMultipleControllerActionsWithCacheableActionAsDefault
‪configurePluginWorksForMultipleControllerActionsWithCacheableActionAsDefault()
Definition: ExtensionUtilityTest.php:217
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\checkResolveVendorFromExtensionAndControllerClassNameDataProvider
‪array checkResolveVendorFromExtensionAndControllerClassNameDataProvider()
Definition: ExtensionUtilityTest.php:505
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\sameTypeConvertersRegisteredAreAddedOnlyOnce
‪sameTypeConvertersRegisteredAreAddedOnlyOnce()
Definition: ExtensionUtilityTest.php:370
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\MyExtension\Controller\ThirdController
Definition: ThirdController.php:20