1111
1212namespace CodeIgniter \Validation ;
1313
14- use CodeIgniter \Test \CIUnitTestCase ;
15- use CodeIgniter \Test \DatabaseTestTrait ;
16- use Config \Database ;
17- use Config \Services ;
14+ use CodeIgniter \Validation \StrictRules \DatabaseRelatedRulesTest as StrictDatabaseRelatedRulesTest ;
1815use Tests \Support \Validation \TestRules ;
1916
2017/**
2118 * @internal
2219 *
2320 * @group DatabaseLive
2421 */
25- final class DatabaseRelatedRulesTest extends CIUnitTestCase
22+ final class DatabaseRelatedRulesTest extends StrictDatabaseRelatedRulesTest
2623{
27- use DatabaseTestTrait;
28-
29- private Validation $ validation ;
30- private array $ config = [
24+ protected array $ config = [
3125 'ruleSets ' => [
3226 Rules::class,
3327 FormatRules::class,
@@ -45,173 +39,8 @@ final class DatabaseRelatedRulesTest extends CIUnitTestCase
4539 ],
4640 ];
4741
48- protected function setUp (): void
49- {
50- parent ::setUp ();
51- $ this ->validation = new Validation ((object ) $ this ->config , Services::renderer ());
52- $ this ->validation ->reset ();
53- }
54-
55- public function testIsUniqueFalse (): void
56- {
57- Database::connect ()
58- ->table ('user ' )
59- ->insert ([
60- 'name ' => 'Derek Travis ' ,
61- 'email ' => 'derek@world.com ' ,
62- 'country ' => 'Elbonia ' ,
63- ]);
64-
65- $ data = ['email ' => 'derek@world.com ' ];
66- $ this ->validation ->setRules (['email ' => 'is_unique[user.email] ' ]);
67- $ this ->assertFalse ($ this ->validation ->run ($ data ));
68- }
69-
70- public function testIsUniqueTrue (): void
71- {
72- $ data = ['email ' => 'derek@world.co.uk ' ];
73- $ this ->validation ->setRules (['email ' => 'is_unique[user.email] ' ]);
74- $ this ->assertTrue ($ this ->validation ->run ($ data ));
75- }
76-
77- public function testIsUniqueIgnoresParams (): void
78- {
79- $ db = Database::connect ();
80- $ db
81- ->table ('user ' )
82- ->insert ([
83- 'name ' => 'Developer A ' ,
84- 'email ' => 'deva@example.com ' ,
85- 'country ' => 'Elbonia ' ,
86- ]);
87- $ row = $ db ->table ('user ' )
88- ->limit (1 )
89- ->get ()
90- ->getRow ();
91-
92- $ data = ['email ' => 'derek@world.co.uk ' ];
93- $ this ->validation ->setRules (['email ' => "is_unique[user.email,id, {$ row ->id }] " ]);
94- $ this ->assertTrue ($ this ->validation ->run ($ data ));
95- }
96-
97- public function testIsUniqueIgnoresParamsPlaceholders (): void
98- {
99- $ this ->hasInDatabase ('user ' , [
100- 'name ' => 'Derek ' ,
101- 'email ' => 'derek@world.co.uk ' ,
102- 'country ' => 'GB ' ,
103- ]);
104-
105- $ row = Database::connect ()
106- ->table ('user ' )
107- ->limit (1 )
108- ->get ()
109- ->getRow ();
110-
111- $ data = [
112- 'id ' => $ row ->id ,
113- 'email ' => 'derek@world.co.uk ' ,
114- ];
115-
116- $ this ->validation ->setRules (['email ' => 'is_unique[user.email,id,{id}] ' ]);
117- $ this ->assertTrue ($ this ->validation ->run ($ data ));
118- }
119-
120- public function testIsUniqueByManualRun (): void
121- {
122- Database::connect ()
123- ->table ('user ' )
124- ->insert ([
125- 'name ' => 'Developer A ' ,
126- 'email ' => 'deva@example.com ' ,
127- 'country ' => 'Elbonia ' ,
128- ]);
129-
130- $ this ->assertFalse ((new Rules ())->is_unique ('deva@example.com ' , 'user.email,id,{id} ' , []));
131- }
132-
133- public function testIsNotUniqueFalse (): void
134- {
135- Database::connect ()
136- ->table ('user ' )
137- ->insert ([
138- 'name ' => 'Derek Travis ' ,
139- 'email ' => 'derek@world.com ' ,
140- 'country ' => 'Elbonia ' ,
141- ]);
142-
143- $ data = ['email ' => 'derek1@world.com ' ];
144- $ this ->validation ->setRules (['email ' => 'is_not_unique[user.email] ' ]);
145- $ this ->assertFalse ($ this ->validation ->run ($ data ));
146- }
147-
148- public function testIsNotUniqueTrue (): void
149- {
150- Database::connect ()
151- ->table ('user ' )
152- ->insert ([
153- 'name ' => 'Derek Travis ' ,
154- 'email ' => 'derek@world.com ' ,
155- 'country ' => 'Elbonia ' ,
156- ]);
157-
158- $ data = ['email ' => 'derek@world.com ' ];
159- $ this ->validation ->setRules (['email ' => 'is_not_unique[user.email] ' ]);
160- $ this ->assertTrue ($ this ->validation ->run ($ data ));
161- }
162-
163- public function testIsNotUniqueIgnoresParams (): void
42+ protected function createRules ()
16443 {
165- $ db = Database::connect ();
166- $ db ->table ('user ' )
167- ->insert ([
168- 'name ' => 'Developer A ' ,
169- 'email ' => 'deva@example.com ' ,
170- 'country ' => 'Elbonia ' ,
171- ]);
172-
173- $ row = $ db ->table ('user ' )
174- ->limit (1 )
175- ->get ()
176- ->getRow ();
177-
178- $ data = ['email ' => 'derek@world.co.uk ' ];
179- $ this ->validation ->setRules (['email ' => "is_not_unique[user.email,id, {$ row ->id }] " ]);
180- $ this ->assertFalse ($ this ->validation ->run ($ data ));
181- }
182-
183- public function testIsNotUniqueIgnoresParamsPlaceholders (): void
184- {
185- $ this ->hasInDatabase ('user ' , [
186- 'name ' => 'Derek ' ,
187- 'email ' => 'derek@world.co.uk ' ,
188- 'country ' => 'GB ' ,
189- ]);
190-
191- $ row = Database::connect ()
192- ->table ('user ' )
193- ->limit (1 )
194- ->get ()
195- ->getRow ();
196-
197- $ data = [
198- 'id ' => $ row ->id ,
199- 'email ' => 'derek@world.co.uk ' ,
200- ];
201- $ this ->validation ->setRules (['email ' => 'is_not_unique[user.email,id,{id}] ' ]);
202- $ this ->assertTrue ($ this ->validation ->run ($ data ));
203- }
204-
205- public function testIsNotUniqueByManualRun (): void
206- {
207- Database::connect ()
208- ->table ('user ' )
209- ->insert ([
210- 'name ' => 'Developer A ' ,
211- 'email ' => 'deva@example.com ' ,
212- 'country ' => 'Elbonia ' ,
213- ]);
214-
215- $ this ->assertTrue ((new Rules ())->is_not_unique ('deva@example.com ' , 'user.email,id,{id} ' , []));
44+ return new Rules ();
21645 }
21746}
0 commit comments