mirror of
https://github.com/Respect/Validation.git
synced 2024-05-29 03:42:25 +02:00
Apply contribution guidelines to "Equals" rule
This commit is contained in:
parent
1f217dda66
commit
02b51782c3
|
@ -13,8 +13,16 @@ declare(strict_types=1);
|
|||
|
||||
namespace Respect\Validation\Exceptions;
|
||||
|
||||
class EqualsException extends ValidationException
|
||||
/**
|
||||
* @author Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
|
||||
* @author Henrique Moody <henriquemoody@gmail.com>
|
||||
* @author Ian Nisbet <ian@glutenite.co.uk>
|
||||
*/
|
||||
final class EqualsException extends ValidationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $defaultTemplates = [
|
||||
self::MODE_DEFAULT => [
|
||||
self::STANDARD => '{{name}} must equal {{compareTo}}',
|
||||
|
|
|
@ -13,16 +13,33 @@ declare(strict_types=1);
|
|||
|
||||
namespace Respect\Validation\Rules;
|
||||
|
||||
class Equals extends AbstractRule
|
||||
/**
|
||||
* Validates if the input is equal to some value.
|
||||
*
|
||||
* @author Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
|
||||
* @author Henrique Moody <henriquemoody@gmail.com>
|
||||
*/
|
||||
final class Equals extends AbstractRule
|
||||
{
|
||||
public $compareTo;
|
||||
/**
|
||||
* @var mixed
|
||||
*/
|
||||
private $compareTo;
|
||||
|
||||
/**
|
||||
* Initializes the rule.
|
||||
*
|
||||
* @param mixed $compareTo
|
||||
*/
|
||||
public function __construct($compareTo)
|
||||
{
|
||||
$this->compareTo = $compareTo;
|
||||
}
|
||||
|
||||
public function validate($input)
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($input): bool
|
||||
{
|
||||
return $input == $this->compareTo;
|
||||
}
|
||||
|
|
37
tests/integration/rules/equals.phpt
Normal file
37
tests/integration/rules/equals.phpt
Normal file
|
@ -0,0 +1,37 @@
|
|||
--FILE--
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Exceptions\EqualsException;
|
||||
use Respect\Validation\Exceptions\NestedValidationException;
|
||||
use Respect\Validation\Validator as v;
|
||||
|
||||
try {
|
||||
v::equals(123)->check(321);
|
||||
} catch (EqualsException $exception) {
|
||||
echo $exception->getMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
v::not(v::equals(321))->check(321);
|
||||
} catch (EqualsException $exception) {
|
||||
echo $exception->getMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
v::equals(123)->assert(321);
|
||||
} catch (NestedValidationException $exception) {
|
||||
echo $exception->getFullMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
v::not(v::equals(321))->assert(321);
|
||||
} catch (NestedValidationException $exception) {
|
||||
echo $exception->getFullMessage().PHP_EOL;
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
321 must equal 123
|
||||
321 must not equal 321
|
||||
- 321 must equal 123
|
||||
- 321 must not equal 321
|
|
@ -1,10 +0,0 @@
|
|||
--FILE--
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Validator as v;
|
||||
|
||||
v::equals('test 123')->assert('test 123');
|
||||
v::equals('test 123')->check('test 123');
|
||||
?>
|
||||
--EXPECTF--
|
|
@ -1,15 +0,0 @@
|
|||
--FILE--
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Exceptions\EqualsException;
|
||||
use Respect\Validation\Validator as v;
|
||||
|
||||
try {
|
||||
v::equals('test 123')->check('test 1234');
|
||||
} catch (EqualsException $e) {
|
||||
echo $e->getMainMessage();
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
"test 1234" must equal "test 123"
|
|
@ -1,15 +0,0 @@
|
|||
--FILE--
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Exceptions\AllOfException;
|
||||
use Respect\Validation\Validator as v;
|
||||
|
||||
try {
|
||||
v::equals('test 123')->assert('test 1234');
|
||||
} catch (AllOfException $e) {
|
||||
echo $e->getFullMessage();
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
- "test 1234" must equal "test 123"
|
|
@ -1,15 +0,0 @@
|
|||
--FILE--
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Exceptions\EqualsException;
|
||||
use Respect\Validation\Validator as v;
|
||||
|
||||
try {
|
||||
v::not(v::equals('test 123'))->check('test 123');
|
||||
} catch (EqualsException $e) {
|
||||
echo $e->getMainMessage();
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
"test 123" must not equal "test 123"
|
|
@ -1,15 +0,0 @@
|
|||
--FILE--
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Exceptions\AllOfException;
|
||||
use Respect\Validation\Validator as v;
|
||||
|
||||
try {
|
||||
v::not(v::equals('test 123'))->assert('test 123');
|
||||
} catch (AllOfException $e) {
|
||||
echo $e->getFullMessage();
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
- "test 123" must not equal "test 123"
|
|
@ -13,61 +13,53 @@ declare(strict_types=1);
|
|||
|
||||
namespace Respect\Validation\Rules;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Respect\Validation\Test\RuleTestCase;
|
||||
use stdClass;
|
||||
|
||||
/**
|
||||
* @group rule
|
||||
* @group rule
|
||||
*
|
||||
* @covers \Respect\Validation\Rules\Equals
|
||||
* @covers \Respect\Validation\Exceptions\EqualsException
|
||||
*
|
||||
* @author Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
|
||||
* @author Henrique Moody <henriquemoody@gmail.com>
|
||||
*/
|
||||
class EqualsTest extends TestCase
|
||||
final class EqualsTest extends RuleTestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider providerForEquals
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function testInputEqualsToExpectedValueShouldPass($compareTo, $input): void
|
||||
{
|
||||
$rule = new Equals($compareTo);
|
||||
|
||||
self::assertTrue($rule->validate($input));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerForNotEquals
|
||||
*/
|
||||
public function testInputNotEqualsToExpectedValueShouldPass($compareTo, $input): void
|
||||
{
|
||||
$rule = new Equals($compareTo);
|
||||
|
||||
self::assertFalse($rule->validate($input));
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Respect\Validation\Exceptions\EqualsException
|
||||
* @expectedExceptionMessage "24" must equal 42
|
||||
*/
|
||||
public function testShouldThrowTheProperExceptionWhenFailure(): void
|
||||
{
|
||||
$rule = new Equals(42);
|
||||
$rule->check('24');
|
||||
}
|
||||
|
||||
public function providerForEquals()
|
||||
public function providerForValidInput(): array
|
||||
{
|
||||
return [
|
||||
['foo', 'foo'],
|
||||
[[], []],
|
||||
[new stdClass(), new stdClass()],
|
||||
[10, '10'],
|
||||
[new Equals('foo'), 'foo'],
|
||||
[new Equals([]), []],
|
||||
[new Equals(new stdClass()), new stdClass()],
|
||||
[new Equals(10), '10'],
|
||||
[new Equals(10), 10.0],
|
||||
];
|
||||
}
|
||||
|
||||
public function providerForNotEquals()
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerForInvalidInput(): array
|
||||
{
|
||||
return [
|
||||
['foo', ''],
|
||||
['foo', 'bar'],
|
||||
[new Equals('foo'), ''],
|
||||
[new Equals('foo'), 'bar'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function shouldPassCompareToParameterToException(): void
|
||||
{
|
||||
$compareTo = new stdClass();
|
||||
$equals = new Equals($compareTo);
|
||||
$exception = $equals->reportError('input');
|
||||
|
||||
self::assertSame($compareTo, $exception->getParam('compareTo'));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue