mirror of
https://github.com/Respect/Validation.git
synced 2026-03-17 15:50:03 +01:00
The `Id`, `Name`, and `Path` value objects are not only message-related concerns, they're part of the core of the library, hence it makes sense to place them at the root namespace.
49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Copyright (c) Alexandre Gomes Gaigalas <alganet@gmail.com>
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Respect\Validation\Rules;
|
|
|
|
use PHPUnit\Framework\Attributes\CoversClass;
|
|
use PHPUnit\Framework\Attributes\Group;
|
|
use PHPUnit\Framework\Attributes\Test;
|
|
use Respect\Validation\Id;
|
|
use Respect\Validation\Test\Rules\Stub;
|
|
use Respect\Validation\Test\RuleTestCase;
|
|
|
|
#[Group('rule')]
|
|
#[CoversClass(Not::class)]
|
|
final class NotTest extends RuleTestCase
|
|
{
|
|
#[Test]
|
|
public function shouldInvertTheResultOfWrappedRule(): void
|
|
{
|
|
$wrapped = Stub::fail(2);
|
|
|
|
$rule = new Not($wrapped);
|
|
|
|
self::assertEquals(
|
|
$rule->evaluate('input'),
|
|
$wrapped->evaluate('input')->withId(new Id('notStub'))->withToggledModeAndValidation(),
|
|
);
|
|
}
|
|
|
|
/** @return iterable<string, array{Not, mixed}> */
|
|
public static function providerForValidInput(): iterable
|
|
{
|
|
yield 'invert fail' => [new Not(Stub::fail(1)), []];
|
|
yield 'invert success x2' => [new Not(new Not(Stub::pass(1))), []];
|
|
}
|
|
|
|
/** @return iterable<string, array{Not, mixed}> */
|
|
public static function providerForInvalidInput(): iterable
|
|
{
|
|
yield 'invert pass' => [new Not(Stub::pass(1)), []];
|
|
yield 'invert fail x2' => [new Not(new Not(Stub::fail(1))), []];
|
|
}
|
|
}
|