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

Commit

Permalink
Add ignored mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
DASPRiD committed Dec 13, 2016
1 parent fe5ad27 commit bb60b74
Show file tree
Hide file tree
Showing 6 changed files with 91 additions and 151 deletions.
44 changes: 0 additions & 44 deletions src/Mapping/Constraint/ChainConstraint.php

This file was deleted.

15 changes: 7 additions & 8 deletions src/Mapping/FieldMappingFactory.php
Expand Up @@ -19,6 +19,11 @@ private function __construct()
{
}

public static function ignored($value) : FieldMapping
{
return new FieldMapping(new Formatter\IgnoredFormatter($value));
}

public static function text(int $minLength = 0, int $maxLength = null, $encoding = 'utf-8') : FieldMapping
{
$mapping = new FieldMapping(new Formatter\TextFormatter());
Expand All @@ -34,15 +39,9 @@ public static function text(int $minLength = 0, int $maxLength = null, $encoding
return $mapping;
}

public static function nonEmptyText(int $maxLength = null, $encoding = 'utf-8') : FieldMapping
public static function nonEmptyText(int $minLength = 0, int $maxLength = null, $encoding = 'utf-8') : FieldMapping
{
$constraints = [new Constraint\NotEmptyConstraint()];

if (null !== $maxLength) {
$constraints[] = new Constraint\MaxLengthConstraint($maxLength, $encoding);
}

return self::text()->verifying(new Constraint\ChainConstraint(true, ...$constraints));
return self::text($minLength, $maxLength, $encoding)->verifying(new Constraint\NotEmptyConstraint());
}

public static function emailAddress() : FieldMapping
Expand Down
39 changes: 39 additions & 0 deletions src/Mapping/Formatter/IgnoredFormatter.php
@@ -0,0 +1,39 @@
<?php
declare(strict_types = 1);

namespace DASPRiD\Formidable\Mapping\Formatter;

use DASPRiD\Formidable\Data;
use DASPRiD\Formidable\Mapping\BindResult;

final class IgnoredFormatter implements FormatterInterface
{
/**
* @var mixed
*/
private $value;

/**
* @param mixed $value
*/
public function __construct($value)
{
$this->value = $value;
}

/**
* {@inheritdoc}
*/
public function bind(string $key, Data $data) : BindResult
{
return BindResult::fromValue($this->value);
}

/**
* {@inheritdoc}
*/
public function unbind(string $key, $value) : Data
{
return Data::none();
}
}
83 changes: 0 additions & 83 deletions test/Mapping/Constraint/ChainConstraintTest.php

This file was deleted.

33 changes: 17 additions & 16 deletions test/Mapping/FieldMappingFactoryTest.php
Expand Up @@ -3,7 +3,6 @@

namespace DASPRiD\FormidableTest\Mapping;

use DASPRiD\Formidable\Mapping\Constraint\ChainConstraint;
use DASPRiD\Formidable\Mapping\Constraint\EmailAddressConstraint;
use DASPRiD\Formidable\Mapping\Constraint\NotEmptyConstraint;
use DASPRiD\Formidable\Mapping\Constraint\UrlConstraint;
Expand All @@ -14,6 +13,7 @@
use DASPRiD\Formidable\Mapping\Formatter\DateTimeFormatter;
use DASPRiD\Formidable\Mapping\Formatter\DecimalFormatter;
use DASPRiD\Formidable\Mapping\Formatter\FloatFormatter;
use DASPRiD\Formidable\Mapping\Formatter\IgnoredFormatter;
use DASPRiD\Formidable\Mapping\Formatter\IntegerFormatter;
use DASPRiD\Formidable\Mapping\Formatter\TextFormatter;
use DASPRiD\Formidable\Mapping\Formatter\TimeFormatter;
Expand All @@ -25,6 +25,14 @@
*/
class FieldMappingFactoryTest extends TestCase
{
public function testIgnoredFactory()
{
$fieldMapping = FieldMappingFactory::ignored('foo');
$this->assertInstanceOf(FieldMapping::class, $fieldMapping);
$this->assertAttributeInstanceOf(IgnoredFormatter::class, 'binder', $fieldMapping);
$this->assertAttributeCount(0, 'constraints', $fieldMapping);
}

public function testTextFactoryWithoutConstraints()
{
$fieldMapping = FieldMappingFactory::text();
Expand Down Expand Up @@ -57,33 +65,26 @@ public function testNonEmptyTextFactoryWithoutConstraints()
$this->assertAttributeCount(1, 'constraints', $fieldMapping);

$constraints = self::readAttribute($fieldMapping, 'constraints');
$this->assertInstanceOf(ChainConstraint::class, $constraints[0]);
$this->assertAttributeSame(true, 'breakChainOnFailure', $constraints[0]);
$this->assertAttributeCount(1, 'constraints', $constraints[0]);

$chainConstraints = self::readAttribute($constraints[0], 'constraints');

$this->assertInstanceOf(NotEmptyConstraint::class, $chainConstraints[0]);
$this->assertInstanceOf(NotEmptyConstraint::class, $constraints[0]);
}

public function testNonEmptyTextFactoryWithConstraints()
{
$fieldMapping = FieldMappingFactory::nonEmptyText(2, 'iso-8859-15');
$fieldMapping = FieldMappingFactory::nonEmptyText(1, 2, 'iso-8859-15');
$this->assertInstanceOf(FieldMapping::class, $fieldMapping);
$this->assertAttributeInstanceOf(TextFormatter::class, 'binder', $fieldMapping);
$this->assertAttributeCount(1, 'constraints', $fieldMapping);
$this->assertAttributeCount(3, 'constraints', $fieldMapping);

$constraints = self::readAttribute($fieldMapping, 'constraints');
$this->assertInstanceOf(ChainConstraint::class, $constraints[0]);
$this->assertAttributeSame(true, 'breakChainOnFailure', $constraints[0]);
$this->assertAttributeCount(2, 'constraints', $constraints[0]);

$chainConstraints = self::readAttribute($constraints[0], 'constraints');
$this->assertAttributeSame('iso-8859-15', 'encoding', $constraints[0]);
$this->assertAttributeSame(1, 'lengthLimit', $constraints[0]);

$this->assertInstanceOf(NotEmptyConstraint::class, $chainConstraints[0]);
$this->assertAttributeSame('iso-8859-15', 'encoding', $constraints[1]);
$this->assertAttributeSame(2, 'lengthLimit', $constraints[1]);

$this->assertAttributeSame('iso-8859-15', 'encoding', $chainConstraints[1]);
$this->assertAttributeSame(2, 'lengthLimit', $chainConstraints[1]);
$this->assertInstanceOf(NotEmptyConstraint::class, $constraints[2]);
}

public function testEmailAddressFactory()
Expand Down
28 changes: 28 additions & 0 deletions test/Mapping/Formatter/IgnoredFormatterTest.php
@@ -0,0 +1,28 @@
<?php
declare(strict_types = 1);

namespace DASPRiD\FormidableTest\Mapping\Formatter;

use DASPRiD\Formidable\Data;
use DASPRiD\Formidable\Mapping\Formatter\IgnoredFormatter;
use PHPUnit_Framework_TestCase as TestCase;

/**
* @covers DASPRiD\Formidable\Mapping\Formatter\IgnoredFormatter
*/
class IgnoredFormatterTest extends TestCase
{
public function testBindValue()
{
$this->assertSame(
'foo',
(new IgnoredFormatter('foo'))->bind('foo', Data::fromFlatArray(['foo' => 'baz']))->getValue()
);
}

public function testUnbindValue()
{
$data = (new IgnoredFormatter('foo'))->unbind('foo', 'bar');
$this->assertTrue($data->isEmpty());
}
}

0 comments on commit bb60b74

Please sign in to comment.