Skip to content
This repository has been archived by the owner on Mar 1, 2023. It is now read-only.

Commit

Permalink
[TASK] Add unit tests for FormSettings
Browse files Browse the repository at this point in the history
  • Loading branch information
romm committed Mar 17, 2017
1 parent eaed626 commit 4a14864
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
26 changes: 16 additions & 10 deletions Classes/Configuration/Form/Settings/FormSettings.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ class FormSettings extends AbstractFormzConfiguration
{
use ParentsTrait;

const DEFAULT_ERROR_MESSAGE_KEY = 'default_error_message';

/**
* @var string
*/
Expand All @@ -33,14 +35,6 @@ class FormSettings extends AbstractFormzConfiguration
*/
protected $defaultErrorMessage;

/**
* Constructor.
*/
public function __construct()
{
$this->defaultErrorMessage = 'default_error_message';
}

/**
* @return string
*/
Expand All @@ -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;
}

/**
Expand All @@ -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) {
Expand Down
60 changes: 60 additions & 0 deletions Tests/Unit/Configuration/Form/Settings/FormSettingsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php
namespace Romm\Formz\Tests\Unit\Configuration\Condition;

use Romm\Formz\Configuration\Configuration;
use Romm\Formz\Configuration\Form\Form;
use Romm\Formz\Configuration\Form\Settings\FormSettings;
use Romm\Formz\Tests\Unit\AbstractUnitTest;

class FormSettingsTest extends AbstractUnitTest
{
/**
* @test
*/
public function setDefaultClassSetsDefaultClass()
{
$formSettings = new FormSettings;

$formSettings->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:world.hello', $formSettings->getDefaultErrorMessage());
}
}

0 comments on commit 4a14864

Please sign in to comment.