From cd6505fd670191235c34244faaf96d52cee5a399 Mon Sep 17 00:00:00 2001 From: Carlos Ortega Date: Mon, 12 Jun 2017 23:47:56 +0100 Subject: [PATCH] Include asserters to equality --- docs/ConstraintsExtension/equals_to.md | 5 +++ docs/ConstraintsExtension/like.md | 5 +++ .../EqualsToAsserterSpec.php | 33 +++++++++++++++++++ .../ConstraintsExtension/LikeAsserterSpec.php | 33 +++++++++++++++++++ .../ConstraintsExtension.php | 4 ++- .../ConstraintsExtension/EqualsToAsserter.php | 29 ++++++++++++++++ .../ConstraintsExtension/LikeAsserter.php | 29 ++++++++++++++++ src/To.php | 4 +++ 8 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 docs/ConstraintsExtension/equals_to.md create mode 100644 docs/ConstraintsExtension/like.md create mode 100644 spec/Extension/ConstraintsExtension/EqualsToAsserterSpec.php create mode 100644 spec/Extension/ConstraintsExtension/LikeAsserterSpec.php create mode 100644 src/Extension/ConstraintsExtension/EqualsToAsserter.php create mode 100644 src/Extension/ConstraintsExtension/LikeAsserter.php diff --git a/docs/ConstraintsExtension/equals_to.md b/docs/ConstraintsExtension/equals_to.md new file mode 100644 index 0000000..e67c130 --- /dev/null +++ b/docs/ConstraintsExtension/equals_to.md @@ -0,0 +1,5 @@ +# Equals to + +This asserter validates if the given data matches the given value. + +You can use the "equals to" asserter as `To::beEqualsTo($value)`. diff --git a/docs/ConstraintsExtension/like.md b/docs/ConstraintsExtension/like.md new file mode 100644 index 0000000..0c1ad1c --- /dev/null +++ b/docs/ConstraintsExtension/like.md @@ -0,0 +1,5 @@ +# Like + +This asserter validates if the given data matches the given value without ensuring both values have the same type. + +You can use the "like" asserter as `To::beLike($value)`. diff --git a/spec/Extension/ConstraintsExtension/EqualsToAsserterSpec.php b/spec/Extension/ConstraintsExtension/EqualsToAsserterSpec.php new file mode 100644 index 0000000..409b115 --- /dev/null +++ b/spec/Extension/ConstraintsExtension/EqualsToAsserterSpec.php @@ -0,0 +1,33 @@ +beConstructedWith('123'); + } + + function it_is_an_Asserter() + { + $this->shouldHaveType('carlosV2\Can\AsserterInterface'); + } + + function it_returns_true_if_both_values_are_equals() + { + $this->check('123')->shouldReturn(true); + } + + function it_returns_false_if_the_values_are_equals_but_have_different_type() + { + $this->check(123)->shouldReturn(false); + } + + function it_returns_false_if_the_values_are_not_equals() + { + $this->check('321')->shouldReturn(false); + } +} diff --git a/spec/Extension/ConstraintsExtension/LikeAsserterSpec.php b/spec/Extension/ConstraintsExtension/LikeAsserterSpec.php new file mode 100644 index 0000000..1a941fb --- /dev/null +++ b/spec/Extension/ConstraintsExtension/LikeAsserterSpec.php @@ -0,0 +1,33 @@ +beConstructedWith('123'); + } + + function it_is_an_Asserter() + { + $this->shouldHaveType('carlosV2\Can\AsserterInterface'); + } + + function it_returns_true_if_both_values_are_equals() + { + $this->check('123')->shouldReturn(true); + } + + function it_returns_true_if_the_values_are_equals_but_have_different_type() + { + $this->check(123)->shouldReturn(true); + } + + function it_returns_false_if_the_values_are_not_equals() + { + $this->check('321')->shouldReturn(false); + } +} diff --git a/src/Extension/ConstraintsExtension/ConstraintsExtension.php b/src/Extension/ConstraintsExtension/ConstraintsExtension.php index 8900226..b9ee5fc 100644 --- a/src/Extension/ConstraintsExtension/ConstraintsExtension.php +++ b/src/Extension/ConstraintsExtension/ConstraintsExtension.php @@ -11,7 +11,9 @@ public function registerAsserters() return [ 'optionalAnd' => 'carlosV2\Can\Extension\ConstraintsExtension\OptionalAndAsserter', 'allOf' => 'carlosV2\Can\Extension\ConstraintsExtension\AllOfAsserter', - 'oneOf' => 'carlosV2\Can\Extension\ConstraintsExtension\OneOfAsserter' + 'oneOf' => 'carlosV2\Can\Extension\ConstraintsExtension\OneOfAsserter', + 'equalsTo' => 'carlosV2\Can\Extension\ConstraintsExtension\EqualsToAsserter', + 'like' => 'carlosV2\Can\Extension\ConstraintsExtension\LikeAsserter', ]; } } diff --git a/src/Extension/ConstraintsExtension/EqualsToAsserter.php b/src/Extension/ConstraintsExtension/EqualsToAsserter.php new file mode 100644 index 0000000..9af85aa --- /dev/null +++ b/src/Extension/ConstraintsExtension/EqualsToAsserter.php @@ -0,0 +1,29 @@ +value = $value; + } + + /** + * @inheritDoc + */ + public function check($data) + { + return $data === $this->value; + } +} diff --git a/src/Extension/ConstraintsExtension/LikeAsserter.php b/src/Extension/ConstraintsExtension/LikeAsserter.php new file mode 100644 index 0000000..d36a170 --- /dev/null +++ b/src/Extension/ConstraintsExtension/LikeAsserter.php @@ -0,0 +1,29 @@ +value = $value; + } + + /** + * @inheritDoc + */ + public function check($data) + { + return $data == $this->value; + } +} diff --git a/src/To.php b/src/To.php index b554cd1..d1f7786 100644 --- a/src/To.php +++ b/src/To.php @@ -4,6 +4,8 @@ use carlosV2\Can\Exception\AsserterNotFoundException; use carlosV2\Can\Extension\ConstraintsExtension\AllOfAsserter; +use carlosV2\Can\Extension\ConstraintsExtension\EqualsToAsserter; +use carlosV2\Can\Extension\ConstraintsExtension\LikeAsserter; use carlosV2\Can\Extension\ConstraintsExtension\OneOfAsserter; use carlosV2\Can\Extension\ConstraintsExtension\OptionalAndAsserter; use carlosV2\Can\Extension\PrimitiveTypesExtension\ArrayAsserter; @@ -29,6 +31,8 @@ * @method static OptionalAndAsserter beOptionalAnd(AsserterInterface $asserter) * @method static AllOfAsserter beAllOf(AsserterInterface ...$asserters) * @method static OneOfAsserter beOneOf(AsserterInterface ...$asserters) + * @method static EqualsToAsserter beEqualsTo(mixed $value) + * @method static LikeAsserter beLike(mixed $value) */ class To {