From b1fdbd405ed420e767db66dc02fba59694e338a1 Mon Sep 17 00:00:00 2001 From: Anja Leichsenring Date: Sun, 1 Mar 2015 16:19:46 +0100 Subject: [PATCH] [TASK] UnitTests for TranslateViewHelper The TranslateViewHelper has no unit tests so far. Change-Id: Ib7bdedf7e64276fcfcb7280fafc5d48c860f21c8 Resolves: #65436 Releases: master Reviewed-on: http://review.typo3.org/37416 Reviewed-by: Helmut Hummel Tested-by: Helmut Hummel Reviewed-by: Christian Kuhn Tested-by: Christian Kuhn Reviewed-by: Michael Oehlhof Tested-by: Michael Oehlhof --- .../ViewHelpers/TranslateViewHelper.php | 16 +++- ...anslateViewHelperFixtureForEmptyString.php | 36 +++++++++ ...teViewHelperFixtureForTranslatedString.php | 36 +++++++++ .../ViewHelpers/TranslateViewHelperTest.php | 79 +++++++++++++++++++ 4 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 typo3/sysext/fluid/Tests/Unit/ViewHelpers/Fixtures/TranslateViewHelperFixtureForEmptyString.php create mode 100644 typo3/sysext/fluid/Tests/Unit/ViewHelpers/Fixtures/TranslateViewHelperFixtureForTranslatedString.php create mode 100644 typo3/sysext/fluid/Tests/Unit/ViewHelpers/TranslateViewHelperTest.php diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/TranslateViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/TranslateViewHelper.php index b8533d59da7d..dde96d3de32d 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/TranslateViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/TranslateViewHelper.php @@ -14,6 +14,7 @@ namespace TYPO3\CMS\Fluid\ViewHelpers; * Public License for more details. * * */ +use TYPO3\CMS\Extbase\Utility\LocalizationUtility; use TYPO3\CMS\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3\CMS\Fluid\Core\ViewHelper\Exception\InvalidVariableException; @@ -126,7 +127,7 @@ class TranslateViewHelper extends AbstractViewHelper implements CompilableInterf $request = $renderingContext->getControllerContext()->getRequest(); $extensionName = $extensionName === NULL ? $request->getControllerExtensionName() : $extensionName; - $value = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($id, $extensionName, $arguments); + $value = static::translate($id, $extensionName, $arguments); if ($value === NULL) { $value = $default !== NULL ? $default : $renderChildrenClosure(); if (!empty($arguments)) { @@ -138,4 +139,17 @@ class TranslateViewHelper extends AbstractViewHelper implements CompilableInterf return $value; } + /** + * Wrapper call to static LocalizationUtility + * + * @param string $id Translation Key compatible to TYPO3 Flow + * @param string $extensionName UpperCamelCased extension key (for example BlogExample) + * @param array $arguments Arguments to be replaced in the resulting string + * + * @return NULL|string + */ + static protected function translate($id, $extensionName, $arguments) { + return LocalizationUtility::translate($id, $extensionName, $arguments); + } + } diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Fixtures/TranslateViewHelperFixtureForEmptyString.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Fixtures/TranslateViewHelperFixtureForEmptyString.php new file mode 100644 index 000000000000..d021b4a3c4a1 --- /dev/null +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Fixtures/TranslateViewHelperFixtureForEmptyString.php @@ -0,0 +1,36 @@ +hello world

'; + } +} diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/TranslateViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/TranslateViewHelperTest.php new file mode 100644 index 000000000000..a4c9a3567000 --- /dev/null +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/TranslateViewHelperTest.php @@ -0,0 +1,79 @@ +subject = GeneralUtility::makeInstance(TranslateViewHelper::class); + $this->injectDependenciesIntoViewHelper($this->subject); + $this->subject->render(); + } + + /** + * @test + */ + public function renderReturnsStringForGivenKey() { + $this->subject = GeneralUtility::makeInstance(TranslateViewHelperFixtureForTranslatedString::class); + $this->injectDependenciesIntoViewHelper($this->subject); + $this->assertEquals('

hello world

', $this->subject->render('foo')); + } + + /** + * @test + */ + public function renderReturnsStringForGivenId() { + $this->subject = GeneralUtility::makeInstance(TranslateViewHelperFixtureForTranslatedString::class); + $this->injectDependenciesIntoViewHelper($this->subject); + $this->assertEquals('

hello world

', $this->subject->render(NULL, 'bar')); + } + + /** + * @test + */ + public function renderReturnsDefaultIfNoTranslationIsFound() { + $this->subject = GeneralUtility::makeInstance(TranslateViewHelperFixtureForEmptyString::class); + $this->injectDependenciesIntoViewHelper($this->subject); + $this->assertEquals('default', $this->subject->render(NULL, 'bar', 'default')); + } + + /** + * @test + */ + public function resultIsNotHtmlEscapedIfSoRequested() { + $this->subject = GeneralUtility::makeInstance(TranslateViewHelperFixtureForTranslatedString::class); + $this->injectDependenciesIntoViewHelper($this->subject); + $this->assertEquals('<p>hello world</p>', $this->subject->render('foo', NULL, NULL, TRUE)); + } + +} -- 2.20.1