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 Activation
Browse files Browse the repository at this point in the history
  • Loading branch information
romm committed Mar 20, 2017
1 parent 1aa2744 commit d13301c
Show file tree
Hide file tree
Showing 3 changed files with 139 additions and 2 deletions.
137 changes: 137 additions & 0 deletions Tests/Unit/Configuration/Form/Field/Activation/ActivationTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
<?php
namespace Romm\Formz\Tests\Unit\Configuration\Field\Activation;

use Romm\Formz\Condition\Items\ConditionItemInterface;
use Romm\Formz\Configuration\Form\Field\Activation\Activation;
use Romm\Formz\Configuration\Form\Field\Activation\ActivationUsageInterface;
use Romm\Formz\Configuration\Form\Form;
use Romm\Formz\Exceptions\EntryNotFoundException;
use Romm\Formz\Tests\Unit\AbstractUnitTest;

class ActivationTest extends AbstractUnitTest
{
/**
* @test
*/
public function setExpressionSetsExpression()
{
$activation = new Activation;

$activation->setExpression('expression');
$this->assertEquals('expression', $activation->getExpression());
}

/**
* @test
*/
public function setRootObjectSetsRootObject()
{
$activation = new Activation;

/** @var ActivationUsageInterface $conditionItem */
$rootObject = $this->getMockBuilder(ActivationUsageInterface::class)
->getMockForAbstractClass();

$activation->setRootObject($rootObject);
$this->assertSame($rootObject, $activation->getRootObject());
}

/**
* @test
*/
public function addConditionAddsCondition()
{
$activation = new Activation;

/** @var ConditionItemInterface $condition */
$condition = $this->getMockBuilder(ConditionItemInterface::class)
->getMockForAbstractClass();

$this->assertFalse($activation->hasCondition('foo'));
$activation->addCondition('foo', $condition);
$this->assertTrue($activation->hasCondition('foo'));
$this->assertSame($condition, $activation->getCondition('foo'));
$this->assertSame(['foo' => $condition], $activation->getConditions());
}

/**
* @test
*/
public function getUnknownConditionThrowsException()
{
$this->setExpectedException(EntryNotFoundException::class);

$activation = new Activation;
$activation->getCondition('nope');
}

/**
* @test
*/
public function conditionAreMergedWithFormConfiguration()
{
$activation = new Activation;
$form = new Form;
$activation->setParents([$form]);

/** @var ConditionItemInterface $condition1 */
$condition1 = $this->getMockBuilder(ConditionItemInterface::class)
->getMockForAbstractClass();

/** @var ConditionItemInterface $condition2 */
$condition2 = $this->getMockBuilder(ConditionItemInterface::class)
->getMockForAbstractClass();

$this->assertFalse($activation->hasCondition('foo'));
$this->assertFalse($activation->hasCondition('bar'));

$form->addCondition('foo', $condition1);
$activation->addCondition('bar', $condition2);

$this->assertTrue($activation->hasCondition('foo'));
$this->assertTrue($activation->hasCondition('bar'));

$this->assertSame($condition1, $activation->getCondition('foo'));
$this->assertSame($condition2, $activation->getCondition('bar'));

$this->assertSame(
[
'foo' => $condition1,
'bar' => $condition2
],
$activation->getConditions()
);
}

/**
* @test
*/
public function conditionAreOverridingFormConfiguration()
{
$activation = new Activation;
$form = new Form;
$activation->setParents([$form]);

/** @var ConditionItemInterface $condition1 */
$condition1 = $this->getMockBuilder(ConditionItemInterface::class)
->getMockForAbstractClass();

/** @var ConditionItemInterface $condition2 */
$condition2 = $this->getMockBuilder(ConditionItemInterface::class)
->getMockForAbstractClass();

$this->assertFalse($activation->hasCondition('foo'));

$form->addCondition('foo', $condition1);
$activation->addCondition('foo', $condition2);

$this->assertTrue($activation->hasCondition('foo'));

$this->assertSame($condition2, $activation->getCondition('foo'));

$this->assertSame(
['foo' => $condition2],
$activation->getConditions()
);
}
}
2 changes: 1 addition & 1 deletion Tests/Unit/Configuration/Form/Field/FieldTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public function addValidationAddsValidation()
$field->addValidation($validation);
$this->assertTrue($field->hasValidation('foo'));
$this->assertSame($validation, $field->getValidationByName('foo'));
$this->assertEquals(['foo' => $validation], $field->getValidation());
$this->assertSame(['foo' => $validation], $field->getValidation());
}

/**
Expand Down
2 changes: 1 addition & 1 deletion Tests/Unit/Configuration/Form/FormTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public function addFieldAddsField()
$form->addField($field);
$this->assertTrue($form->hasField('foo'));
$this->assertSame($field, $form->getField('foo'));
$this->assertEquals(['foo' => $field], $form->getFields());
$this->assertSame(['foo' => $field], $form->getFields());
}

/**
Expand Down

0 comments on commit d13301c

Please sign in to comment.