1+ <?php
2+
3+ namespace Matteoc99 \LaravelPreference \Tests ;
4+
5+ use Illuminate \Support \Facades \Validator ;
6+ use Matteoc99 \LaravelPreference \Enums \Cast ;
7+
8+ class CastTest extends TestCase
9+ {
10+ /**
11+ * @test
12+ */
13+ public function it_validates_correct_int_values ()
14+ {
15+ $ cast = Cast::INT ;
16+
17+ $ this ->assertTrue (Validator::make (["value " => 123 ], ['value ' => $ cast ->validation ()])->passes ());
18+ $ this ->assertTrue (Validator::make (["value " => "123 " ], ['value ' => $ cast ->validation ()])->passes ());
19+
20+ $ this ->assertFalse (Validator::make (["value " => "hello " ], ['value ' => $ cast ->validation ()])->passes ());
21+ $ this ->assertFalse (Validator::make (["value " => 12.34 ], ['value ' => $ cast ->validation ()])->passes ());
22+ }
23+
24+ /**
25+ * @test
26+ */
27+ public function it_validates_correct_float_values ()
28+ {
29+ $ cast = Cast::FLOAT ;
30+
31+ $ this ->assertTrue (Validator::make (["value " => 12.34 ], ['value ' => $ cast ->validation ()])->passes ());
32+ $ this ->assertTrue (Validator::make (["value " => "12.34 " ], ['value ' => $ cast ->validation ()])->passes ());
33+
34+ $ this ->assertFalse (Validator::make (["value " => "hello " ], ['value ' => $ cast ->validation ()])->passes ());
35+ }
36+
37+ /**
38+ * @test
39+ */
40+ public function it_validates_correct_string_values ()
41+ {
42+ $ cast = Cast::STRING ;
43+
44+ $ this ->assertTrue (Validator::make (["value " => 'hello world ' ], ['value ' => $ cast ->validation ()])->passes ());
45+ $ this ->assertTrue (Validator::make (["value " => '12345 ' ], ['value ' => $ cast ->validation ()])->passes ());
46+ $ this ->assertTrue (Validator::make (["value " => '' ], ['value ' => $ cast ->validation ()])->passes ());
47+
48+ $ this ->assertFalse (Validator::make (["value " => 123 ], ['value ' => $ cast ->validation ()])->passes ());
49+ $ this ->assertFalse (Validator::make (["value " => true ], ['value ' => $ cast ->validation ()])->passes ());
50+ }
51+
52+ /**
53+ * @test
54+ */
55+ public function it_validates_correct_bool_values ()
56+ {
57+ $ cast = Cast::BOOL ;
58+
59+ $ this ->assertTrue (Validator::make (["value " => true ], ['value ' => $ cast ->validation ()])->passes ());
60+ $ this ->assertTrue (Validator::make (["value " => false ], ['value ' => $ cast ->validation ()])->passes ());
61+ $ this ->assertTrue (Validator::make (["value " => 0 ], ['value ' => $ cast ->validation ()])->passes ());
62+
63+ $ this ->assertFalse (Validator::make (["value " => 'hello ' ], ['value ' => $ cast ->validation ()])->passes ());
64+ $ this ->assertFalse (Validator::make (["value " => 123 ], ['value ' => $ cast ->validation ()])->passes ());
65+ }
66+
67+ /**
68+ * @test
69+ */
70+ public function it_validates_correct_array_values ()
71+ {
72+ $ cast = Cast::ARRAY ;
73+
74+ $ this ->assertTrue (Validator::make (["value " => [1 , 2 , 3 ]], ['value ' => $ cast ->validation ()])->passes ());
75+ $ this ->assertTrue (Validator::make (["value " => ['key ' => 'value ' ]], ['value ' => $ cast ->validation ()])->passes ());
76+ $ this ->assertTrue (Validator::make (["value " => []], ['value ' => $ cast ->validation ()])->passes ());
77+
78+ $ this ->assertFalse (Validator::make (["value " => 123 ], ['value ' => $ cast ->validation ()])->passes ());
79+ $ this ->assertFalse (Validator::make (["value " => 'hello ' ], ['value ' => $ cast ->validation ()])->passes ());
80+ }
81+
82+ /**
83+ * @test
84+ */
85+ public function it_validates_correct_date_values ()
86+ {
87+ $ cast = Cast::DATE ;
88+
89+ $ this ->assertTrue (Validator::make (["value " => '2023-03-20 ' ], ['value ' => $ cast ->validation ()])->passes ());
90+
91+ // Add tests with other valid date formats you might support
92+
93+ $ this ->assertFalse (Validator::make (["value " => 'hello ' ], ['value ' => $ cast ->validation ()])->passes ());
94+ $ this ->assertFalse (Validator::make (["value " => '12:30 ' ], ['value ' => $ cast ->validation ()])->passes ());
95+ }
96+
97+ /**
98+ * @test
99+ */
100+ public function it_validates_correct_datetime_values ()
101+ {
102+ $ cast = Cast::DATETIME ;
103+
104+ $ this ->assertTrue (Validator::make (["value " => '2023-03-20 13:45:00 ' ], ['value ' => $ cast ->validation ()])->passes ());
105+
106+ // Add tests with other valid datetime formats you might support
107+
108+ $ this ->assertFalse (Validator::make (["value " => 'hello ' ], ['value ' => $ cast ->validation ()])->passes ());
109+ $ this ->assertFalse (Validator::make (["value " => '12:30 ' ], ['value ' => $ cast ->validation ()])->passes ());
110+ }
111+
112+ /**
113+ * @test
114+ */
115+ public function it_validates_correct_timestamp_values ()
116+ {
117+ $ cast = Cast::TIMESTAMP ;
118+
119+ $ this ->assertTrue (Validator::make (["value " => time ()], ['value ' => $ cast ->validation ()])->passes ());
120+ $ this ->assertTrue (Validator::make (["value " => 1679190300 ], ['value ' => $ cast ->validation ()])->passes ());
121+
122+ $ this ->assertFalse (Validator::make (["value " => 'hello ' ], ['value ' => $ cast ->validation ()])->passes ());
123+ $ this ->assertFalse (Validator::make (["value " => '2023-03-20 13:45:00 ' ], ['value ' => $ cast ->validation ()])->passes ());
124+ }
125+
126+ }
0 commit comments