From 6e620b4c2b4897ef846262dd0ff85e165b3065a2 Mon Sep 17 00:00:00 2001 From: Romain Canon Date: Fri, 17 Mar 2017 17:04:58 +0100 Subject: [PATCH] [TASK] Add unit tests for `FormSettings` --- .../Form/Field/Settings/FieldSettings.php | 2 +- .../Form/Settings/FormSettings.php | 26 ++++---- .../Form/Settings/FormSettingsTest.php | 60 +++++++++++++++++++ 3 files changed, 77 insertions(+), 11 deletions(-) create mode 100644 Tests/Unit/Configuration/Form/Settings/FormSettingsTest.php diff --git a/Classes/Configuration/Form/Field/Settings/FieldSettings.php b/Classes/Configuration/Form/Field/Settings/FieldSettings.php index e48359d..0889da4 100644 --- a/Classes/Configuration/Form/Field/Settings/FieldSettings.php +++ b/Classes/Configuration/Form/Field/Settings/FieldSettings.php @@ -142,7 +142,7 @@ private function getSettingsProperty($propertyName) { $result = $this->$propertyName; - if (null === $result) { + if (empty($result)) { $result = $this->withFirstParent( Configuration::class, function (Configuration $configuration) use ($propertyName) { diff --git a/Classes/Configuration/Form/Settings/FormSettings.php b/Classes/Configuration/Form/Settings/FormSettings.php index cd6623a..5d909ce 100644 --- a/Classes/Configuration/Form/Settings/FormSettings.php +++ b/Classes/Configuration/Form/Settings/FormSettings.php @@ -23,6 +23,8 @@ class FormSettings extends AbstractFormzConfiguration { use ParentsTrait; + const DEFAULT_ERROR_MESSAGE_KEY = 'default_error_message'; + /** * @var string */ @@ -33,14 +35,6 @@ class FormSettings extends AbstractFormzConfiguration */ protected $defaultErrorMessage; - /** - * Constructor. - */ - public function __construct() - { - $this->defaultErrorMessage = 'default_error_message'; - } - /** * @return string */ @@ -62,7 +56,17 @@ public function setDefaultClass($defaultClass) */ public function getDefaultErrorMessage() { - return ContextService::get()->translate($this->getSettingsProperty('defaultErrorMessage')); + $message = $this->getSettingsProperty('defaultErrorMessage') ?: self::DEFAULT_ERROR_MESSAGE_KEY; + + return ContextService::get()->translate($message); + } + + /** + * @param string $defaultErrorMessage + */ + public function setDefaultErrorMessage($defaultErrorMessage) + { + $this->defaultErrorMessage = $defaultErrorMessage; } /** @@ -83,7 +87,9 @@ private function getSettingsProperty($propertyName) $result = $this->$propertyName; if (empty($result)) { - if ($this->hasParent(Form::class)) { + if ($this->hasParent(Form::class) + && $this->hasParent(Configuration::class) + ) { $result = $this->withFirstParent( Configuration::class, function (Configuration $configuration) use ($propertyName) { diff --git a/Tests/Unit/Configuration/Form/Settings/FormSettingsTest.php b/Tests/Unit/Configuration/Form/Settings/FormSettingsTest.php new file mode 100644 index 0000000..1029199 --- /dev/null +++ b/Tests/Unit/Configuration/Form/Settings/FormSettingsTest.php @@ -0,0 +1,60 @@ +setDefaultClass('foo-bar'); + $this->assertEquals('foo-bar', $formSettings->getDefaultClass()); + } + + /** + * @test + */ + public function defaultClassIsFetchedFromParent() + { + $formSettings = new FormSettings; + $rootConfiguration = new Configuration; + $formSettings->setParents([$rootConfiguration, new Form]); + + $rootConfiguration->getSettings()->getDefaultFormSettings()->setDefaultClass('bar-baz'); + + $this->assertEquals('bar-baz', $formSettings->getDefaultClass()); + } + + /** + * @test + */ + public function setDefaultErrorMessageSetsDefaultErrorMessage() + { + $formSettings = new FormSettings; + + $formSettings->setDefaultErrorMessage('hello.world'); + $this->assertEquals('LLL::hello.world', $formSettings->getDefaultErrorMessage()); + } + + /** + * @test + */ + public function defaultErrorMessageIsFetchedFromParent() + { + $formSettings = new FormSettings; + $rootConfiguration = new Configuration; + $formSettings->setParents([$rootConfiguration, new Form]); + + $rootConfiguration->getSettings()->getDefaultFormSettings()->setDefaultErrorMessage('world.hello'); + + $this->assertEquals('LLL::LLL::world.hello', $formSettings->getDefaultErrorMessage()); + } +}