summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIgor Scheller <igor.scheller@igorshp.de>2019-10-07 21:59:40 +0200
committerIgor Scheller <igor.scheller@igorshp.de>2019-10-07 21:59:40 +0200
commit8d090438b659b641dd0f6cbc99193f3b48b2fc4b (patch)
tree030e2b069d4583e6ad6e498612c959c15850c8e6 /tests
parentfaf74150e9481ad9338eb6cc2428d02b24e9fc43 (diff)
Validation rules: min/max/between: Use string length to compare strings
Diffstat (limited to 'tests')
-rw-r--r--tests/Unit/Http/Validation/Rules/BetweenTest.php28
-rw-r--r--tests/Unit/Http/Validation/Rules/MaxTest.php26
-rw-r--r--tests/Unit/Http/Validation/Rules/MinTest.php26
-rw-r--r--tests/Unit/Http/Validation/Rules/StringInputLengthTest.php37
-rw-r--r--tests/Unit/Http/Validation/Rules/Stub/ParentClassImplementation.php23
-rw-r--r--tests/Unit/Http/Validation/Rules/Stub/UsesStringInputLength.php10
-rw-r--r--tests/Unit/Http/Validation/ValidatorTest.php5
7 files changed, 153 insertions, 2 deletions
diff --git a/tests/Unit/Http/Validation/Rules/BetweenTest.php b/tests/Unit/Http/Validation/Rules/BetweenTest.php
new file mode 100644
index 00000000..130d2f93
--- /dev/null
+++ b/tests/Unit/Http/Validation/Rules/BetweenTest.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Http\Validation\Rules;
+
+use Engelsystem\Http\Validation\Rules\Between;
+use Engelsystem\Test\Unit\TestCase;
+
+class BetweenTest extends TestCase
+{
+ /**
+ * @covers \Engelsystem\Http\Validation\Rules\Between
+ */
+ public function testValidate()
+ {
+ $rule = new Between(3, 10);
+ $this->assertFalse($rule->validate(1));
+ $this->assertFalse($rule->validate('11'));
+ $this->assertTrue($rule->validate(5));
+ $this->assertFalse($rule->validate('AS'));
+ $this->assertFalse($rule->validate('TestContentThatCounts'));
+ $this->assertTrue($rule->validate('TESTING'));
+
+ $rule = new Between('2042-01-01', '2042-10-10');
+ $this->assertFalse($rule->validate('2000-01-01'));
+ $this->assertFalse($rule->validate('3000-01-01'));
+ $this->assertTrue($rule->validate('2042-05-11'));
+ }
+}
diff --git a/tests/Unit/Http/Validation/Rules/MaxTest.php b/tests/Unit/Http/Validation/Rules/MaxTest.php
new file mode 100644
index 00000000..3f4d9516
--- /dev/null
+++ b/tests/Unit/Http/Validation/Rules/MaxTest.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Http\Validation\Rules;
+
+use Engelsystem\Http\Validation\Rules\Max;
+use Engelsystem\Test\Unit\TestCase;
+
+class MaxTest extends TestCase
+{
+ /**
+ * @covers \Engelsystem\Http\Validation\Rules\Max
+ */
+ public function testValidate()
+ {
+ $rule = new Max(3);
+ $this->assertFalse($rule->validate(10));
+ $this->assertFalse($rule->validate('22'));
+ $this->assertTrue($rule->validate(3));
+ $this->assertFalse($rule->validate('TEST'));
+ $this->assertTrue($rule->validate('AS'));
+
+ $rule = new Max('2042-01-01');
+ $this->assertFalse($rule->validate('2100-01-01'));
+ $this->assertTrue($rule->validate('2000-01-01'));
+ }
+}
diff --git a/tests/Unit/Http/Validation/Rules/MinTest.php b/tests/Unit/Http/Validation/Rules/MinTest.php
new file mode 100644
index 00000000..56350802
--- /dev/null
+++ b/tests/Unit/Http/Validation/Rules/MinTest.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Http\Validation\Rules;
+
+use Engelsystem\Http\Validation\Rules\Min;
+use Engelsystem\Test\Unit\TestCase;
+
+class MinTest extends TestCase
+{
+ /**
+ * @covers \Engelsystem\Http\Validation\Rules\Min
+ */
+ public function testValidate()
+ {
+ $rule = new Min(3);
+ $this->assertFalse($rule->validate(1));
+ $this->assertFalse($rule->validate('2'));
+ $this->assertTrue($rule->validate(3));
+ $this->assertFalse($rule->validate('AS'));
+ $this->assertTrue($rule->validate('TEST'));
+
+ $rule = new Min('2042-01-01');
+ $this->assertFalse($rule->validate('2000-01-01'));
+ $this->assertTrue($rule->validate('2345-01-01'));
+ }
+}
diff --git a/tests/Unit/Http/Validation/Rules/StringInputLengthTest.php b/tests/Unit/Http/Validation/Rules/StringInputLengthTest.php
new file mode 100644
index 00000000..5c4dc512
--- /dev/null
+++ b/tests/Unit/Http/Validation/Rules/StringInputLengthTest.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Http\Validation\Rules;
+
+use Engelsystem\Test\Unit\Http\Validation\Rules\Stub\UsesStringInputLength;
+use Engelsystem\Test\Unit\TestCase;
+
+class StringInputLengthTest extends TestCase
+{
+ /**
+ * @covers \Engelsystem\Http\Validation\Rules\StringInputLength::validate
+ * @covers \Engelsystem\Http\Validation\Rules\StringInputLength::isDateTime
+ * @dataProvider validateProvider
+ * @param mixed $input
+ * @param mixed $expectedInput
+ */
+ public function testValidate($input, $expectedInput)
+ {
+ $rule = new UsesStringInputLength();
+ $rule->validate($input);
+
+ $this->assertEquals($expectedInput, $rule->lastInput);
+ }
+
+ /**
+ * @return array[]
+ */
+ public function validateProvider()
+ {
+ return [
+ ['TEST', 4],
+ ['?', 1],
+ ['2042-01-01 00:00', '2042-01-01 00:00'],
+ ['3', '3'],
+ ];
+ }
+}
diff --git a/tests/Unit/Http/Validation/Rules/Stub/ParentClassImplementation.php b/tests/Unit/Http/Validation/Rules/Stub/ParentClassImplementation.php
new file mode 100644
index 00000000..1b6aaaf5
--- /dev/null
+++ b/tests/Unit/Http/Validation/Rules/Stub/ParentClassImplementation.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Http\Validation\Rules\Stub;
+
+class ParentClassImplementation
+{
+ /** @var bool */
+ public $validateResult = true;
+
+ /** @var mixed */
+ public $lastInput;
+
+ /**
+ * @param mixed $input
+ * @return bool
+ */
+ public function validate($input): bool
+ {
+ $this->lastInput = $input;
+
+ return $this->validateResult;
+ }
+}
diff --git a/tests/Unit/Http/Validation/Rules/Stub/UsesStringInputLength.php b/tests/Unit/Http/Validation/Rules/Stub/UsesStringInputLength.php
new file mode 100644
index 00000000..3522304c
--- /dev/null
+++ b/tests/Unit/Http/Validation/Rules/Stub/UsesStringInputLength.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Http\Validation\Rules\Stub;
+
+use Engelsystem\Http\Validation\Rules\StringInputLength;
+
+class UsesStringInputLength extends ParentClassImplementation
+{
+ use StringInputLength;
+}
diff --git a/tests/Unit/Http/Validation/ValidatorTest.php b/tests/Unit/Http/Validation/ValidatorTest.php
index 450e5d4e..124673df 100644
--- a/tests/Unit/Http/Validation/ValidatorTest.php
+++ b/tests/Unit/Http/Validation/ValidatorTest.php
@@ -50,9 +50,10 @@ class ValidatorTest extends TestCase
));
$this->assertFalse($val->validate(
- ['lorem' => 2],
- ['lorem' => 'required|min:3|max:10']
+ ['lorem' => 'OMG'],
+ ['lorem' => 'required|min:4|max:10']
));
+ $this->assertEquals(['lorem' => ['validation.lorem.min']], $val->getErrors());
$this->assertFalse($val->validate(
['lorem' => 42],
['lorem' => 'required|min:3|max:10']