respect-validation/tests/feature/Rules/LengthTest.php
Henrique Moody aa293dea72
Only create Length with subsequents when possible
Since I updated the validation engine[1], it became possible to create
results with subsequents[2]. This commit changes the "Length", allowing
it to create a result with a subsequent only when it's possible. That
will improve the clarity of the error messages.

[1]: 238f2d506a
[2]: 52e628fc6f
2024-12-16 21:47:53 +01:00

58 lines
2 KiB
PHP

<?php
/*
* Copyright (c) Alexandre Gomes Gaigalas <alganet@gmail.com>
* SPDX-License-Identifier: MIT
*/
declare(strict_types=1);
test('Default', expectAll(
fn() => v::length(v::equals(3))->assert('tulip'),
'The length of "tulip" must be equal to 3',
'- The length of "tulip" must be equal to 3',
['lengthEquals' => 'The length of "tulip" must be equal to 3']
));
test('Inverted wrapped', expectAll(
fn() => v::length(v::not(v::equals(4)))->assert('rose'),
'The length of "rose" must not be equal to 4',
'- The length of "rose" must not be equal to 4',
['lengthNotEquals' => 'The length of "rose" must not be equal to 4']
));
test('Inverted wrapper', expectAll(
fn() => v::not(v::length(v::equals(4)))->assert('fern'),
'The length of "fern" must not be equal to 4',
'- The length of "fern" must not be equal to 4',
['notLengthEquals' => 'The length of "fern" must not be equal to 4']
));
test('With template', expectAll(
fn() => v::length(v::equals(3))->assert('azalea', 'This is a template'),
'This is a template',
'- This is a template',
['lengthEquals' => 'This is a template']
));
test('With wrapper name', expectAll(
fn() => v::length(v::equals(3))->setName('Cactus')->assert('peyote'),
'The length of Cactus must be equal to 3',
'- The length of Cactus must be equal to 3',
['lengthEquals' => 'The length of Cactus must be equal to 3']
));
test('Chained wrapped rule', expectAll(
fn() => v::length(v::between(5, 7)->odd())->assert([]),
'The length of `[]` must be between 5 and 7',
<<<'FULL_MESSAGE'
- All of the required rules must pass for `[]`
- The length of `[]` must be between 5 and 7
- The length of `[]` must be an odd number
FULL_MESSAGE,
[
'__root__' => 'All of the required rules must pass for `[]`',
'lengthBetween' => 'The length of `[]` must be between 5 and 7',
'lengthOdd' => 'The length of `[]` must be an odd number',
]
));