‪TYPO3CMS  10.4
ExtensionUtilityTest.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
26 
30 class ‪ExtensionUtilityTest extends UnitTestCase
31 {
32  protected function ‪setUp(): void
33  {
34  parent::setUp();
35  ‪$GLOBALS['TSFE'] = new \stdClass();
36  ‪$GLOBALS['TSFE']->tmpl = new \stdClass();
37  ‪$GLOBALS['TSFE']->tmpl->setup = [];
38  ‪$GLOBALS['TSFE']->tmpl->setup['tt_content.']['list.']['20.'] = [
39  '9' => 'CASE',
40  '9.' => [
41  'key.' => [
42  'field' => 'layout'
43  ],
44  0 => '< plugin.tt_news'
45  ],
46  'extensionname_someplugin' => 'USER',
47  'extensionname_someplugin.' => [
48  'userFunc' => Bootstrap::class . '->run',
49  'extensionName' => 'ExtensionName',
50  'pluginName' => 'SomePlugin'
51  ],
52  'someotherextensionname_secondplugin' => 'USER',
53  'someotherextensionname_secondplugin.' => [
54  'userFunc' => Bootstrap::class . '->run',
55  'extensionName' => 'SomeOtherExtensionName',
56  'pluginName' => 'SecondPlugin'
57  ],
58  'extensionname_thirdplugin' => 'USER',
59  'extensionname_thirdplugin.' => [
60  'userFunc' => Bootstrap::class . '->run',
61  'extensionName' => 'ExtensionName',
62  'pluginName' => 'ThirdPlugin'
63  ]
64  ];
65  }
66 
72  {
73  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
74  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [FirstController::class => 'index']);
75  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
76  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
77  self::assertStringContainsString('
78  userFunc = TYPO3\\CMS\\Extbase\\Core\\Bootstrap->run
79  extensionName = MyExtension
80  pluginName = Pi1', $staticTypoScript);
81  self::assertStringNotContainsString('USER_INT', $staticTypoScript);
82  }
83 
89  {
90  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
91  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [FirstController::class => 'index']);
92  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
93  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
94  }
95 
101  {
102  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
103  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
104  FirstController::class => 'index'
105  ]);
106  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
107  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
108  self::assertStringContainsString('
109  extensionName = MyExtension
110  pluginName = Pi1', $staticTypoScript);
111  $expectedResult = [
112  'controllers' => [
113  FirstController::class => [
114  'className' => FirstController::class,
115  'alias' => 'First',
116  'actions' => ['index']
117  ]
118  ],
119  'pluginType' => 'list_type'
120  ];
121  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
122  }
123 
129  {
130  $this->expectException(\InvalidArgumentException::class);
131  $this->expectExceptionCode(1239891990);
132  ‪ExtensionUtility::configurePlugin('', 'SomePlugin', [
133  'FirstController' => 'index'
134  ]);
135  }
136 
142  {
143  $this->expectException(\InvalidArgumentException::class);
144  $this->expectExceptionCode(1239891988);
145  ‪ExtensionUtility::configurePlugin('MyExtension', '', [
146  'FirstController' => 'index'
147  ]);
148  }
149 
155  {
156  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
157  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
158  FirstController::class => 'index,show,new, create,delete,edit,update'
159  ], [
160  FirstController::class => 'index,show'
161  ]);
162  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
163  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
164  self::assertStringContainsString('
165  extensionName = MyExtension
166  pluginName = Pi1', $staticTypoScript);
167  $expectedResult = [
168  'controllers' => [
169  FirstController::class => [
170  'className' => FirstController::class,
171  'alias' => 'First',
172  'actions' => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
173  'nonCacheableActions' => ['index', 'show']
174  ]
175  ],
176  'pluginType' => 'list_type'
177  ];
178  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
179  }
180 
186  {
187  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
188  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
189  FirstController::class => 'index,show,new, create,delete,edit,update'
190  ], [
191  FirstController::class => 'new,show'
192  ]);
193  $staticTypoScript = ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['defaultContentRendering'];
194  self::assertStringContainsString('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
195  self::assertStringContainsString('
196  extensionName = MyExtension
197  pluginName = Pi1', $staticTypoScript);
198  $expectedResult = [
199  'controllers' => [
200  FirstController::class => [
201  'className' => FirstController::class,
202  'alias' => 'First',
203  'actions' => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
204  'nonCacheableActions' => ['new', 'show']
205  ]
206  ],
207  'pluginType' => 'list_type'
208  ];
209  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
210  }
211 
217  {
218  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
219  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
220  FirstController::class => 'index,show,new,create,delete,edit,update',
221  SecondController::class => 'index,show,delete',
222  ThirdController::class => 'create'
223  ], [
224  FirstController::class => 'new,create,edit,update',
225  ThirdController::class => 'create'
226  ]);
227  $expectedResult = [
228  'controllers' => [
229  FirstController::class => [
230  'className' => FirstController::class,
231  'alias' => 'First',
232  'actions' => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
233  'nonCacheableActions' => ['new', 'create', 'edit', 'update']
234  ],
235  SecondController::class => [
236  'className' => SecondController::class,
237  'alias' => 'Second',
238  'actions' => ['index', 'show', 'delete']
239  ],
240  ThirdController::class => [
241  'className' => ThirdController::class,
242  'alias' => 'Third',
243  'actions' => ['create'],
244  'nonCacheableActions' => ['create']
245  ]
246  ],
247  'pluginType' => 'list_type'
248  ];
249  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
250  }
251 
257  {
258  ‪$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
259  ‪ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
260  FirstController::class => 'index,show,new,create,delete,edit,update',
261  SecondController::class => 'index,show,delete',
262  ThirdController::class => 'create'
263  ], [
264  FirstController::class => 'index,new,create,edit,update',
265  SecondController::class => 'delete',
266  ThirdController::class => 'create'
267  ]);
268  $expectedResult = [
269  'controllers' => [
270  FirstController::class => [
271  'className' => FirstController::class,
272  'alias' => 'First',
273  'actions' => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
274  'nonCacheableActions' => ['index', 'new', 'create', 'edit', 'update']
275  ],
276  SecondController::class => [
277  'className' => SecondController::class,
278  'alias' => 'Second',
279  'actions' => ['index', 'show', 'delete'],
280  'nonCacheableActions' => ['delete']
281  ],
282  ThirdController::class => [
283  'className' => ThirdController::class,
284  'alias' => 'Third',
285  'actions' => ['create'],
286  'nonCacheableActions' => ['create']
287  ]
288  ],
289  'pluginType' => 'list_type'
290  ];
291  self::assertEquals($expectedResult, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
292  }
293 
301  {
302  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = [];
304  'indexed_search',
305  'Pi2',
306  'Testing'
307  );
308  self::assertEquals(
309  'EXT:indexed_search/Resources/Public/Icons/Extension.png',
310  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][2]
311  );
312  self::assertSame(
313  'indexedsearch_pi2',
314  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][1]
315  );
316  }
317 
325  {
326  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = [];
328  'IndexedSearch',
329  'Pi2',
330  'Testing'
331  );
332  self::assertEquals(
333  'EXT:indexed_search/Resources/Public/Icons/Extension.png',
334  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][2]
335  );
336  self::assertSame(
337  'indexedsearch_pi2',
338  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][1]
339  );
340  }
341 
349  {
350  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = [];
352  'IndexedSearch',
353  'Pi2',
354  'Testing',
355  'EXT:indexed_search/foo.gif'
356  );
357  self::assertEquals(
358  'EXT:indexed_search/foo.gif',
359  ‪$GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'][0][2]
360  );
361  }
362 
370  {
371  $typeConverterClassName = ArrayConverter::class;
372 
373  // the Extbase EXTCONF is not set at all at this point
374  ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['typeConverters'] = [];
375 
376  ‪ExtensionUtility::registerTypeConverter($typeConverterClassName);
377 
378  self::assertEquals($typeConverterClassName, ‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['typeConverters'][0]);
379  self::assertEquals(1, count(‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['typeConverters']));
380 
381  ‪ExtensionUtility::registerTypeConverter($typeConverterClassName);
382  self::assertEquals(1, count(‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['typeConverters']));
383  }
384 
391  {
392  return [
393  'Vendor TYPO3\CMS, extension, controller given' => [
394  [
395  'vendorName' => 'TYPO3\\CMS',
396  'extensionName' => 'Ext',
397  'subpackageKey' => '',
398  'controllerName' => 'Foo',
399  ],
400  'TYPO3\\CMS\\Ext\\Controller\\FooController',
401  ],
402  'Vendor TYPO3\CMS, extension, subpackage, controller given' => [
403  [
404  'vendorName' => 'TYPO3\\CMS',
405  'extensionName' => 'Fluid',
406  'subpackageKey' => 'ViewHelpers\\Widget',
407  'controllerName' => 'Paginate',
408  ],
409  PaginateController::class,
410  ],
411  'Vendor VENDOR, extension, controller given' => [
412  [
413  'vendorName' => 'VENDOR',
414  'extensionName' => 'Ext',
415  'subpackageKey' => '',
416  'controllerName' => 'Foo',
417  ],
418  'VENDOR\\Ext\\Controller\\FooController',
419  ],
420  'Vendor VENDOR, extension subpackage, controller given' => [
421  [
422  'vendorName' => 'VENDOR',
423  'extensionName' => 'Ext',
424  'subpackageKey' => 'ViewHelpers\\Widget',
425  'controllerName' => 'Foo',
426  ],
427  'VENDOR\\Ext\\ViewHelpers\\Widget\\Controller\\FooController',
428  ],
429  ];
430  }
431 
439  public function ‪getControllerObjectNameResolvesControllerObjectNameCorrectly($controllerArguments, $controllerObjectName)
440  {
441  self::assertEquals(
442  $controllerObjectName,
444  $controllerArguments['vendorName'],
445  $controllerArguments['extensionName'],
446  $controllerArguments['subpackageKey'],
447  $controllerArguments['controllerName']
448  )
449  );
450  }
451 
456  {
457  return [
458  'Class in root namespace without controller suffix' => [
459  '',
460  'Foo',
461  ],
462  'Class in root namespace without controller suffix (2)' => [
463  '',
464  'FooBarBazQuxBlaBlub',
465  ],
466  'Controller in root namespace' => [
467  'Foo',
468  'FooController',
469  ],
470  'Controller in root namespace (lowercase)' => [
471  'foo',
472  'fooController',
473  ],
474  'Controller in namespace' => [
475  'Foo',
476  'TYPO3\\CMS\\Ext\\Controller\\FooController',
477  ],
478  'Controller in arbitrary namespace' => [
479  'Foo',
480  'Foo\\Bar\\baz\\qUx\\FooController',
481  ],
482  'Controller with lowercase suffix' => [
483  '',
484  'Foo\\Bar\\baz\\qUx\\Foocontroller',
485  ],
486  'Controller in arbitrary namespace with subfolder in Controller namespace' => [
487  'Baz\\Foo',
488  'Foo\\Bar\\Controller\\Baz\\FooController',
489  ],
490  ];
491  }
492 
500  public function ‪checkResolveControllerAliasFromControllerClassName(string $expectedControllerAlias, string $controllerClassName)
501  {
502  self::assertEquals(
503  $expectedControllerAlias,
505  $controllerClassName
506  )
507  );
508  }
509 
514  {
515  return [
516  'Class in root namespace' => [
517  '',
518  'IndexedSearch',
519  'Foo',
520  ],
521  'Namespaced class without extension name as namespace part' => [
522  '',
523  'IndexedSearch',
524  'Foo\\Bar\\Baz\\Qux',
525  ],
526  'Namespaced class without vendor part before extension name part' => [
527  '',
528  'IndexedSearch',
529  'IndexedSearch\\Controller\\SearchController',
530  ],
531  'Namespaced class with single vendor part' => [
532  'Foo',
533  'IndexedSearch',
534  'Foo\\IndexedSearch\\Controller\\SearchController',
535  ],
536  'Namespaced class with multiple vendor parts' => [
537  'TYPO\\CMS',
538  'IndexedSearch',
539  'TYPO\\CMS\\IndexedSearch\\Controller\\SearchController',
540  ],
541  ];
542  }
543 
553  string $expectedVendor,
554  string $extensionName,
555  string $controllerClassName
556  ) {
557  self::assertEquals(
558  $expectedVendor,
560  $extensionName,
561  $controllerClassName
562  )
563  );
564  }
565 }
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginWorksForASingleControllerAction
‪configurePluginWorksForASingleControllerAction()
Definition: ExtensionUtilityTest.php:100
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\MyExtension\Controller\FirstController
Definition: FirstController.php:21
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\resolveVendorFromExtensionAndControllerClassName
‪static string resolveVendorFromExtensionAndControllerClassName(string $extensionName, string $controllerClassName)
Definition: ExtensionUtility.php:371
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\registerPlugin
‪static registerPlugin($extensionName, $pluginName, $pluginTitle, $pluginIcon=null, $group='default')
Definition: ExtensionUtility.php:161
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginWorksForMultipleControllerActionsWithNonCacheableActionAsDefault
‪configurePluginWorksForMultipleControllerActionsWithNonCacheableActionAsDefault()
Definition: ExtensionUtilityTest.php:256
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\resolveControllerAliasFromControllerClassName
‪static string resolveControllerAliasFromControllerClassName(string $controllerClassName)
Definition: ExtensionUtility.php:325
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility
Definition: ExtensionUtility.php:30
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUnderscoredExtensionNameAndIconPathNotGiven
‪registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUnderscoredExtensionNameAndIconPathNotGiven()
Definition: ExtensionUtilityTest.php:300
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest
Definition: ExtensionUtilityTest.php:31
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginCreatesCorrectDefaultTypoScriptSetup
‪configurePluginCreatesCorrectDefaultTypoScriptSetup()
Definition: ExtensionUtilityTest.php:88
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\registerPluginTriggersAddPluginWhichSetsPluginIconPathIfIconPathIsGiven
‪registerPluginTriggersAddPluginWhichSetsPluginIconPathIfIconPathIsGiven()
Definition: ExtensionUtilityTest.php:348
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUpperCameCasedExtensionNameAndIconPathNotGiven
‪registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUpperCameCasedExtensionNameAndIconPathNotGiven()
Definition: ExtensionUtilityTest.php:324
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\registerTypeConverter
‪static registerTypeConverter($typeConverterClassName)
Definition: ExtensionUtility.php:399
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginWorksForMinimalisticSetup
‪configurePluginWorksForMinimalisticSetup()
Definition: ExtensionUtilityTest.php:71
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginThrowsExceptionIfPluginNameIsEmpty
‪configurePluginThrowsExceptionIfPluginNameIsEmpty()
Definition: ExtensionUtilityTest.php:141
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\getControllerObjectNameResolvesControllerObjectNameCorrectly
‪getControllerObjectNameResolvesControllerObjectNameCorrectly($controllerArguments, $controllerObjectName)
Definition: ExtensionUtilityTest.php:439
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\configurePlugin
‪static configurePlugin($extensionName, $pluginName, array $controllerActions, array $nonCacheableControllerActions=[], $pluginType=self::PLUGIN_TYPE_PLUGIN)
Definition: ExtensionUtility.php:51
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginRespectsNonDefaultActionAsANonCacheableAction
‪configurePluginRespectsNonDefaultActionAsANonCacheableAction()
Definition: ExtensionUtilityTest.php:185
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\MyExtension\Controller\SecondController
Definition: SecondController.php:21
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\checkResolveControllerAliasFromControllerClassNameDataProvider
‪array checkResolveControllerAliasFromControllerClassNameDataProvider()
Definition: ExtensionUtilityTest.php:455
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginRespectsDefaultActionAsANonCacheableAction
‪configurePluginRespectsDefaultActionAsANonCacheableAction()
Definition: ExtensionUtilityTest.php:154
‪TYPO3\CMS\Extbase\Tests\Unit\Utility
Definition: DebuggerUtilityTest.php:16
‪TYPO3\CMS\Extbase\Utility\ExtensionUtility\getControllerClassName
‪static string getControllerClassName(string $vendor, string $extensionKey, string $subPackageKey, string $controllerAlias)
Definition: ExtensionUtility.php:291
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\setUp
‪setUp()
Definition: ExtensionUtilityTest.php:32
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\controllerArgumentsAndExpectedObjectName
‪array controllerArgumentsAndExpectedObjectName()
Definition: ExtensionUtilityTest.php:390
‪TYPO3\CMS\Fluid\ViewHelpers\Widget\Controller\PaginateController
Definition: PaginateController.php:27
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\checkResolveControllerAliasFromControllerClassName
‪checkResolveControllerAliasFromControllerClassName(string $expectedControllerAlias, string $controllerClassName)
Definition: ExtensionUtilityTest.php:500
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Extbase\Core\Bootstrap
Definition: Bootstrap.php:43
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\checkResolveVendorFromExtensionAndControllerClassName
‪checkResolveVendorFromExtensionAndControllerClassName(string $expectedVendor, string $extensionName, string $controllerClassName)
Definition: ExtensionUtilityTest.php:552
‪TYPO3\CMS\Extbase\Property\TypeConverter\ArrayConverter
Definition: ArrayConverter.php:28
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginThrowsExceptionIfExtensionNameIsEmpty
‪configurePluginThrowsExceptionIfExtensionNameIsEmpty()
Definition: ExtensionUtilityTest.php:128
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\configurePluginWorksForMultipleControllerActionsWithCacheableActionAsDefault
‪configurePluginWorksForMultipleControllerActionsWithCacheableActionAsDefault()
Definition: ExtensionUtilityTest.php:216
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\checkResolveVendorFromExtensionAndControllerClassNameDataProvider
‪array checkResolveVendorFromExtensionAndControllerClassNameDataProvider()
Definition: ExtensionUtilityTest.php:513
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\ExtensionUtilityTest\sameTypeConvertersRegisteredAreAddedOnlyOnce
‪sameTypeConvertersRegisteredAreAddedOnlyOnce()
Definition: ExtensionUtilityTest.php:369
‪TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\MyExtension\Controller\ThirdController
Definition: ThirdController.php:21