mirror of
https://github.com/Respect/Validation.git
synced 2024-06-29 10:40:24 +02:00
Set up "squizlabs/php_codesniffer"
The tool we used to verify whether the code base has the correct coding
standard was removed [1].
This commit will set up one that works best for us and will also make
sure we have fully compliant to PS1 and PSR2.
[1]: ffec95acda
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
This commit is contained in:
parent
2b86e5443e
commit
b7043b2652
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,7 +1,8 @@
|
||||||
.php_cs.cache
|
|
||||||
.couscous/
|
.couscous/
|
||||||
|
.phpcs.cache
|
||||||
composer.lock
|
composer.lock
|
||||||
Makefile
|
Makefile
|
||||||
|
phpcs.xml
|
||||||
phpstan.neon
|
phpstan.neon
|
||||||
phpunit.xml
|
phpunit.xml
|
||||||
vendor/
|
vendor/
|
||||||
|
|
|
@ -34,6 +34,10 @@ script:
|
||||||
if [[ "${TRAVIS_PHP_VERSION}" == "7.2" ]]; then
|
if [[ "${TRAVIS_PHP_VERSION}" == "7.2" ]]; then
|
||||||
vendor/bin/docheader check library tests
|
vendor/bin/docheader check library tests
|
||||||
fi
|
fi
|
||||||
|
- |
|
||||||
|
if [[ "${TRAVIS_PHP_VERSION}" == "7.2" ]]; then
|
||||||
|
vendor/bin/phpcs
|
||||||
|
fi
|
||||||
- |
|
- |
|
||||||
if [[ "${TRAVIS_PHP_VERSION}" == "7.2" ]]; then
|
if [[ "${TRAVIS_PHP_VERSION}" == "7.2" ]]; then
|
||||||
vendor/bin/phpstan analyze
|
vendor/bin/phpstan analyze
|
||||||
|
|
|
@ -11,6 +11,9 @@
|
||||||
"homepage": "https://github.com/Respect/Validation/graphs/contributors"
|
"homepage": "https://github.com/Respect/Validation/graphs/contributors"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"config": {
|
||||||
|
"sort-packages": true
|
||||||
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.1",
|
"php": ">=7.1",
|
||||||
"respect/stringifier": "^0.2.0",
|
"respect/stringifier": "^0.2.0",
|
||||||
|
@ -22,6 +25,7 @@
|
||||||
"mikey179/vfsStream": "^1.6",
|
"mikey179/vfsStream": "^1.6",
|
||||||
"phpstan/phpstan": "^0.10.3",
|
"phpstan/phpstan": "^0.10.3",
|
||||||
"phpunit/phpunit": "^7.3",
|
"phpunit/phpunit": "^7.3",
|
||||||
|
"squizlabs/php_codesniffer": "^3.4",
|
||||||
"symfony/validator": "^3.0||^4.0",
|
"symfony/validator": "^3.0||^4.0",
|
||||||
"zendframework/zend-validator": "^2.0"
|
"zendframework/zend-validator": "^2.0"
|
||||||
},
|
},
|
||||||
|
@ -51,12 +55,14 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"docheader": "vendor/bin/docheader check library/ tests/",
|
"docheader": "vendor/bin/docheader check library/ tests/",
|
||||||
|
"phpcs": "vendor/bin/phpcs",
|
||||||
"phpstan": "vendor/bin/phpstan analyze",
|
"phpstan": "vendor/bin/phpstan analyze",
|
||||||
"phpunit": "vendor/bin/phpunit",
|
"phpunit": "vendor/bin/phpunit",
|
||||||
"phpunit-integration": "vendor/bin/phpunit --testsuite=integration",
|
"phpunit-integration": "vendor/bin/phpunit --testsuite=integration",
|
||||||
"phpunit-unit": "vendor/bin/phpunit --testsuite=unit",
|
"phpunit-unit": "vendor/bin/phpunit --testsuite=unit",
|
||||||
"qa": [
|
"qa": [
|
||||||
"@docheader",
|
"@docheader",
|
||||||
|
"@phpcs",
|
||||||
"@phpstan",
|
"@phpstan",
|
||||||
"@phpunit"
|
"@phpunit"
|
||||||
]
|
]
|
||||||
|
|
|
@ -78,8 +78,14 @@ final class Factory
|
||||||
array $exceptionsNamespaces,
|
array $exceptionsNamespaces,
|
||||||
callable $translator
|
callable $translator
|
||||||
) {
|
) {
|
||||||
$this->rulesNamespaces = $this->filterNamespaces($rulesNamespaces, self::DEFAULT_RULES_NAMESPACES);
|
$this->rulesNamespaces = $this->filterNamespaces(
|
||||||
$this->exceptionsNamespaces = $this->filterNamespaces($exceptionsNamespaces, self::DEFAULT_EXCEPTIONS_NAMESPACES);
|
$rulesNamespaces,
|
||||||
|
self::DEFAULT_RULES_NAMESPACES
|
||||||
|
);
|
||||||
|
$this->exceptionsNamespaces = $this->filterNamespaces(
|
||||||
|
$exceptionsNamespaces,
|
||||||
|
self::DEFAULT_EXCEPTIONS_NAMESPACES
|
||||||
|
);
|
||||||
$this->translator = $translator;
|
$this->translator = $translator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,8 +239,12 @@ final class Factory
|
||||||
*
|
*
|
||||||
* @return ValidationException
|
* @return ValidationException
|
||||||
*/
|
*/
|
||||||
private function createValidationException(string $exceptionName, string $id, $input, array $params): ValidationException
|
private function createValidationException(
|
||||||
{
|
string $exceptionName,
|
||||||
|
string $id,
|
||||||
|
$input,
|
||||||
|
array $params
|
||||||
|
): ValidationException {
|
||||||
/* @var ValidationException $exception */
|
/* @var ValidationException $exception */
|
||||||
$exception = $this->createReflectionClass($exceptionName, ValidationException::class)
|
$exception = $this->createReflectionClass($exceptionName, ValidationException::class)
|
||||||
->newInstance($input, $id, $params, $this->translator);
|
->newInstance($input, $id, $params, $this->translator);
|
||||||
|
|
|
@ -17,7 +17,9 @@ use ArrayAccess;
|
||||||
use SimpleXMLElement;
|
use SimpleXMLElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validates if the input is an array or if the input can be used as an array (instance of `ArrayAccess` or `SimpleXMLElement`).
|
* Validates if the input is an array or if the input can be used as an array.
|
||||||
|
*
|
||||||
|
* Instance of `ArrayAccess` or `SimpleXMLElement` are also considered as valid.
|
||||||
*
|
*
|
||||||
* @author Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
|
* @author Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
|
||||||
* @author Emmerson Siqueira <emmersonsiqueira@gmail.com>
|
* @author Emmerson Siqueira <emmersonsiqueira@gmail.com>
|
||||||
|
|
|
@ -50,13 +50,19 @@ final class Cnpj extends AbstractRule
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ($i = 0, $n = 0; $i < 12; $n += $cleanInput[$i] * $b[++$i]);
|
$n = 0;
|
||||||
|
for ($i = 0; $i < 12; ++$i) {
|
||||||
|
$n += $cleanInput[$i] * $b[$i+1];
|
||||||
|
}
|
||||||
|
|
||||||
if ($cleanInput[12] != ((($n %= 11) < 2) ? 0 : 11 - $n)) {
|
if ($cleanInput[12] != ((($n %= 11) < 2) ? 0 : 11 - $n)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ($i = 0, $n = 0; $i <= 12; $n += $cleanInput[$i] * $b[$i++]);
|
$n = 0;
|
||||||
|
for ($i = 0; $i <= 12; ++$i) {
|
||||||
|
$n += $cleanInput[$i] * $b[$i];
|
||||||
|
}
|
||||||
|
|
||||||
if ($cleanInput[13] != ((($n %= 11) < 2) ? 0 : 11 - $n)) {
|
if ($cleanInput[13] != ((($n %= 11) < 2) ? 0 : 11 - $n)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -41,13 +41,19 @@ final class Cpf extends AbstractRule
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ($s = 10, $n = 0, $i = 0; $s >= 2; $n += $c[$i++] * $s--);
|
$n = 0;
|
||||||
|
for ($s = 10, $i = 0; $s >= 2; ++$i, --$s) {
|
||||||
|
$n += $c[$i] * $s;
|
||||||
|
}
|
||||||
|
|
||||||
if ($c[9] != ((($n %= 11) < 2) ? 0 : 11 - $n)) {
|
if ($c[9] != ((($n %= 11) < 2) ? 0 : 11 - $n)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ($s = 11, $n = 0, $i = 0; $s >= 2; $n += $c[$i++] * $s--);
|
$n = 0;
|
||||||
|
for ($s = 11, $i = 0; $s >= 2; ++$i, --$s) {
|
||||||
|
$n += $c[$i] * $s;
|
||||||
|
}
|
||||||
|
|
||||||
if ($c[10] != ((($n %= 11) < 2) ? 0 : 11 - $n)) {
|
if ($c[10] != ((($n %= 11) < 2) ? 0 : 11 - $n)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -22,6 +22,7 @@ class PostalCode extends AbstractEnvelope
|
||||||
{
|
{
|
||||||
public const DEFAULT_PATTERN = '/^$/';
|
public const DEFAULT_PATTERN = '/^$/';
|
||||||
|
|
||||||
|
// phpcs:disable Generic.Files.LineLength.TooLong
|
||||||
/**
|
/**
|
||||||
* @see http://download.geonames.org/export/dump/countryInfo.txt
|
* @see http://download.geonames.org/export/dump/countryInfo.txt
|
||||||
*/
|
*/
|
||||||
|
@ -187,6 +188,7 @@ class PostalCode extends AbstractEnvelope
|
||||||
'ZA' => '/^(\d{4})$/',
|
'ZA' => '/^(\d{4})$/',
|
||||||
'ZM' => '/^(\d{5})$/',
|
'ZM' => '/^(\d{5})$/',
|
||||||
];
|
];
|
||||||
|
// phpcs:enable Generic.Files.LineLength.TooLong
|
||||||
|
|
||||||
public function __construct($countryCode, CountryCode $countryCodeRule = null)
|
public function __construct($countryCode, CountryCode $countryCodeRule = null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,7 +24,9 @@ class Sorted extends AbstractRule
|
||||||
|
|
||||||
public function __construct(callable $fn = null, bool $ascending = true)
|
public function __construct(callable $fn = null, bool $ascending = true)
|
||||||
{
|
{
|
||||||
$this->fn = $fn ?? function ($x) { return $x; };
|
$this->fn = $fn ?? function ($x) {
|
||||||
|
return $x;
|
||||||
|
};
|
||||||
$this->ascending = $ascending;
|
$this->ascending = $ascending;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,8 +37,7 @@ class Sorted extends AbstractRule
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
for ($i = 1; $i < $count; ++$i) {
|
for ($i = 1; $i < $count; ++$i) {
|
||||||
if (
|
if (($this->ascending && ($this->fn)($input[$i]) < ($this->fn)($input[$i - 1]))
|
||||||
($this->ascending && ($this->fn)($input[$i]) < ($this->fn)($input[$i - 1]))
|
|
||||||
|| (!$this->ascending && ($this->fn)($input[$i]) > ($this->fn)($input[$i - 1]))
|
|| (!$this->ascending && ($this->fn)($input[$i]) > ($this->fn)($input[$i - 1]))
|
||||||
) {
|
) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -35,6 +35,7 @@ final class VideoUrl extends AbstractRule
|
||||||
*/
|
*/
|
||||||
private $service;
|
private $service;
|
||||||
|
|
||||||
|
// phpcs:disable Generic.Files.LineLength.TooLong
|
||||||
/**
|
/**
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
|
@ -43,6 +44,7 @@ final class VideoUrl extends AbstractRule
|
||||||
'vimeo' => '@^https?://(www\.)?(player\.)?(vimeo\.com/)((channels/[A-z]+/)|(groups/[A-z]+/videos/)|(video/))?([0-9]+)@i',
|
'vimeo' => '@^https?://(www\.)?(player\.)?(vimeo\.com/)((channels/[A-z]+/)|(groups/[A-z]+/videos/)|(video/))?([0-9]+)@i',
|
||||||
'twitch' => '@^https?://(((www\.)?twitch\.tv/videos/[0-9]+)|clips\.twitch\.tv/[a-zA-Z]+)$@i',
|
'twitch' => '@^https?://(((www\.)?twitch\.tv/videos/[0-9]+)|clips\.twitch\.tv/[a-zA-Z]+)$@i',
|
||||||
];
|
];
|
||||||
|
// phpcs:enable Generic.Files.LineLength.TooLong
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new instance VideoUrl.
|
* Create a new instance VideoUrl.
|
||||||
|
|
18
phpcs.xml.dist
Normal file
18
phpcs.xml.dist
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<ruleset
|
||||||
|
name="PHPCS Coding Standards for Respect"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd"
|
||||||
|
>
|
||||||
|
<arg name="basepath" value="." />
|
||||||
|
<arg name="cache" value=".phpcs.cache" />
|
||||||
|
<arg name="colors" />
|
||||||
|
<arg name="extensions" value="php,phpt" />
|
||||||
|
<arg value="p" />
|
||||||
|
|
||||||
|
<file>library/</file>
|
||||||
|
<file>tests/</file>
|
||||||
|
|
||||||
|
<rule ref="PSR1" />
|
||||||
|
<rule ref="PSR2" />
|
||||||
|
</ruleset>
|
|
@ -10,9 +10,12 @@ use Respect\Validation\Validator;
|
||||||
|
|
||||||
Factory::setDefaultInstance(new Factory([], [], function (string $message): string {
|
Factory::setDefaultInstance(new Factory([], [], function (string $message): string {
|
||||||
$messages = [
|
$messages = [
|
||||||
'All of the required rules must pass for {{name}}' => 'Todas as regras requeridas devem passar para {{name}}',
|
'All of the required rules must pass for {{name}}'
|
||||||
'{{name}} must be of type string' => '{{name}} deve ser do tipo string',
|
=> 'Todas as regras requeridas devem passar para {{name}}',
|
||||||
'{{name}} must have a length between {{minValue}} and {{maxValue}}' => '{{name}} deve possuir de {{minValue}} a {{maxValue}} caracteres',
|
'{{name}} must be of type string'
|
||||||
|
=> '{{name}} deve ser do tipo string',
|
||||||
|
'{{name}} must have a length between {{minValue}} and {{maxValue}}'
|
||||||
|
=> '{{name}} deve possuir de {{minValue}} a {{maxValue}} caracteres',
|
||||||
];
|
];
|
||||||
|
|
||||||
return $messages[$message];
|
return $messages[$message];
|
||||||
|
|
|
@ -58,7 +58,8 @@ class AbstractRuleTest extends TestCase
|
||||||
$booleanResult,
|
$booleanResult,
|
||||||
// Invoking it to trigger __invoke
|
// Invoking it to trigger __invoke
|
||||||
$abstractRuleMock($input),
|
$abstractRuleMock($input),
|
||||||
'When invoking an instance of AbstractRule, the method validate should be called with the same input and return the same result.'
|
'When invoking an instance of AbstractRule, the method validate should'
|
||||||
|
. 'be called with the same input and return the same result.'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,11 +41,17 @@ final class AttributeTest extends RuleTestCase
|
||||||
->willReturn(true);
|
->willReturn(true);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'Is valid when attribute is present without extra validator' => [new Attribute('bar'), $obj],
|
'attribute is present without extra validator' => [new Attribute('bar'), $obj],
|
||||||
'Is valid when private attribute is present without extra validator' => [new Attribute('bar'), $this->objectWithPrivateProperty()],
|
'private attribute is present without extra validator' => [
|
||||||
'Is valid when attribute is present with extra validator' => [new Attribute('bar', $extraValidator), $obj],
|
new Attribute('bar'),
|
||||||
'Is valid when non mandatory attribute is not present' => [new Attribute('foo', null, false), $obj],
|
$this->objectWithPrivateProperty()
|
||||||
'Is valid when non mandatory attribute is not present with extra validator' => [new Attribute('foo', $extraValidator, false), $obj],
|
],
|
||||||
|
'attribute is present with extra validator' => [new Attribute('bar', $extraValidator), $obj],
|
||||||
|
'non mandatory attribute is not present' => [new Attribute('foo', null, false), $obj],
|
||||||
|
'non mandatory attribute is not present with extra validator' => [
|
||||||
|
new Attribute('foo', $extraValidator, false),
|
||||||
|
$obj
|
||||||
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,10 +67,13 @@ final class AttributeTest extends RuleTestCase
|
||||||
$extraValidatorMock->method('validate')->willReturn(false);
|
$extraValidatorMock->method('validate')->willReturn(false);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'Is not valid when attribute is absent without extra validator' => [new Attribute('barr'), $obj],
|
'attribute is absent without extra validator' => [new Attribute('barr'), $obj],
|
||||||
'Is not valid when private attribute is not valid based on extra validator' => [new Attribute('bar', $extraValidatorMock), $this->objectWithPrivateProperty()],
|
'private attribute is not valid based on extra validator' => [
|
||||||
'Is not valid when value provided is an empty string' => [new Attribute('barr'), ''],
|
new Attribute('bar', $extraValidatorMock),
|
||||||
'Is not valid when validator related to attribute does not validate' => [new Attribute('bar', $extraValidatorMock), $obj],
|
$this->objectWithPrivateProperty()
|
||||||
|
],
|
||||||
|
'value provided is an empty string' => [new Attribute('barr'), ''],
|
||||||
|
'validator related to attribute does not validate' => [new Attribute('bar', $extraValidatorMock), $obj],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,9 @@ final class CallbackTest extends RuleTestCase
|
||||||
[new Callback('is_a', 'stdClass'), new \stdClass()],
|
[new Callback('is_a', 'stdClass'), new \stdClass()],
|
||||||
[new Callback([$this, 'thisIsASampleCallbackUsedInsideThisTest']), 'test'],
|
[new Callback([$this, 'thisIsASampleCallbackUsedInsideThisTest']), 'test'],
|
||||||
[new Callback('is_string'), 'test'],
|
[new Callback('is_string'), 'test'],
|
||||||
[new Callback(function () { return true; }), 'wpoiur'],
|
[new Callback(function () {
|
||||||
|
return true;
|
||||||
|
}), 'wpoiur'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,8 +54,12 @@ final class CallbackTest extends RuleTestCase
|
||||||
public function providerForInvalidInput(): array
|
public function providerForInvalidInput(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
[new Callback(function () { return false; }), 'w poiur'],
|
[new Callback(function () {
|
||||||
[new Callback(function () { return false; }), ''],
|
return false;
|
||||||
|
}), 'w poiur'],
|
||||||
|
[new Callback(function () {
|
||||||
|
return false;
|
||||||
|
}), ''],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,10 @@ final class FactorTest extends RuleTestCase
|
||||||
'mt_rand is not factor -1.5' => [new Factor(mt_rand()), -1.5],
|
'mt_rand is not factor -1.5' => [new Factor(mt_rand()), -1.5],
|
||||||
'mt_rand is not factor PHP_INT_MAX + 1' => [new Factor(mt_rand()), PHP_INT_MAX + 1],
|
'mt_rand is not factor PHP_INT_MAX + 1' => [new Factor(mt_rand()), PHP_INT_MAX + 1],
|
||||||
'mt_rand is not factor calc' => [new Factor(mt_rand()), mt_rand(1, mt_getrandmax() - 1) / mt_getrandmax()],
|
'mt_rand is not factor calc' => [new Factor(mt_rand()), mt_rand(1, mt_getrandmax() - 1) / mt_getrandmax()],
|
||||||
'mt_rand is not factor -calc' => [new Factor(mt_rand()), -(mt_rand(1, mt_getrandmax() - 1) / mt_getrandmax())],
|
'mt_rand is not factor -calc' => [
|
||||||
|
new Factor(mt_rand()),
|
||||||
|
-(mt_rand(1, mt_getrandmax() - 1) / mt_getrandmax())
|
||||||
|
],
|
||||||
'mt_rand is not factor \'a\'' => [new Factor(mt_rand()), 'a'],
|
'mt_rand is not factor \'a\'' => [new Factor(mt_rand()), 'a'],
|
||||||
'mt_rand is not factor \'foo\'' => [new Factor(mt_rand()), 'foo'],
|
'mt_rand is not factor \'foo\'' => [new Factor(mt_rand()), 'foo'],
|
||||||
'mt_rand is not factor uniqid(\'a\')' => [new Factor(mt_rand()), uniqid('a')],
|
'mt_rand is not factor uniqid(\'a\')' => [new Factor(mt_rand()), uniqid('a')],
|
||||||
|
|
|
@ -61,7 +61,8 @@ final class MacAddressTest extends RuleTestCase
|
||||||
'float' => [$sut, random_int(1, 9) / 10],
|
'float' => [$sut, random_int(1, 9) / 10],
|
||||||
'null' => [$sut, null],
|
'null' => [$sut, null],
|
||||||
'resource' => [$sut, tmpfile()],
|
'resource' => [$sut, tmpfile()],
|
||||||
'callable' => [$sut, function (): void {}],
|
'callable' => [$sut, function (): void {
|
||||||
|
}],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ final class MimetypeTest extends RuleTestCase
|
||||||
public function itShouldValidateWithDefinedFinfoInstance(): void
|
public function itShouldValidateWithDefinedFinfoInstance(): void
|
||||||
{
|
{
|
||||||
$mimetype = 'application/octet-stream';
|
$mimetype = 'application/octet-stream';
|
||||||
$filename = $this->getFixtureDirectory().'/valid-image.png';
|
$filename = 'tests/fixtures/valid-image.png';
|
||||||
|
|
||||||
$fileInfoMock = $this
|
$fileInfoMock = $this
|
||||||
->getMockBuilder(finfo::class)
|
->getMockBuilder(finfo::class)
|
||||||
|
@ -65,12 +65,12 @@ final class MimetypeTest extends RuleTestCase
|
||||||
public function providerForValidInput(): array
|
public function providerForValidInput(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'image/png' => [new Mimetype('image/png'), $this->getFixtureDirectory().'/valid-image.png'],
|
'image/png' => [new Mimetype('image/png'), 'tests/fixtures/valid-image.png'],
|
||||||
'image/gif' => [new Mimetype('image/gif'), $this->getFixtureDirectory().'/valid-image.gif'],
|
'image/gif' => [new Mimetype('image/gif'), 'tests/fixtures/valid-image.gif'],
|
||||||
'image/jpeg' => [new Mimetype('image/jpeg'), $this->getFixtureDirectory().'/valid-image.jpg'],
|
'image/jpeg' => [new Mimetype('image/jpeg'), 'tests/fixtures/valid-image.jpg'],
|
||||||
'text/plain' => [new Mimetype('text/plain'), $this->getFixtureDirectory().'/executable'],
|
'text/plain' => [new Mimetype('text/plain'), 'tests/fixtures/executable'],
|
||||||
'SplFileInfo' => [new Mimetype('image/png'), new SplFileInfo($this->getFixtureDirectory().'/valid-image.png')],
|
'SplFileInfo' => [new Mimetype('image/png'), new SplFileInfo('tests/fixtures/valid-image.png')],
|
||||||
'SplFileObject' => [new Mimetype('image/png'), new SplFileObject($this->getFixtureDirectory().'/valid-image.png')],
|
'SplFileObject' => [new Mimetype('image/png'), new SplFileObject('tests/fixtures/valid-image.png')],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,8 +80,8 @@ final class MimetypeTest extends RuleTestCase
|
||||||
public function providerForInvalidInput(): array
|
public function providerForInvalidInput(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'invalid file' => [new Mimetype('image/png'), $this->getFixtureDirectory().'/invalid-image.png'],
|
'invalid file' => [new Mimetype('image/png'), 'tests/fixtures/invalid-image.png'],
|
||||||
'mismatch' => [new Mimetype('image/gif'), $this->getFixtureDirectory().'/valid-image.png'],
|
'mismatch' => [new Mimetype('image/gif'), 'tests/fixtures/valid-image.png'],
|
||||||
'directory' => [new Mimetype('application/octet-stream'), __DIR__],
|
'directory' => [new Mimetype('application/octet-stream'), __DIR__],
|
||||||
'boolean' => [new Mimetype('application/octet-stream'), true],
|
'boolean' => [new Mimetype('application/octet-stream'), true],
|
||||||
'array' => [new Mimetype('application/octet-stream'), [__FILE__]],
|
'array' => [new Mimetype('application/octet-stream'), [__FILE__]],
|
||||||
|
|
|
@ -37,9 +37,9 @@ final class SymbolicLinkTest extends RuleTestCase
|
||||||
$sut = new SymbolicLink();
|
$sut = new SymbolicLink();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'filename' => [$sut, $this->getFixtureDirectory().'/symbolic-link'],
|
'filename' => [$sut, 'tests/fixtures/symbolic-link'],
|
||||||
'SplFileInfo' => [$sut, new SplFileInfo($this->getFixtureDirectory().'/symbolic-link')],
|
'SplFileInfo' => [$sut, new SplFileInfo('tests/fixtures/symbolic-link')],
|
||||||
'SplFileObject' => [$sut, new SplFileObject($this->getFixtureDirectory().'/symbolic-link')],
|
'SplFileObject' => [$sut, new SplFileObject('tests/fixtures/symbolic-link')],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,8 +51,8 @@ final class SymbolicLinkTest extends RuleTestCase
|
||||||
$sut = new SymbolicLink();
|
$sut = new SymbolicLink();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'no existing filename' => [$sut, $this->getFixtureDirectory().'/non-existing-symbolic-link'],
|
'no existing filename' => [$sut, 'tests/fixtures/non-existing-symbolic-link'],
|
||||||
'no existing SplFileInfo' => [$sut, new SplFileInfo($this->getFixtureDirectory().'/non-existing-symbolic-link')],
|
'no existing SplFileInfo' => [$sut, new SplFileInfo('tests/fixtures/non-existing-symbolic-link')],
|
||||||
'bool true' => [$sut, true],
|
'bool true' => [$sut, true],
|
||||||
'bool false' => [$sut, false],
|
'bool false' => [$sut, false],
|
||||||
'empty string' => [$sut, ''],
|
'empty string' => [$sut, ''],
|
||||||
|
|
|
@ -29,7 +29,7 @@ class TypeTest extends RuleTestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @expectedException \Respect\Validation\Exceptions\ComponentException
|
* @expectedException \Respect\Validation\Exceptions\ComponentException
|
||||||
* @expectedExceptionMessage "whatever" is not a valid type (Available: array, bool, boolean, callable, double, float, int, integer, null, object, resource, string)
|
* @expectedExceptionMessageRegExp /"whatever" is not a valid type \(Available: .+\)/
|
||||||
*
|
*
|
||||||
* @test
|
* @test
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -34,23 +34,43 @@ final class WhenTest extends RuleTestCase
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'all true' => [
|
'all true' => [
|
||||||
new When($this->createValidatableMock(true), $this->createValidatableMock(true), $this->createValidatableMock(true)),
|
new When(
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
$this->createValidatableMock(true)
|
||||||
|
),
|
||||||
true,
|
true,
|
||||||
],
|
],
|
||||||
'bool (when = true, then = true, else = false)' => [
|
'bool (when = true, then = true, else = false)' => [
|
||||||
new When($this->createValidatableMock(true), $this->createValidatableMock(true), $this->createValidatableMock(false)),
|
new When(
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
$this->createValidatableMock(false)
|
||||||
|
),
|
||||||
true,
|
true,
|
||||||
],
|
],
|
||||||
'bool (when = false, then = true, else = true)' => [
|
'bool (when = false, then = true, else = true)' => [
|
||||||
new When($this->createValidatableMock(false), $this->createValidatableMock(true), $this->createValidatableMock(true)),
|
new When(
|
||||||
|
$this->createValidatableMock(false),
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
$this->createValidatableMock(true)
|
||||||
|
),
|
||||||
true,
|
true,
|
||||||
],
|
],
|
||||||
'bool (when = false, then = false, else = true)' => [
|
'bool (when = false, then = false, else = true)' => [
|
||||||
new When($this->createValidatableMock(false), $this->createValidatableMock(false), $this->createValidatableMock(true)),
|
new When(
|
||||||
|
$this->createValidatableMock(false),
|
||||||
|
$this->createValidatableMock(false),
|
||||||
|
$this->createValidatableMock(true)
|
||||||
|
),
|
||||||
true,
|
true,
|
||||||
],
|
],
|
||||||
'bool (when = false, then = true, else = null)' => [
|
'bool (when = false, then = true, else = null)' => [
|
||||||
new When($this->createValidatableMock(true), $this->createValidatableMock(true), null),
|
new When(
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
null
|
||||||
|
),
|
||||||
true,
|
true,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
@ -63,19 +83,35 @@ final class WhenTest extends RuleTestCase
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'bool (when = true, then = false, else = false)' => [
|
'bool (when = true, then = false, else = false)' => [
|
||||||
new When($this->createValidatableMock(true), $this->createValidatableMock(false), $this->createValidatableMock(false)),
|
new When(
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
$this->createValidatableMock(false),
|
||||||
|
$this->createValidatableMock(false)
|
||||||
|
),
|
||||||
false,
|
false,
|
||||||
],
|
],
|
||||||
'bool (when = true, then = false, else = true)' => [
|
'bool (when = true, then = false, else = true)' => [
|
||||||
new When($this->createValidatableMock(true), $this->createValidatableMock(false), $this->createValidatableMock(true)),
|
new When(
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
$this->createValidatableMock(false),
|
||||||
|
$this->createValidatableMock(true)
|
||||||
|
),
|
||||||
false,
|
false,
|
||||||
],
|
],
|
||||||
'bool (when = false, then = false, else = false)' => [
|
'bool (when = false, then = false, else = false)' => [
|
||||||
new When($this->createValidatableMock(false), $this->createValidatableMock(false), $this->createValidatableMock(false)),
|
new When(
|
||||||
|
$this->createValidatableMock(false),
|
||||||
|
$this->createValidatableMock(false),
|
||||||
|
$this->createValidatableMock(false)
|
||||||
|
),
|
||||||
false,
|
false,
|
||||||
],
|
],
|
||||||
'bool (when = true, then = false, else = null)' => [
|
'bool (when = true, then = false, else = null)' => [
|
||||||
new When($this->createValidatableMock(true), $this->createValidatableMock(false), null),
|
new When(
|
||||||
|
$this->createValidatableMock(true),
|
||||||
|
$this->createValidatableMock(false),
|
||||||
|
null
|
||||||
|
),
|
||||||
false,
|
false,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -80,7 +80,7 @@ class ZendTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function userlandValidatorExtendingZendInterface(): void
|
public function userlandValidatorExtendingZendInterface(): void
|
||||||
{
|
{
|
||||||
$v = new Zend(new MyValidator());
|
$v = new Zend(new ZendDate());
|
||||||
self::assertAttributeInstanceOf(
|
self::assertAttributeInstanceOf(
|
||||||
$instanceOf = ValidatorInterface::class,
|
$instanceOf = ValidatorInterface::class,
|
||||||
$attribute = 'zendValidator',
|
$attribute = 'zendValidator',
|
||||||
|
@ -107,7 +107,7 @@ class ZendTest extends TestCase
|
||||||
*
|
*
|
||||||
* @test
|
* @test
|
||||||
*/
|
*/
|
||||||
public function constructorWithValidatorName_and_params(): void
|
public function constructorWithValidatorNameAndParams(): void
|
||||||
{
|
{
|
||||||
$zendValidatorName = 'StringLength';
|
$zendValidatorName = 'StringLength';
|
||||||
$zendValidatorParams = ['min' => 10, 'max' => 25];
|
$zendValidatorParams = ['min' => 10, 'max' => 25];
|
||||||
|
@ -153,7 +153,7 @@ class ZendTest extends TestCase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @depends constructorWithValidatorName
|
* @depends constructorWithValidatorName
|
||||||
* @depends constructorWithValidatorName_and_params
|
* @depends constructorWithValidatorNameAndParams
|
||||||
* @depends zendDateValidatorWithRespectMethods
|
* @depends zendDateValidatorWithRespectMethods
|
||||||
* @expectedException \Respect\Validation\Exceptions\ZendException
|
* @expectedException \Respect\Validation\Exceptions\ZendException
|
||||||
*
|
*
|
||||||
|
@ -165,10 +165,3 @@ class ZendTest extends TestCase
|
||||||
$v->assert('aw');
|
$v->assert('aw');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stubs
|
|
||||||
if (class_exists(ZendDate::class)) {
|
|
||||||
class MyValidator extends ZendDate
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue