summaryrefslogtreecommitdiff
path: root/tests/Unit/Http/Validation/ValidatesTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Unit/Http/Validation/ValidatesTest.php')
-rw-r--r--tests/Unit/Http/Validation/ValidatesTest.php308
1 files changed, 308 insertions, 0 deletions
diff --git a/tests/Unit/Http/Validation/ValidatesTest.php b/tests/Unit/Http/Validation/ValidatesTest.php
new file mode 100644
index 00000000..5cf0447a
--- /dev/null
+++ b/tests/Unit/Http/Validation/ValidatesTest.php
@@ -0,0 +1,308 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Http\Validation;
+
+use Engelsystem\Http\Validation\Validates;
+use InvalidArgumentException;
+use PHPUnit\Framework\TestCase;
+
+class ValidatesTest extends TestCase
+{
+ /**
+ * @return array
+ */
+ public function provideAccepted()
+ {
+ return [
+ ['true'],
+ ['1'],
+ ['y'],
+ ['yes'],
+ ['on'],
+ ['1test', false],
+ ['false', false],
+ ['no', false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::accepted
+ * @param mixed $value
+ * @param bool $result
+ * @dataProvider provideAccepted
+ */
+ public function testAccepted($value, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->accepted($value) === $result);
+ }
+
+ /**
+ * @return array
+ */
+ public function provideBetween()
+ {
+ return [
+ ['42', [10, 100]],
+ [42.5, [42, 43]],
+ [42, [42, 1000]],
+ [1337, [0, 99], false],
+ [-17, [32, 45], false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::between
+ * @param mixed $value
+ * @param array $parameters
+ * @param bool $result
+ * @dataProvider provideBetween
+ */
+ public function testBetween($value, array $parameters, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->between($value, $parameters) === $result);
+ }
+
+ /**
+ * @return array
+ */
+ public function provideBool()
+ {
+ return [
+ ['1'],
+ [1],
+ [true],
+ ['0'],
+ [0],
+ [false],
+ ['true', false],
+ ['false', false],
+ ['yes', false],
+ ['no', false],
+ ['bool', false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::bool
+ * @param mixed $value
+ * @param bool $result
+ * @dataProvider provideBool
+ */
+ public function testBool($value, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->bool($value) === $result);
+ }
+
+ /**
+ * @return array
+ */
+ public function provideIn()
+ {
+ return [
+ ['lorem', ['lorem,ipsum,dolor']],
+ [99, ['66,77,88,99,111']],
+ [4, ['1,3,5,7'], false],
+ ['toggle', ['on,off'], false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::in
+ * @param mixed $value
+ * @param array $parameters
+ * @param bool $result
+ * @dataProvider provideIn
+ */
+ public function testIn($value, array $parameters, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->in($value, $parameters) === $result);
+ }
+
+ /**
+ * @return array
+ */
+ public function provideInt()
+ {
+ return [
+ ['1337'],
+ [42],
+ ['0'],
+ [false, false],
+ ['12asd1', false],
+ ['one', false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::int
+ * @param mixed $value
+ * @param bool $result
+ * @dataProvider provideInt
+ */
+ public function testInt($value, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->int($value) === $result);
+ }
+
+ /**
+ * @return array
+ */
+ public function provideMax()
+ {
+ return [
+ ['99', [100]],
+ [-42, [1024]],
+ [99, [99]],
+ [100, [10], false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::max
+ * @param mixed $value
+ * @param array $parameters
+ * @param bool $result
+ * @dataProvider provideMax
+ */
+ public function testMax($value, array $parameters, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->max($value, $parameters) === $result);
+ }
+
+ /**
+ * @return array
+ */
+ public function provideMin()
+ {
+ return [
+ [32, [0]],
+ [7, [7]],
+ ['99', [10]],
+ [3, [42], false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::min
+ * @param mixed $value
+ * @param array $parameters
+ * @param bool $result
+ * @dataProvider provideMin
+ */
+ public function testMin($value, array $parameters, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->min($value, $parameters) === $result);
+ }
+
+ /**
+ * @return array
+ */
+ public function provideNotIn()
+ {
+ return [
+ [77, ['50,60,70']],
+ ['test', ['coding,deployment']],
+ ['PHP', ['Java,PHP,bash'], false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::notIn
+ * @param mixed $value
+ * @param array $parameters
+ * @param bool $result
+ * @dataProvider provideNotIn
+ */
+ public function testNotIn($value, array $parameters, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->notIn($value, $parameters) === $result);
+ }
+
+ /**
+ * @return array
+ */
+ public function provideNumeric()
+ {
+ return [
+ [77],
+ ['42'],
+ ['1337e0'],
+ ['123f00', false],
+ [null, false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::numeric
+ * @param mixed $value
+ * @param bool $result
+ * @dataProvider provideNumeric
+ */
+ public function testNumeric($value, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->numeric($value) === $result);
+ }
+
+ /**
+ * @return array
+ */
+ public function provideRequired()
+ {
+ return [
+ ['Lorem ipsum'],
+ ['1234'],
+ [1234],
+ ['0'],
+ [0],
+ ['', false],
+ [' ', false],
+ [null, false],
+ ];
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::required
+ * @param mixed $value
+ * @param bool $result
+ * @dataProvider provideRequired
+ */
+ public function testRequired($value, bool $result = true)
+ {
+ $val = new Validates;
+ $this->assertTrue($val->required($value) === $result);
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::getSize
+ */
+ public function testGetSize()
+ {
+ $val = new Validates;
+ $this->assertTrue($val->max(42, [999]));
+ $this->assertTrue($val->max('99', [100]));
+ $this->assertFalse($val->max('101', [100]));
+ $this->assertTrue($val->max('lorem', [5]));
+ $this->assertFalse($val->max('Lorem Ipsum', [5]));
+ }
+
+ /**
+ * @covers \Engelsystem\Http\Validation\Validates::validateParameterCount
+ */
+ public function testValidateParameterCount()
+ {
+ $val = new Validates;
+ $this->assertTrue($val->between(42, [1, 100]));
+
+ $this->expectException(InvalidArgumentException::class);
+ $val->between(42, [1]);
+ }
+}