‪TYPO3CMS  9.5
ActionControllerTest.php
Go to the documentation of this file.
1 <?php
2 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 
33 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
34 use TYPO3Fluid\Fluid\View\AbstractTemplateView;
35 use TYPO3Fluid\Fluid\View\TemplateView as FluidTemplateView;
36 
40 class ‪ActionControllerTest extends UnitTestCase
41 {
45  protected ‪$resetSingletonInstances = true;
46 
50  protected ‪$actionController;
51 
55  protected ‪$mockObjectManager;
56 
60  protected ‪$mockUriBuilder;
61 
66 
71  {
72  $mockControllerContext = $this->createMock(ControllerContext::class);
73  $mockFluidTemplateView = $this->createMock(ViewInterface::class);
74  $mockFluidTemplateView->expects($this->once())->method('setControllerContext')->with($mockControllerContext);
75  $mockFluidTemplateView->expects($this->once())->method('canRender')->with($mockControllerContext)->will($this->returnValue(true));
76  ‪$mockObjectManager = $this->createMock(ObjectManagerInterface::class);
77  ‪$mockObjectManager->expects($this->at(0))->method('get')->with(TemplateView::class)->will($this->returnValue($mockFluidTemplateView));
78  $mockController = $this->getAccessibleMock(ActionController::class, ['buildControllerContext', 'resolveViewObjectName', 'setViewConfiguration'], [], '', false);
79  $mockController->expects($this->once())->method('resolveViewObjectName')->will($this->returnValue(false));
80  $mockController->_set('objectManager', ‪$mockObjectManager);
81  $mockController->_set('controllerContext', $mockControllerContext);
82  $this->assertSame($mockFluidTemplateView, $mockController->_call('resolveView'));
83  }
84 
89  {
90  $mockRequest = $this->createMock(Request::class);
91  $mockRequest->expects($this->once())->method('getControllerVendorName')->will($this->returnValue('MyVendor'));
92  $mockRequest->expects($this->once())->method('getControllerExtensionName')->will($this->returnValue('MyPackage'));
93  $mockRequest->expects($this->once())->method('getControllerName')->will($this->returnValue('MyController'));
94  $mockRequest->expects($this->once())->method('getControllerActionName')->will($this->returnValue('MyAction'));
95  $mockRequest->expects($this->atLeastOnce())->method('getFormat')->will($this->returnValue('MyFormat'));
96  ‪$mockObjectManager = $this->createMock(ObjectManagerInterface::class);
97  $mockController = $this->getAccessibleMock(ActionController::class, ['dummy'], [], '', false);
98  $mockController->_set('request', $mockRequest);
99  $mockController->_set('objectManager', ‪$mockObjectManager);
100  $mockController->_set('namespacesViewObjectNamePattern', 'RandomViewObject@vendor\@extension\View\@controller\@action@format');
101  $mockController->_call('resolveViewObjectName');
102  }
103 
108  {
109  eval('namespace MyVendor\MyPackage\View\MyController; class MyActionMyFormat {}');
110 
111  $mockRequest = $this->createMock(Request::class);
112  $mockRequest->expects($this->once())->method('getControllerExtensionName')->will($this->returnValue('MyPackage'));
113  $mockRequest->expects($this->once())->method('getControllerName')->will($this->returnValue('MyController'));
114  $mockRequest->expects($this->once())->method('getControllerActionName')->will($this->returnValue('MyAction'));
115  $mockRequest->expects($this->once())->method('getControllerVendorName')->will($this->returnValue('MyVendor'));
116  $mockRequest->expects($this->atLeastOnce())->method('getFormat')->will($this->returnValue('MyFormat'));
117  ‪$mockObjectManager = $this->createMock(ObjectManagerInterface::class);
118  $mockController = $this->getAccessibleMock(ActionController::class, ['dummy'], [], '', false);
119  $mockController->_set('request', $mockRequest);
120  $mockController->_set('objectManager', ‪$mockObjectManager);
121 
122  $this->assertEquals(
123  'MyVendor\MyPackage\View\MyController\MyActionMyFormat',
124  $mockController->_call('resolveViewObjectName')
125  );
126  }
127 
132  {
133  $mockRequest = $this->createMock(Request::class);
134  $mockRequest->expects($this->once())->method('getControllerActionName')->will($this->returnValue('fooBar'));
136  $mockController = $this->getAccessibleMock(ActionController::class, ['fooBarAction'], [], '', false);
137  $mockController->_set('request', $mockRequest);
138  $this->assertEquals('fooBarAction', $mockController->_call('resolveActionMethodName'));
139  }
140 
145  {
146  $this->expectException(NoSuchActionException::class);
147  $this->expectExceptionCode(1186669086);
148  $mockRequest = $this->createMock(Request::class);
149  $mockRequest->expects($this->once())->method('getControllerActionName')->will($this->returnValue('fooBar'));
151  $mockController = $this->getAccessibleMock(ActionController::class, ['otherBarAction'], [], '', false);
152  $mockController->_set('request', $mockRequest);
153  $mockController->_call('resolveActionMethodName');
154  }
155 
160  {
161  $mockRequest = $this->createMock(Request::class);
162  $mockArguments = $this->getMockBuilder(Arguments::class)
163  ->setMethods(['addNewArgument', 'removeAll'])
164  ->getMock();
165  $mockArguments->expects($this->at(0))->method('addNewArgument')->with('stringArgument', 'string', true);
166  $mockArguments->expects($this->at(1))->method('addNewArgument')->with('integerArgument', 'integer', true);
167  $mockArguments->expects($this->at(2))->method('addNewArgument')->with('objectArgument', 'F3_Foo_Bar', true);
168  $mockController = $this->getAccessibleMock(ActionController::class, ['fooAction', 'evaluateDontValidateAnnotations'], [], '', false);
169  $methodParameters = [
170  'stringArgument' => [
171  'position' => 0,
172  'byReference' => false,
173  'array' => false,
174  'optional' => false,
175  'allowsNull' => false,
176  'type' => 'string',
177  'hasDefaultValue' => false
178  ],
179  'integerArgument' => [
180  'position' => 1,
181  'byReference' => false,
182  'array' => false,
183  'optional' => false,
184  'allowsNull' => false,
185  'type' => 'integer',
186  'hasDefaultValue' => false
187  ],
188  'objectArgument' => [
189  'position' => 2,
190  'byReference' => false,
191  'array' => false,
192  'optional' => false,
193  'allowsNull' => false,
194  'type' => 'F3_Foo_Bar',
195  'hasDefaultValue' => false
196  ]
197  ];
198 
199  $classSchemaMock = $this->createMock(ClassSchema::class);
200  $classSchemaMock
201  ->expects($this->any())
202  ->method('getMethod')
203  ->with('fooAction')
204  ->willReturn([
205  'params' => $methodParameters
206  ]);
207 
208  $mockReflectionService = $this->createMock(ReflectionService::class);
209  $mockReflectionService
210  ->expects($this->any())
211  ->method('getClassSchema')
212  ->with(get_class($mockController))
213  ->willReturn($classSchemaMock);
214  $mockController->_set('reflectionService', $mockReflectionService);
215  $mockController->_set('request', $mockRequest);
216  $mockController->_set('arguments', $mockArguments);
217  $mockController->_set('actionMethodName', 'fooAction');
218  $mockController->_call('initializeActionMethodArguments');
219  }
220 
225  {
226  $mockRequest = $this->createMock(Request::class);
227  $mockArguments = $this->createMock(Arguments::class);
228  $mockArguments->expects($this->at(0))->method('addNewArgument')->with('arg1', 'string', true);
229  $mockArguments->expects($this->at(1))->method('addNewArgument')->with('arg2', 'array', false, [21]);
230  $mockArguments->expects($this->at(2))->method('addNewArgument')->with('arg3', 'string', false, 42);
231  $mockController = $this->getAccessibleMock(ActionController::class, ['fooAction', 'evaluateDontValidateAnnotations'], [], '', false);
232  $methodParameters = [
233  'arg1' => [
234  'position' => 0,
235  'byReference' => false,
236  'array' => false,
237  'optional' => false,
238  'allowsNull' => false,
239  'type' => 'string',
240  'hasDefaultValue' => false
241  ],
242  'arg2' => [
243  'position' => 1,
244  'byReference' => false,
245  'array' => true,
246  'optional' => true,
247  'defaultValue' => [21],
248  'allowsNull' => false,
249  'hasDefaultValue' => true
250  ],
251  'arg3' => [
252  'position' => 2,
253  'byReference' => false,
254  'array' => false,
255  'optional' => true,
256  'defaultValue' => 42,
257  'allowsNull' => false,
258  'type' => 'string',
259  'hasDefaultValue' => true
260  ]
261  ];
262 
263  $classSchemaMock = $this->createMock(ClassSchema::class);
264  $classSchemaMock
265  ->expects($this->any())
266  ->method('getMethod')
267  ->with('fooAction')
268  ->willReturn([
269  'params' => $methodParameters
270  ]);
271 
272  $mockReflectionService = $this->createMock(ReflectionService::class);
273  $mockReflectionService
274  ->expects($this->any())
275  ->method('getClassSchema')
276  ->with(get_class($mockController))
277  ->willReturn($classSchemaMock);
278  $mockController->_set('reflectionService', $mockReflectionService);
279  $mockController->_set('request', $mockRequest);
280  $mockController->_set('arguments', $mockArguments);
281  $mockController->_set('actionMethodName', 'fooAction');
282  $mockController->_call('initializeActionMethodArguments');
283  }
284 
289  {
290  $this->expectException(InvalidArgumentTypeException::class);
291  $this->expectExceptionCode(1253175643);
292  $mockRequest = $this->createMock(Request::class);
293  $mockArguments = $this->createMock(Arguments::class);
294  $mockController = $this->getAccessibleMock(ActionController::class, ['fooAction'], [], '', false);
295  $methodParameters = [
296  'arg1' => [
297  'position' => 0,
298  'byReference' => false,
299  'array' => false,
300  'optional' => false,
301  'allowsNull' => false
302  ]
303  ];
304 
305  $classSchemaMock = $this->createMock(ClassSchema::class);
306  $classSchemaMock
307  ->expects($this->any())
308  ->method('getMethod')
309  ->with('fooAction')
310  ->willReturn([
311  'params' => $methodParameters
312  ]);
313 
314  $mockReflectionService = $this->createMock(ReflectionService::class);
315  $mockReflectionService
316  ->expects($this->any())
317  ->method('getClassSchema')
318  ->with(get_class($mockController))
319  ->willReturn($classSchemaMock);
320  $mockController->_set('reflectionService', $mockReflectionService);
321  $mockController->_set('request', $mockRequest);
322  $mockController->_set('arguments', $mockArguments);
323  $mockController->_set('actionMethodName', 'fooAction');
324  $mockController->_call('initializeActionMethodArguments');
325  }
326 
333  public function ‪setViewConfigurationResolvesTemplateRootPathsForTemplateRootPath($configuration, $expected)
334  {
336  $mockController = $this->getAccessibleMock(ActionController::class, ['dummy'], [], '', false);
338  $mockConfigurationManager = $this->createMock(ConfigurationManagerInterface::class);
339  $mockConfigurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($configuration));
340  $mockController->injectConfigurationManager($mockConfigurationManager);
341  $mockController->_set('request', $this->createMock(Request::class), ['getControllerExtensionKey']);
342  $view = $this->getMockBuilder(ViewInterface::class)
343  ->setMethods(['setControllerContext', 'assign', 'assignMultiple', 'canRender', 'render', 'initializeView', 'setTemplateRootPaths'])
344  ->getMock();
345  $view->expects($this->once())->method('setTemplateRootPaths')->with($expected);
346  $mockController->_call('setViewConfiguration', $view);
347  }
348 
352  public function ‪templateRootPathDataProvider()
353  {
354  return [
355  'text keys' => [
356  [
357  'view' => [
358  'templateRootPaths' => [
359  'default' => 'some path',
360  'extended' => 'some other path'
361  ]
362  ]
363  ],
364  [
365  'extended' => 'some other path',
366  'default' => 'some path'
367  ]
368  ],
369  'numerical keys' => [
370  [
371  'view' => [
372  'templateRootPaths' => [
373  '10' => 'some path',
374  '20' => 'some other path',
375  '15' => 'intermediate specific path'
376  ]
377  ]
378  ],
379  [
380  '20' => 'some other path',
381  '15' => 'intermediate specific path',
382  '10' => 'some path'
383  ]
384  ],
385  'mixed keys' => [
386  [
387  'view' => [
388  'templateRootPaths' => [
389  '10' => 'some path',
390  'very_specific' => 'some other path',
391  '15' => 'intermediate specific path'
392  ]
393  ]
394  ],
395  [
396  '15' => 'intermediate specific path',
397  'very_specific' => 'some other path',
398  '10' => 'some path'
399  ]
400  ],
401  ];
402  }
403 
411  public function ‪setViewConfigurationResolvesLayoutRootPathsForLayoutRootPath($configuration, $expected)
412  {
414  $mockController = $this->getAccessibleMock(ActionController::class, ['dummy'], [], '', false);
416  $mockConfigurationManager = $this->createMock(ConfigurationManagerInterface::class);
417  $mockConfigurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($configuration));
418  $mockController->injectConfigurationManager($mockConfigurationManager);
419  $mockController->_set('request', $this->createMock(Request::class), ['getControllerExtensionKey']);
420  $view = $this->getMockBuilder(ViewInterface::class)
421  ->setMethods(['setControllerContext', 'assign', 'assignMultiple', 'canRender', 'render', 'initializeView', 'setlayoutRootPaths'])
422  ->getMock();
423  $view->expects($this->once())->method('setlayoutRootPaths')->with($expected);
424  $mockController->_call('setViewConfiguration', $view);
425  }
426 
430  public function ‪layoutRootPathDataProvider()
431  {
432  return [
433  'text keys' => [
434  [
435  'view' => [
436  'layoutRootPaths' => [
437  'default' => 'some path',
438  'extended' => 'some other path'
439  ]
440  ]
441  ],
442  [
443  'extended' => 'some other path',
444  'default' => 'some path'
445  ]
446  ],
447  'numerical keys' => [
448  [
449  'view' => [
450  'layoutRootPaths' => [
451  '10' => 'some path',
452  '20' => 'some other path',
453  '15' => 'intermediate specific path'
454  ]
455  ]
456  ],
457  [
458  '20' => 'some other path',
459  '15' => 'intermediate specific path',
460  '10' => 'some path'
461  ]
462  ],
463  'mixed keys' => [
464  [
465  'view' => [
466  'layoutRootPaths' => [
467  '10' => 'some path',
468  'very_specific' => 'some other path',
469  '15' => 'intermediate specific path'
470  ]
471  ]
472  ],
473  [
474  '15' => 'intermediate specific path',
475  'very_specific' => 'some other path',
476  '10' => 'some path'
477  ]
478  ],
479  ];
480  }
481 
489  public function ‪setViewConfigurationResolvesPartialRootPathsForPartialRootPath($configuration, $expected)
490  {
492  $mockController = $this->getAccessibleMock(ActionController::class, ['dummy'], [], '', false);
494  $mockConfigurationManager = $this->createMock(ConfigurationManagerInterface::class);
495  $mockConfigurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($configuration));
496  $mockController->injectConfigurationManager($mockConfigurationManager);
497  $mockController->_set('request', $this->createMock(Request::class), ['getControllerExtensionKey']);
498  $view = $this->getMockBuilder(ViewInterface::class)
499  ->setMethods(['setControllerContext', 'assign', 'assignMultiple', 'canRender', 'render', 'initializeView', 'setpartialRootPaths'])
500  ->getMock();
501  $view->expects($this->once())->method('setpartialRootPaths')->with($expected);
502  $mockController->_call('setViewConfiguration', $view);
503  }
504 
508  public function ‪partialRootPathDataProvider()
509  {
510  return [
511  'text keys' => [
512  [
513  'view' => [
514  'partialRootPaths' => [
515  'default' => 'some path',
516  'extended' => 'some other path'
517  ]
518  ]
519  ],
520  [
521  'extended' => 'some other path',
522  'default' => 'some path'
523  ]
524  ],
525  'numerical keys' => [
526  [
527  'view' => [
528  'partialRootPaths' => [
529  '10' => 'some path',
530  '20' => 'some other path',
531  '15' => 'intermediate specific path'
532  ]
533  ]
534  ],
535  [
536  '20' => 'some other path',
537  '15' => 'intermediate specific path',
538  '10' => 'some path'
539  ]
540  ],
541  'mixed keys' => [
542  [
543  'view' => [
544  'partialRootPaths' => [
545  '10' => 'some path',
546  'very_specific' => 'some other path',
547  '15' => 'intermediate specific path'
548  ]
549  ]
550  ],
551  [
552  '15' => 'intermediate specific path',
553  'very_specific' => 'some other path',
554  '10' => 'some path'
555  ]
556  ],
557  ];
558  }
559 
567  public function ‪rendersAndAssignsAssetsFromViewIntoPageRenderer($viewMock, $expectedHeader, $expectedFooter)
568  {
569  $this->mockObjectManager = $this->createMock(ObjectManager::class);
570  $pageRendererMock = $this->getMockBuilder(PageRenderer::class)->setMethods(['addHeaderData', 'addFooterData'])->getMock();
571  if (!$viewMock instanceof FluidTemplateView) {
572  $this->mockObjectManager->expects($this->never())->method('get');
573  } else {
574  $this->mockObjectManager->expects($this->any())->method('get')->with(PageRenderer::class)->willReturn($pageRendererMock);
575  }
576  if (!empty(trim($expectedHeader ?? ''))) {
577  $pageRendererMock->expects($this->once())->method('addHeaderData')->with($expectedHeader);
578  } else {
579  $pageRendererMock->expects($this->never())->method('addHeaderData');
580  }
581  if (!empty(trim($expectedFooter ?? ''))) {
582  $pageRendererMock->expects($this->once())->method('addFooterData')->with($expectedFooter);
583  } else {
584  $pageRendererMock->expects($this->never())->method('addFooterData');
585  }
586  $requestMock = $this->getMockBuilder(RequestInterface::class)->getMockForAbstractClass();
587  $subject = new ActionController();
588  $viewProperty = new \ReflectionProperty($subject, 'view');
589  $viewProperty->setAccessible(true);
590  $viewProperty->setValue($subject, $viewMock);
591  $objectManagerProperty = new \ReflectionProperty($subject, 'objectManager');
592  $objectManagerProperty->setAccessible(true);
593  $objectManagerProperty->setValue($subject, $this->mockObjectManager);
594 
595  $method = new \ReflectionMethod($subject, 'renderAssetsForRequest');
596  $method->setAccessible(true);
597  $method->invokeArgs($subject, [$requestMock]);
598  }
599 
603  public function ‪headerAssetDataProvider()
604  {
605  $viewWithHeaderData = $this->getMockBuilder(FluidTemplateView::class)->setMethods(['renderSection'])->disableOriginalConstructor()->getMock();
606  $viewWithHeaderData->expects($this->at(0))->method('renderSection')->with('HeaderAssets', $this->anything(), true)->willReturn('custom-header-data');
607  $viewWithHeaderData->expects($this->at(1))->method('renderSection')->with('FooterAssets', $this->anything(), true)->willReturn(null);
608  $viewWithFooterData = $this->getMockBuilder(FluidTemplateView::class)->setMethods(['renderSection'])->disableOriginalConstructor()->getMock();
609  $viewWithFooterData->expects($this->at(0))->method('renderSection')->with('HeaderAssets', $this->anything(), true)->willReturn(null);
610  $viewWithFooterData->expects($this->at(1))->method('renderSection')->with('FooterAssets', $this->anything(), true)->willReturn('custom-footer-data');
611  $viewWithBothData = $this->getMockBuilder(FluidTemplateView::class)->setMethods(['renderSection'])->disableOriginalConstructor()->getMock();
612  $viewWithBothData->expects($this->at(0))->method('renderSection')->with('HeaderAssets', $this->anything(), true)->willReturn('custom-header-data');
613  $viewWithBothData->expects($this->at(1))->method('renderSection')->with('FooterAssets', $this->anything(), true)->willReturn('custom-footer-data');
614  $invalidView = $this->getMockBuilder(AbstractTemplateView::class)->disableOriginalConstructor()->getMockForAbstractClass();
615  return [
616  [$viewWithHeaderData, 'custom-header-data', null],
617  [$viewWithFooterData, null, 'custom-footer-data'],
618  [$viewWithBothData, 'custom-header-data', 'custom-footer-data'],
619  [$invalidView, null, null]
620  ];
621  }
622 }
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\setViewConfigurationResolvesLayoutRootPathsForLayoutRootPath
‪setViewConfigurationResolvesLayoutRootPathsForLayoutRootPath($configuration, $expected)
Definition: ActionControllerTest.php:406
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller
Definition: AbstractControllerTest.php:2
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\$mockObjectManager
‪TYPO3 CMS Extbase Object ObjectManagerInterface $mockObjectManager
Definition: ActionControllerTest.php:52
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\$mockUriBuilder
‪TYPO3 CMS Extbase Mvc Web Routing UriBuilder $mockUriBuilder
Definition: ActionControllerTest.php:56
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\layoutRootPathDataProvider
‪array layoutRootPathDataProvider()
Definition: ActionControllerTest.php:425
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\$mockMvcPropertyMappingConfigurationService
‪TYPO3 CMS Extbase Mvc Controller MvcPropertyMappingConfigurationService $mockMvcPropertyMappingConfigurationService
Definition: ActionControllerTest.php:60
‪TYPO3\CMS\Extbase\Mvc\Controller\ControllerContext
Definition: ControllerContext.php:21
‪TYPO3\CMS\Extbase\Mvc\Controller\Arguments
Definition: Arguments.php:22
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentTypeException
Definition: InvalidArgumentTypeException.php:21
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
Definition: ConfigurationManagerInterface.php:22
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\resolveViewUsesFluidTemplateViewIfTemplateIsAvailable
‪resolveViewUsesFluidTemplateViewIfTemplateIsAvailable()
Definition: ActionControllerTest.php:65
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\setViewConfigurationResolvesPartialRootPathsForPartialRootPath
‪setViewConfigurationResolvesPartialRootPathsForPartialRootPath($configuration, $expected)
Definition: ActionControllerTest.php:484
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\headerAssetDataProvider
‪array headerAssetDataProvider()
Definition: ActionControllerTest.php:598
‪TYPO3\CMS\Fluid\View\TemplateView
Definition: TemplateView.php:24
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\templateRootPathDataProvider
‪array templateRootPathDataProvider()
Definition: ActionControllerTest.php:347
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\setViewConfigurationResolvesTemplateRootPathsForTemplateRootPath
‪setViewConfigurationResolvesTemplateRootPathsForTemplateRootPath($configuration, $expected)
Definition: ActionControllerTest.php:328
‪TYPO3\CMS\Extbase\Object\ObjectManagerInterface
Definition: ObjectManagerInterface.php:23
‪TYPO3\CMS\Extbase\Reflection\ReflectionService
Definition: ReflectionService.php:27
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\rendersAndAssignsAssetsFromViewIntoPageRenderer
‪rendersAndAssignsAssetsFromViewIntoPageRenderer($viewMock, $expectedHeader, $expectedFooter)
Definition: ActionControllerTest.php:562
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:35
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\partialRootPathDataProvider
‪array partialRootPathDataProvider()
Definition: ActionControllerTest.php:503
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: ActionControllerTest.php:44
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\resolveActionMethodNameReturnsTheCurrentActionMethodNameFromTheRequest
‪resolveActionMethodNameReturnsTheCurrentActionMethodNameFromTheRequest()
Definition: ActionControllerTest.php:126
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\resolveActionMethodNameThrowsAnExceptionIfTheActionDefinedInTheRequestDoesNotExist
‪resolveActionMethodNameThrowsAnExceptionIfTheActionDefinedInTheRequestDoesNotExist()
Definition: ActionControllerTest.php:139
‪TYPO3\CMS\Extbase\Mvc\View\ViewInterface
Definition: ViewInterface.php:21
‪TYPO3\CMS\Extbase\Mvc\RequestInterface
Definition: RequestInterface.php:21
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\resolveViewObjectNameUsesNamespacedViewObjectNamePatternForExtensionsWithVendor
‪resolveViewObjectNameUsesNamespacedViewObjectNamePatternForExtensionsWithVendor()
Definition: ActionControllerTest.php:102
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\initializeActionMethodArgumentsRegistersArgumentsFoundInTheSignatureOfTheCurrentActionMethod
‪initializeActionMethodArgumentsRegistersArgumentsFoundInTheSignatureOfTheCurrentActionMethod()
Definition: ActionControllerTest.php:154
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\initializeActionMethodArgumentsThrowsExceptionIfDataTypeWasNotSpecified
‪initializeActionMethodArgumentsThrowsExceptionIfDataTypeWasNotSpecified()
Definition: ActionControllerTest.php:283
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\resolveViewObjectNameUsesViewObjectNamePatternToResolveViewObjectName
‪resolveViewObjectNameUsesViewObjectNamePatternToResolveViewObjectName()
Definition: ActionControllerTest.php:83
‪TYPO3\CMS\Extbase\Mvc\Controller\ActionController
Definition: ActionController.php:31
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest
Definition: ActionControllerTest.php:41
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\initializeActionMethodArgumentsRegistersOptionalArgumentsAsSuch
‪initializeActionMethodArgumentsRegistersOptionalArgumentsAsSuch()
Definition: ActionControllerTest.php:219
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ActionControllerTest\$actionController
‪TYPO3 CMS Extbase Mvc Controller ActionController PHPUnit_Framework_MockObject_MockObject TYPO3 TestingFramework Core AccessibleObjectInterface $actionController
Definition: ActionControllerTest.php:48
‪TYPO3\CMS\Extbase\Mvc\Exception\NoSuchActionException
Definition: NoSuchActionException.php:21
‪TYPO3\CMS\Extbase\Reflection\ClassSchema
Definition: ClassSchema.php:41
‪TYPO3\CMS\Extbase\Object\ObjectManager
Definition: ObjectManager.php:25
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:23