Skip to content

Commit 3b1556f

Browse files
committed
* fix: chained validator not usable
1 parent 778a46c commit 3b1556f

File tree

5 files changed

+78
-12
lines changed

5 files changed

+78
-12
lines changed

phpunit.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<file>ut/EmailValidatorTest.php</file>
2020
<file>ut/UrlValidatorTest.php</file>
2121
<file>ut/RegexValidatorTest.php</file>
22+
<file>ut/ChainedValidatorTest.php</file>
2223
</testsuite>
2324
</testsuites>
2425
</phpunit>

src/Validators/ChainedValidator.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public function __construct(...$args)
2222
);
2323
}
2424
}
25+
$this->validators = $args;
2526
}
2627

2728
public function validate($target)

src/Validators/RegexValidator.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function __construct($pattern)
2323
if (@preg_match($pattern, '') === false) {
2424
throw new \InvalidArgumentException("Invalid pattern: " . $pattern);
2525
}
26-
26+
2727
$this->pattern = $pattern;
2828
}
2929

@@ -32,11 +32,11 @@ public function validate($target)
3232
if (!is_string($target)) {
3333
throw new InvalidDataTypeException("Target is not a string, and cannot be validated by REGEX!");
3434
}
35-
35+
3636
if (!preg_match($this->pattern, $target)) {
3737
throw new RegexNotMatchedException("Target given cannot be matched by REGEX!");
3838
}
39-
39+
4040
return $target;
4141
}
4242
}

ut/ChainedValidatorTest.php

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: minhao
5+
* Date: 2017-05-22
6+
* Time: 14:53
7+
*/
8+
9+
use Oasis\Mlib\Utils\Exceptions\DataValidationException;
10+
use Oasis\Mlib\Utils\Validators\ChainedValidator;
11+
use Oasis\Mlib\Utils\Validators\RegexValidator;
12+
use Oasis\Mlib\Utils\Validators\StringLengthValidator;
13+
use Oasis\Mlib\Utils\Validators\StringValidator;
14+
15+
class ChainedValidatorTest extends PHPUnit_Framework_TestCase
16+
{
17+
/**
18+
* @dataProvider provideChainedTestData
19+
*
20+
* @param $val
21+
*/
22+
public function testValidData($val)
23+
{
24+
$cv = new ChainedValidator(
25+
new StringValidator(),
26+
new StringLengthValidator(20),
27+
new RegexValidator('/^[0-9]+$/')
28+
);
29+
$this->assertEquals($val, $cv->validate($val));
30+
}
31+
32+
/**
33+
* @dataProvider provideInvalidChainedTestData
34+
*
35+
* @param $val
36+
*/
37+
public function testInvalidData($val)
38+
{
39+
$cv = new ChainedValidator(
40+
new StringValidator(),
41+
new StringLengthValidator(20),
42+
new RegexValidator('/^[0-9]+$/')
43+
);
44+
$this->expectException(DataValidationException::class);
45+
$cv->validate($val);
46+
}
47+
48+
public function provideChainedTestData()
49+
{
50+
return [
51+
['123'],
52+
[str_repeat('1', 20)],
53+
];
54+
}
55+
56+
public function provideInvalidChainedTestData()
57+
{
58+
return [
59+
[''],
60+
['ab22'],
61+
[str_repeat('1', 22)],
62+
];
63+
}
64+
}

ut/StringValidatorTest.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class StringValidatorTest extends PHPUnit_Framework_TestCase
1818
public function testNonStrictInputWithValidInput($target)
1919
{
2020
$validator = new StringValidator();
21-
self::assertTrue(is_string($validator->validate($target)));
21+
$this->assertTrue(is_string($validator->validate($target)));
2222
}
2323

2424
/**
@@ -29,8 +29,8 @@ public function testNonStrictInputWithValidInput($target)
2929
public function testNonStrictInputWithInvalidInput($target)
3030
{
3131
$validator = new StringValidator();
32-
self::setExpectedException(DataValidationException::class);
33-
self::assertTrue(is_string($validator->validate($target)));
32+
$this->expectException(DataValidationException::class);
33+
$this->assertTrue(is_string($validator->validate($target)));
3434
}
3535

3636
/**
@@ -41,7 +41,7 @@ public function testNonStrictInputWithInvalidInput($target)
4141
public function testStrictInputWithValidInput($target)
4242
{
4343
$validator = new StringValidator(true);
44-
self::assertTrue(is_string($validator->validate($target)));
44+
$this->assertTrue(is_string($validator->validate($target)));
4545
}
4646

4747
/**
@@ -52,8 +52,8 @@ public function testStrictInputWithValidInput($target)
5252
public function testStrictInputWithInvalidInput($target)
5353
{
5454
$validator = new StringValidator(true);
55-
self::setExpectedException(DataValidationException::class);
56-
self::assertTrue(is_string($validator->validate($target)));
55+
$this->expectException(DataValidationException::class);
56+
$this->assertTrue(is_string($validator->validate($target)));
5757
}
5858

5959
/**
@@ -64,7 +64,7 @@ public function testStrictInputWithInvalidInput($target)
6464
public function testStrictInputWithEmptyNotAllowed($target)
6565
{
6666
$validator = new StringValidator(true, false);
67-
self::assertTrue(is_string($validator->validate($target)));
67+
$this->assertTrue(is_string($validator->validate($target)));
6868
}
6969

7070
/**
@@ -75,8 +75,8 @@ public function testStrictInputWithEmptyNotAllowed($target)
7575
public function testStrictInputWithInvalidInputEmptyNotAllowed($target)
7676
{
7777
$validator = new StringValidator(true, false);
78-
self::setExpectedException(DataValidationException::class);
79-
self::assertTrue(is_string($validator->validate($target)));
78+
$this->expectException(DataValidationException::class);
79+
$this->assertTrue(is_string($validator->validate($target)));
8080

8181
}
8282

0 commit comments

Comments
 (0)