File tree Expand file tree Collapse file tree 2 files changed +47
-0
lines changed
Expand file tree Collapse file tree 2 files changed +47
-0
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Tempest \Validation \Rules ;
6+
7+ use Attribute ;
8+ use Tempest \Validation \Rule ;
9+
10+ #[Attribute]
11+ final readonly class ArrayList implements Rule
12+ {
13+ public function isValid (mixed $ value ): bool
14+ {
15+ return is_array ($ value ) && array_is_list ($ value );
16+ }
17+
18+ public function message (): string
19+ {
20+ return 'Value must be a list ' ;
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Tempest \Validation \Tests \Rules ;
6+
7+ use PHPUnit \Framework \TestCase ;
8+ use Tempest \Validation \Rules \ArrayList ;
9+
10+ /**
11+ * @internal
12+ */
13+ final class ArrayListTest extends TestCase
14+ {
15+ public function test_array_list (): void
16+ {
17+ $ rule = new ArrayList ();
18+
19+ $ this ->assertFalse ($ rule ->isValid (['foo ' => 'bar ' ]));
20+ $ this ->assertTrue ($ rule ->isValid ([]));
21+ $ this ->assertTrue ($ rule ->isValid (['a ' , 'b ' , 'c ' ]));
22+ $ this ->assertFalse ($ rule ->isValid ([0 => 'a ' , 1 => 'b ' , 3 => 'c ' ]));
23+ $ this ->assertSame ('Value must be a list ' , $ rule ->message ());
24+ }
25+ }
You can’t perform that action at this time.
0 commit comments