[TASK] Deprecate render method arguments on ViewHelpers 96/52796/8
authorClaus Due <claus@namelesscoder.net>
Fri, 12 May 2017 20:04:49 +0000 (22:04 +0200)
committerBenni Mack <benni@typo3.org>
Tue, 13 Jun 2017 11:34:06 +0000 (13:34 +0200)
Deprecates usage of arguments on render methods and
refactors the abstract ViewHelper class to avoid injecting
ReflectionService in every ViewHelper, calling on it only
when the ViewHelper actually requires it.

Safe removal since the DI property is declared private and
thus cannot be accessed in ViewHelper classes.

Change-Id: I94bb7e9f306b34c25dc31519eb17316c88ea0540
Resolves: #81213
Releases: master
Reviewed-on: https://review.typo3.org/52796
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/core/Documentation/Changelog/master/Deprecation-81213-RenderMethodArgumentOnViewHelpersDeprecated.rst [new file with mode: 0644]
typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Link/ActionViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Link/PageViewHelper.php
typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/AbstractViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/TextfieldViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Format/HtmlentitiesDecodeViewHelperTest.php

diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-81213-RenderMethodArgumentOnViewHelpersDeprecated.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-81213-RenderMethodArgumentOnViewHelpersDeprecated.rst
new file mode 100644 (file)
index 0000000..7cd6627
--- /dev/null
@@ -0,0 +1,33 @@
+.. include:: ../../Includes.txt
+
+=======================================================================
+Deprecation: #81213 - Render method arguments on ViewHelpers deprecated
+=======================================================================
+
+See :issue:`81213`
+
+Description
+===========
+
+Support for arguments on the ``render()`` method of ViewHelpers has been deprecated.
+
+
+Impact
+======
+
+Usage of render method arguments will cause a deprecation message to be logged about the specific Viewhelper class.
+
+
+Affected Installations
+======================
+
+Any TYPO3 site or extension using ViewHelpers with one or more arguments on the ``render()`` method.
+
+
+Migration
+=========
+
+Switch to ``initializeArguments`` method (override this from parent) and call ``registerArgument`` to register each
+argument supported by the ViewHelper.
+
+.. index:: Fluid
index c524f82..5bffd10 100644 (file)
@@ -17,6 +17,7 @@ namespace TYPO3\CMS\Fluid\Core\ViewHelper;
 use Psr\Log\LoggerInterface;
 use TYPO3\CMS\Core\Log\LogManager;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Reflection\ReflectionService;
 
 /**
  * The abstract base class for all view helpers.
@@ -34,13 +35,6 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
     protected $controllerContext;
 
     /**
-     * Reflection service
-     *
-     * @var \TYPO3\CMS\Extbase\Reflection\ReflectionService
-     */
-    private $reflectionService;
-
-    /**
      * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface
      */
     protected $objectManager;
@@ -65,16 +59,6 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
     }
 
     /**
-     * Inject a Reflection service
-     *
-     * @param \TYPO3\CMS\Extbase\Reflection\ReflectionService $reflectionService Reflection service
-     */
-    public function injectReflectionService(\TYPO3\CMS\Extbase\Reflection\ReflectionService $reflectionService)
-    {
-        $this->reflectionService = $reflectionService;
-    }
-
-    /**
      * Call the render() method and handle errors.
      *
      * @return string the rendered ViewHelper
@@ -83,9 +67,11 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
     protected function callRenderMethod()
     {
         $renderMethodParameters = [];
-        foreach ($this->argumentDefinitions as $argumentName => $argumentDefinition) {
-            if ($argumentDefinition instanceof \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition && $argumentDefinition->isMethodParameter()) {
-                $renderMethodParameters[$argumentName] = $this->arguments[$argumentName];
+        if ($this->hasRenderMethodArguments()) {
+            foreach ($this->argumentDefinitions as $argumentName => $argumentDefinition) {
+                if ($argumentDefinition instanceof \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition && $argumentDefinition->isMethodParameter()) {
+                    $renderMethodParameters[$argumentName] = $this->arguments[$argumentName];
+                }
             }
         }
 
@@ -110,18 +96,27 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
     }
 
     /**
+     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10; intentionally not deprecation logged (logged once above)
+     * @return bool
+     */
+    protected function hasRenderMethodArguments()
+    {
+        return (new \ReflectionMethod($this, 'render'))->getNumberOfParameters() > 0;
+    }
+
+    /**
      * Register method arguments for "render" by analysing the doc comment above.
      *
+     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10; logged from this location but not elsewhere in class.
      * @throws \TYPO3Fluid\Fluid\Core\Parser\Exception
      */
     protected function registerRenderMethodArguments()
     {
-        $methodParameters = $this->reflectionService->getMethodParameters(get_class($this), 'render');
-        if (count($methodParameters) === 0) {
-            return;
-        }
+        GeneralUtility::deprecationLog(sprintf('Render method argument support is deprecated (used on class "%s"), switch to initializeArguments and registerArgument.', get_class($this)));
 
-        $methodTags = $this->reflectionService->getMethodTagsValues(get_class($this), 'render');
+        $reflectionService = $this->getReflectionService();
+        $methodParameters = $reflectionService->getMethodParameters(get_class($this), 'render');
+        $methodTags = $reflectionService->getMethodTagsValues(get_class($this), 'render');
 
         $paramAnnotations = [];
         if (isset($methodTags['param'])) {
@@ -154,12 +149,21 @@ abstract class AbstractViewHelper extends \TYPO3Fluid\Fluid\Core\ViewHelper\Abst
     }
 
     /**
+     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10; intentionally not deprecation logged (logged once above)
+     * @return ReflectionService
+     */
+    protected function getReflectionService()
+    {
+        return $this->objectManager->get(ReflectionService::class);
+    }
+
+    /**
      * @return \TYPO3Fluid\Fluid\Core\ViewHelper\ArgumentDefinition[]
      * @throws \TYPO3Fluid\Fluid\Core\Parser\Exception
      */
     public function prepareArguments()
     {
-        if (method_exists($this, 'registerRenderMethodArguments')) {
+        if ($this->hasRenderMethodArguments() && method_exists($this, 'registerRenderMethodArguments')) {
             $this->registerRenderMethodArguments();
         }
         return parent::prepareArguments();
index 2b1cbd5..ca2a558 100644 (file)
@@ -45,30 +45,47 @@ class ActionViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBased
         $this->registerTagAttribute('rel', 'string', 'Specifies the relationship between the current document and the linked document');
         $this->registerTagAttribute('rev', 'string', 'Specifies the relationship between the linked document and the current document');
         $this->registerTagAttribute('target', 'string', 'Specifies where to open the linked document');
+        $this->registerArgument('action', 'string', 'Target action');
+        $this->registerArgument('controller', 'string', 'Target controller. If NULL current controllerName is used');
+        $this->registerArgument('extensionName', 'string', 'Target Extension Name (without "tx_" prefix and no underscores). If NULL the current extension name is used');
+        $this->registerArgument('pluginName', 'string', 'Target plugin. If empty, the current plugin name is used');
+        $this->registerArgument('pageUid', 'int', 'Target page. See TypoLink destination');
+        $this->registerArgument('pageType', 'int', 'Type of the target page. See typolink.parameter');
+        $this->registerArgument('noCache', 'bool', 'Set this to disable caching for the target page. You should not need this.');
+        $this->registerArgument('noCacheHash', 'bool', 'Set this to suppress the cHash query parameter created by TypoLink. You should not need this.');
+        $this->registerArgument('section', 'string', 'The anchor to be added to the URI');
+        $this->registerArgument('format', 'string', 'The requested format, e.g. ".html');
+        $this->registerArgument('linkAccessRestrictedPages', 'bool', 'If set, links pointing to access restricted pages will still link to the page even though the page cannot be accessed.');
+        $this->registerArgument('additionalParams', 'array', 'Additional query parameters that won\'t be prefixed like $arguments (overrule $arguments)');
+        $this->registerArgument('absolute', 'bool', 'If set, the URI of the rendered link is absolute');
+        $this->registerArgument('addQueryString', 'bool', 'If set, the current query parameters will be kept in the URI');
+        $this->registerArgument('argumentsToBeExcludedFromQueryString', 'array', 'Arguments to be removed from the URI. Only active if $addQueryString = TRUE');
+        $this->registerArgument('addQueryStringMethod', 'string', 'Set which parameters will be kept. Only active if $addQueryString = TRUE');
+        $this->registerArgument('arguments', 'array', 'Arguments for the controller action, associative array');
     }
 
     /**
-     * @param string $action Target action
-     * @param array $arguments Arguments
-     * @param string $controller Target controller. If NULL current controllerName is used
-     * @param string $extensionName Target Extension Name (without "tx_" prefix and no underscores). If NULL the current extension name is used
-     * @param string $pluginName Target plugin. If empty, the current plugin name is used
-     * @param int $pageUid target page. See TypoLink destination
-     * @param int $pageType type of the target page. See typolink.parameter
-     * @param bool $noCache set this to disable caching for the target page. You should not need this.
-     * @param bool $noCacheHash set this to suppress the cHash query parameter created by TypoLink. You should not need this.
-     * @param string $section the anchor to be added to the URI
-     * @param string $format The requested format, e.g. ".html
-     * @param bool $linkAccessRestrictedPages If set, links pointing to access restricted pages will still link to the page even though the page cannot be accessed.
-     * @param array $additionalParams additional query parameters that won't be prefixed like $arguments (overrule $arguments)
-     * @param bool $absolute If set, the URI of the rendered link is absolute
-     * @param bool $addQueryString If set, the current query parameters will be kept in the URI
-     * @param array $argumentsToBeExcludedFromQueryString arguments to be removed from the URI. Only active if $addQueryString = TRUE
-     * @param string $addQueryStringMethod Set which parameters will be kept. Only active if $addQueryString = TRUE
      * @return string Rendered link
      */
-    public function render($action = null, array $arguments = [], $controller = null, $extensionName = null, $pluginName = null, $pageUid = null, $pageType = 0, $noCache = false, $noCacheHash = false, $section = '', $format = '', $linkAccessRestrictedPages = false, array $additionalParams = [], $absolute = false, $addQueryString = false, array $argumentsToBeExcludedFromQueryString = [], $addQueryStringMethod = null)
+    public function render()
     {
+        $action = $this->arguments['action'];
+        $controller = $this->arguments['controller'];
+        $extensionName = $this->arguments['extensionName'];
+        $pluginName = $this->arguments['pluginName'];
+        $pageUid = (int)$this->arguments['pageUid'];
+        $pageType = (int)$this->arguments['pageType'];
+        $noCache = (bool)$this->arguments['noCache'];
+        $noCacheHash = (bool)$this->arguments['useCacheHash'];
+        $section = (string)$this->arguments['section'];
+        $format = (string)$this->arguments['format'];
+        $linkAccessRestrictedPages = (bool)$this->arguments['linkAccessRestrictedPages'];
+        $additionalParams = (array)$this->arguments['additionalParams'];
+        $absolute = (bool)$this->arguments['absolute'];
+        $addQueryString = (bool)$this->arguments['addQueryString'];
+        $argumentsToBeExcludedFromQueryString = (array)$this->arguments['argumentsToBeExcludedFromQueryString'];
+        $addQueryStringMethod = $this->arguments['addQueryStringMethod'];
+        $parameters = $this->arguments['arguments'];
         $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder();
         $uri = $uriBuilder
             ->reset()
@@ -84,7 +101,7 @@ class ActionViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBased
             ->setAddQueryString($addQueryString)
             ->setArgumentsToBeExcludedFromQueryString($argumentsToBeExcludedFromQueryString)
             ->setAddQueryStringMethod($addQueryStringMethod)
-            ->uriFor($action, $arguments, $controller, $extensionName, $pluginName);
+            ->uriFor($action, $parameters, $controller, $extensionName, $pluginName);
         $this->tag->addAttribute('href', $uri);
         $this->tag->setContent($this->renderChildren());
         $this->tag->forceClosingTag(true);
index 3edd964..1eb8029 100644 (file)
@@ -59,24 +59,35 @@ class PageViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedVi
         $this->registerUniversalTagAttributes();
         $this->registerTagAttribute('target', 'string', 'Target of link', false);
         $this->registerTagAttribute('rel', 'string', 'Specifies the relationship between the current document and the linked document', false);
+        $this->registerArgument('pageUid', 'int', 'Target page. See TypoLink destination');
+        $this->registerArgument('pageType', 'int', 'Type of the target page. See typolink.parameter');
+        $this->registerArgument('noCache', 'bool', 'Set this to disable caching for the target page. You should not need this.');
+        $this->registerArgument('noCacheHash', 'bool', 'Set this to suppress the cHash query parameter created by TypoLink. You should not need this.');
+        $this->registerArgument('section', 'string', 'The anchor to be added to the URI');
+        $this->registerArgument('linkAccessRestrictedPages', 'bool', 'If set, links pointing to access restricted pages will still link to the page even though the page cannot be accessed.');
+        $this->registerArgument('additionalParams', 'array', 'Additional query parameters that won\'t be prefixed like $arguments (overrule $arguments)');
+        $this->registerArgument('absolute', 'bool', 'If set, the URI of the rendered link is absolute');
+        $this->registerArgument('addQueryString', 'bool', 'If set, the current query parameters will be kept in the URI');
+        $this->registerArgument('argumentsToBeExcludedFromQueryString', 'array', 'Arguments to be removed from the URI. Only active if $addQueryString = TRUE');
+        $this->registerArgument('addQueryStringMethod', 'string', 'Set which parameters will be kept. Only active if $addQueryString = TRUE');
     }
 
     /**
-     * @param int|NULL $pageUid target page. See TypoLink destination
-     * @param array $additionalParams query parameters to be attached to the resulting URI
-     * @param int $pageType type of the target page. See typolink.parameter
-     * @param bool $noCache set this to disable caching for the target page. You should not need this.
-     * @param bool $noCacheHash set this to suppress the cHash query parameter created by TypoLink. You should not need this.
-     * @param string $section the anchor to be added to the URI
-     * @param bool $linkAccessRestrictedPages If set, links pointing to access restricted pages will still link to the page even though the page cannot be accessed.
-     * @param bool $absolute If set, the URI of the rendered link is absolute
-     * @param bool $addQueryString If set, the current query parameters will be kept in the URI
-     * @param array $argumentsToBeExcludedFromQueryString arguments to be removed from the URI. Only active if $addQueryString = TRUE
-     * @param string $addQueryStringMethod Set which parameters will be kept. Only active if $addQueryString = TRUE
      * @return string Rendered page URI
      */
-    public function render($pageUid = null, array $additionalParams = [], $pageType = 0, $noCache = false, $noCacheHash = false, $section = '', $linkAccessRestrictedPages = false, $absolute = false, $addQueryString = false, array $argumentsToBeExcludedFromQueryString = [], $addQueryStringMethod = null)
+    public function render()
     {
+        $pageUid = (int)$this->arguments['pageUid'];
+        $pageType = (int)$this->arguments['pageType'];
+        $noCache = (bool)$this->arguments['noCache'];
+        $noCacheHash = (bool)$this->arguments['useCacheHash'];
+        $section = (string)$this->arguments['section'];
+        $linkAccessRestrictedPages = (bool)$this->arguments['linkAccessRestrictedPages'];
+        $additionalParams = (array)$this->arguments['additionalParams'];
+        $absolute = (bool)$this->arguments['absolute'];
+        $addQueryString = (bool)$this->arguments['addQueryString'];
+        $argumentsToBeExcludedFromQueryString = (array)$this->arguments['argumentsToBeExcludedFromQueryString'];
+        $addQueryStringMethod = $this->arguments['addQueryStringMethod'];
         $uriBuilder = $this->renderingContext->getControllerContext()->getUriBuilder();
         $uri = $uriBuilder->reset()
             ->setTargetPageUid($pageUid)
index d4d420e..7c1a973 100644 (file)
@@ -27,11 +27,6 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperVariableContainer;
 class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase
 {
     /**
-     * @var \TYPO3\CMS\Extbase\Reflection\ReflectionService
-     */
-    protected $mockReflectionService;
-
-    /**
      * @var array
      */
     protected $fixtureMethodParameters = [
@@ -95,8 +90,8 @@ class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestC
             ]
         );
         $reflectionService->expects($this->once())->method('getMethodTagsValues')->willReturn([]);
-        $fixture = $this->getAccessibleMock(TestViewHelper::class, ['render']);
-        $fixture->injectReflectionService($reflectionService);
+        $fixture = $this->getAccessibleMock(TestViewHelper::class, ['render', 'getReflectionService']);
+        $fixture->expects($this->once())->method('getReflectionService')->willReturn($reflectionService);
         $this->expectException(Exception::class);
         $this->callInaccessibleMethod($fixture, 'registerRenderMethodArguments');
     }
@@ -143,9 +138,9 @@ class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestC
         $reflectionService->expects($this->once())->method('getMethodTagsValues')->willReturn(
             []
         );
-        $fixture = $this->getAccessibleMock(TestViewHelper::class, ['render']);
+        $fixture = $this->getAccessibleMock(TestViewHelper::class, ['render', 'getReflectionService']);
         $namedArguments = array_combine(['param1', 'param2', 'param3'], $arguments);
-        $fixture->injectReflectionService($reflectionService);
+        $fixture->expects($this->once())->method('getReflectionService')->willReturn($reflectionService);
         $this->callInaccessibleMethod($fixture, 'registerRenderMethodArguments');
         $fixture->setArguments($namedArguments);
         if ($expectsException) {
@@ -180,7 +175,6 @@ class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestC
     public function prepareArgumentsCallsInitializeArguments()
     {
         $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'initializeArguments'], [], '', false);
-        $viewHelper->injectReflectionService($this->mockReflectionService);
 
         $viewHelper->expects($this->once())->method('initializeArguments');
 
@@ -196,19 +190,19 @@ class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestC
         $dataCacheMock->expects($this->any())->method('has')->will($this->returnValue(true));
         $dataCacheMock->expects($this->any())->method('get')->will($this->returnValue([]));
 
-        $viewHelper = new \TYPO3\CMS\Fluid\Tests\Unit\Core\Fixtures\TestViewHelper();
+        $reflectionServiceMock = $this->getMockBuilder(ReflectionService::class)->getMock();
+        $reflectionServiceMock->expects($this->once())->method('getMethodParameters')->willReturn(['fake' => ['type' => 'int', 'defaultValue' => 'def']]);
+        $reflectionServiceMock->expects($this->once())->method('getMethodTagsValues')->willReturn(['param']);
 
-        $this->mockReflectionService->expects($this->once())->method('getMethodParameters')->with(\TYPO3\CMS\Fluid\Tests\Unit\Core\Fixtures\TestViewHelper::class, 'render')->will($this->returnValue($this->fixtureMethodParameters));
-        $this->mockReflectionService->expects($this->once())->method('getMethodTagsValues')->with(\TYPO3\CMS\Fluid\Tests\Unit\Core\Fixtures\TestViewHelper::class, 'render')->will($this->returnValue($this->fixtureMethodTags));
-        $viewHelper->injectReflectionService($this->mockReflectionService);
+        $viewHelper = $this->getMockBuilder(\TYPO3\CMS\Fluid\Tests\Unit\Core\Fixtures\TestViewHelper::class)->setMethods(['getReflectionService'])->getMock();
+        $viewHelper->expects($this->once())->method('getReflectionService')->willReturn($reflectionServiceMock);
 
         $expected = [
-            'param1' => new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition('param1', 'integer', 'P1 Stuff', true, null, true),
-            'param2' => new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition('param2', 'array', 'P2 Stuff', true, null, true),
-            'param3' => new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition('param3', 'string', 'P3 Stuff', false, 'default', true),
+            'fake' => new \TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition('fake', 'int', '', false, 'def', true)
         ];
 
-        $this->assertEquals($expected, $viewHelper->prepareArguments(), 'Annotation based arguments were not registered.');
+        $this->callInaccessibleMethod($viewHelper, 'registerRenderMethodArguments');
+        $this->assertAttributeEquals($expected, 'argumentDefinitions', $viewHelper, 'Annotation based arguments were not registered.');
     }
 
     /**
@@ -217,7 +211,6 @@ class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestC
     public function validateArgumentsCallsPrepareArguments()
     {
         $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'prepareArguments'], [], '', false);
-        $viewHelper->injectReflectionService($this->mockReflectionService);
 
         $viewHelper->expects($this->once())->method('prepareArguments')->will($this->returnValue([]));
 
@@ -242,7 +235,6 @@ class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestC
     public function validateArgumentsCallsTheRightValidators()
     {
         $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'prepareArguments'], [], '', false);
-        $viewHelper->injectReflectionService($this->mockReflectionService);
 
         $viewHelper->setArguments(['test' => 'Value of argument']);
 
@@ -259,7 +251,6 @@ class AbstractViewHelperTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestC
     public function validateArgumentsCallsTheRightValidatorsAndThrowsExceptionIfValidationIsWrong()
     {
         $viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper::class, ['render', 'prepareArguments'], [], '', false);
-        $viewHelper->injectReflectionService($this->mockReflectionService);
 
         $this->expectException(\InvalidArgumentException::class);
         $this->expectExceptionCode(1256475113);
index 914e022..76621b7 100644 (file)
@@ -14,7 +14,6 @@ namespace TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Extbase\Reflection\ReflectionService;
 use TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Form\Fixtures\EmptySyntaxTreeNode;
 use TYPO3\CMS\Fluid\ViewHelpers\Form\TextfieldViewHelper;
 use TYPO3\TestingFramework\Fluid\Unit\ViewHelpers\ViewHelperBaseTestcase;
@@ -83,8 +82,6 @@ class TextfieldViewHelperTest extends ViewHelperBaseTestcase
             ]
         );
         $this->injectDependenciesIntoViewHelper($this->viewHelper);
-        $reflectionServiceProphecy = $this->prophesize(ReflectionService::class);
-        $this->viewHelper->injectReflectionService($reflectionServiceProphecy->reveal());
 
         $this->viewHelper->expects($this->once())->method('setErrorClassAttribute');
         $this->viewHelper->render();
index 3a43dd1..1156502 100644 (file)
@@ -14,8 +14,6 @@ namespace TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Format;
  * The TYPO3 project - inspiring people to share!
  */
 
-use Prophecy\Prophecy\ObjectProphecy;
-use TYPO3\CMS\Extbase\Reflection\ReflectionService;
 use TYPO3\CMS\Fluid\ViewHelpers\Format\HtmlentitiesDecodeViewHelper;
 use TYPO3\TestingFramework\Fluid\Unit\ViewHelpers\ViewHelperBaseTestcase;
 
@@ -25,11 +23,6 @@ use TYPO3\TestingFramework\Fluid\Unit\ViewHelpers\ViewHelperBaseTestcase;
 class HtmlentitiesDecodeViewHelperTest extends ViewHelperBaseTestcase
 {
     /**
-     * @var ReflectionService|ObjectProphecy
-     */
-    protected $reflectionServiceProphecy;
-
-    /**
      * @var HtmlentitiesDecodeViewHelper
      */
     protected $viewHelper;
@@ -44,9 +37,7 @@ class HtmlentitiesDecodeViewHelperTest extends ViewHelperBaseTestcase
     protected function setUp()
     {
         parent::setUp();
-        $this->reflectionServiceProphecy = $this->prophesize(ReflectionService::class);
         $this->viewHelper = new HtmlentitiesDecodeViewHelper();
-        $this->viewHelper->injectReflectionService($this->reflectionServiceProphecy->reveal());
         $this->injectDependenciesIntoViewHelper($this->viewHelper);
     }