mirror of
https://github.com/Respect/Validation.git
synced 2024-06-26 17:20:16 +02:00
These changes will also introduce an abstract rule that validates non-empty-iterable values. The abstract rule can also be the parent of the recently created "Min" rule. Therefore, I've changed that class too. I've introduced many tests for the "Each" rule to make sure what its expected behavior is. I'm not super happy with its output, but I tried a couple of options, and it is the best choice. Note that Each now rejects `stdClass` and empty iterable values. I thought that would make sense, as it would be useless when the input is empty. Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
49 lines
1.4 KiB
PHP
49 lines
1.4 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Copyright (c) Alexandre Gomes Gaigalas <alganet@gmail.com>
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Respect\Validation\Rules;
|
|
|
|
use ArrayObject;
|
|
use PHPUnit\Framework\Attributes\CoversClass;
|
|
use PHPUnit\Framework\Attributes\Group;
|
|
use Respect\Validation\Test\Rules\Stub;
|
|
use Respect\Validation\Test\RuleTestCase;
|
|
use stdClass;
|
|
|
|
#[Group('rule')]
|
|
#[CoversClass(Each::class)]
|
|
final class EachTest extends RuleTestCase
|
|
{
|
|
/** @return iterable<array{Each, mixed}> */
|
|
public static function providerForValidInput(): iterable
|
|
{
|
|
return [
|
|
[new Each(Stub::pass(5)), [1, 2, 3, 4, 5]],
|
|
[new Each(Stub::pass(5)), new ArrayObject([1, 2, 3, 4, 5])],
|
|
];
|
|
}
|
|
|
|
/** @return iterable<array{Each, mixed}> */
|
|
public static function providerForInvalidInput(): iterable
|
|
{
|
|
return [
|
|
[new Each(Stub::daze()), []],
|
|
[new Each(Stub::daze()), new stdClass()],
|
|
[new Each(Stub::daze()), 123],
|
|
[new Each(Stub::daze()), ''],
|
|
[new Each(Stub::daze()), null],
|
|
[new Each(Stub::daze()), false],
|
|
[new Each(Stub::fail(5)), ['', 2, 3, 4, 5]],
|
|
[new Each(Stub::fail(5)), ['a', 2, 3, 4, 5]],
|
|
[new Each(Stub::fail(5)), new ArrayObject([1, 2, 3, 4, 5])],
|
|
[new Each(Stub::fail(5)), (object) ['foo' => true]],
|
|
];
|
|
}
|
|
}
|