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 Validation
Browse files Browse the repository at this point in the history
  • Loading branch information
romm committed Mar 19, 2017
1 parent c23d433 commit 31b5d72
Show file tree
Hide file tree
Showing 5 changed files with 151 additions and 8 deletions.
22 changes: 15 additions & 7 deletions Classes/Configuration/Form/Field/Validation/Validation.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,14 @@ public function getPriority()
return $this->priority;
}

/**
* @param string $priority
*/
public function setPriority($priority)
{
$this->priority = $priority;
}

/**
* @return array
*/
Expand All @@ -112,14 +120,11 @@ public function getOptions()
}

/**
* @param string $optionName
* @return null|mixed
* @param array $options
*/
public function getOption($optionName)
public function setOptions(array $options)
{
return (null !== $optionName && true === isset($this->options[$optionName]))
? $this->options[$optionName]
: null;
$this->options = $options;
}

/**
Expand Down Expand Up @@ -205,6 +210,9 @@ public function activateAjaxUsage($flag = true)
*/
public function getParentField()
{
return $this->getFirstParent(Field::class);
/** @var Field $field */
$field = $this->getFirstParent(Field::class);

return $field;
}
}
7 changes: 6 additions & 1 deletion Classes/Configuration/Form/Form.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,10 @@ public static function getConfigurationObjectServices()
*/
public function getRootConfiguration()
{
return $this->getFirstParent(Configuration::class);
/** @var Configuration $configuration */
$configuration = $this->getFirstParent(Configuration::class);

return $configuration;
}

/**
Expand Down Expand Up @@ -118,6 +121,8 @@ public function getField($name)
*/
public function addField(Field $field)
{
$field->setParents([$this]);

$this->fields[$field->getName()] = $field;
}

Expand Down
2 changes: 2 additions & 0 deletions Classes/Configuration/View/Layouts/LayoutGroup.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ public function getItem($name)
*/
public function setItem($name, Layout $layout)
{
$layout->setParents([$this]);

$this->items[$name] = $layout;
}

Expand Down
3 changes: 3 additions & 0 deletions Tests/Unit/Configuration/Form/Field/FieldTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ public function addValidationAddsValidation()
$this->assertEquals(['foo' => $validation], $field->getValidation());
}

/**
* @test
*/
public function validationNotFoundThrowsException()
{
$this->setExpectedException(EntryNotFoundException::class);
Expand Down
125 changes: 125 additions & 0 deletions Tests/Unit/Configuration/Form/Field/Validation/ValidationTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
<?php
namespace Romm\Formz\Tests\Unit\Configuration\Validation;

use Romm\Formz\Configuration\Form\Field\Activation\ActivationInterface;
use Romm\Formz\Configuration\Form\Field\Field;
use Romm\Formz\Configuration\Form\Field\Validation\Message;
use Romm\Formz\Configuration\Form\Field\Validation\Validation;
use Romm\Formz\Tests\Unit\AbstractUnitTest;
use Romm\Formz\Validation\Validator\RequiredValidator;

class ValidationTest extends AbstractUnitTest
{
/**
* @test
*/
public function initializationDoneProperly()
{
$validation = new Validation;

$this->assertInstanceOf(ActivationInterface::class, $validation->getActivation());
}

/**
* @test
*/
public function setClassNameSetsClassName()
{
$validation = new Validation;

$validation->setClassName(RequiredValidator::class);
$this->assertEquals(RequiredValidator::class, $validation->getClassName());
}

/**
* @test
*/
public function setPrioritySetsPriority()
{
$validation = new Validation;

$validation->setPriority(404);
$this->assertEquals(404, $validation->getPriority());
}

/**
* @test
*/
public function setOptionsSetsOptions()
{
$validation = new Validation;
$options = ['foo' => 'bar'];

$validation->setOptions($options);
$this->assertEquals($options, $validation->getOptions());
}

/**
* @test
*/
public function setMessagesSetsMessages()
{
$validation = new Validation;
$messages = ['foo' => new Message];

$validation->setMessages($messages);
$this->assertEquals($messages, $validation->getMessages());
}

/**
* @test
*/
public function setActivationSetsActivation()
{
$validation = new Validation;

/** @var ActivationInterface|\PHPUnit_Framework_MockObject_MockObject $activation */
$activation = $this->getMockBuilder(ActivationInterface::class)
->setMethods(['setRootObject'])
->getMockForAbstractClass();

$activation->expects($this->once())
->method('setRootObject')
->with($validation);

$this->assertFalse($validation->hasActivation());
$validation->setActivation($activation);
$this->assertTrue($validation->hasActivation());
$this->assertSame($activation, $validation->getActivation());
}

/**
* @test
*/
public function setNameSetsName()
{
$validation = new Validation;

$validation->setName('foo');
$this->assertEquals('foo', $validation->getName());
}

/**
* @test
*/
public function activateAjaxUsageActivatesAjaxUsage()
{
$validation = new Validation;

$this->assertFalse($validation->doesUseAjax());
$validation->activateAjaxUsage();
$this->assertTrue($validation->doesUseAjax());
}

/**
* @test
*/
public function parentFieldCanBeFetched()
{
$validation = new Validation;
$field = new Field;

$validation->setParents([$field]);
$this->assertSame($field, $validation->getParentField());
}
}

0 comments on commit 31b5d72

Please sign in to comment.