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