@@ -176,7 +176,7 @@ public function it_ignores_a_specific_attribute_with_the_given_value()
176176 }
177177
178178 /** @test */
179- public function it_returns_a_default_error_message ()
179+ public function it_returns_a_default_error_message_when_validating_a_single_translation ()
180180 {
181181 $ rules = [
182182 'form_slug ' => "{$ this ->rule }: {$ this ->table },slug " ,
@@ -214,18 +214,146 @@ public function it_returns_a_default_error_message()
214214 $ this ->assertEquals ($ expectedNameError , $ returnedNameArrayError );
215215 }
216216
217+ /** @test */
218+ public function it_returns_a_default_error_message_when_validating_an_array ()
219+ {
220+ $ rules = [
221+ 'form_slug.* ' => "{$ this ->rule }: {$ this ->table },slug " ,
222+ 'form_name.* ' => new UniqueTranslationRule ($ this ->table , 'name ' ),
223+ ];
224+
225+ $ this ->createRoute ('test ' , $ rules );
226+
227+ $ this ->post ('test ' , [
228+ 'form_slug ' => ['en ' => 'slug-en ' ],
229+ 'form_name ' => ['en ' => 'name-en ' ],
230+ ]);
231+
232+ $ expectedSlugError = trans ('validation.unique ' , ['attribute ' => 'form slug ' ]);
233+ $ expectedNameError = trans ('validation.unique ' , ['attribute ' => 'form name ' ]);
234+
235+ $ errors = session ('errors ' );
236+
237+ $ returnedSlugError = $ errors ->first ('form_slug ' );
238+ $ returnedNameError = $ errors ->first ('form_name ' );
239+
240+ $ this ->assertNotEmpty ($ returnedSlugError );
241+ $ this ->assertNotEmpty ($ returnedNameError );
242+
243+ $ this ->assertEquals ($ expectedSlugError , $ returnedSlugError );
244+ $ this ->assertEquals ($ expectedNameError , $ returnedNameError );
245+
246+ $ returnedSlugArrayError = $ errors ->first ('form_slug.en ' );
247+ $ returnedNameArrayError = $ errors ->first ('form_name.en ' );
248+
249+ $ this ->assertNotEmpty ($ returnedSlugArrayError );
250+ $ this ->assertNotEmpty ($ returnedNameArrayError );
251+
252+ $ this ->assertEquals ($ expectedSlugError , $ returnedSlugArrayError );
253+ $ this ->assertEquals ($ expectedNameError , $ returnedNameArrayError );
254+ }
255+
256+ /** @test */
257+ public function it_returns_a_custom_error_message_when_validating_a_single_translation ()
258+ {
259+ $ rules = [
260+ 'form_slug ' => "{$ this ->rule }: {$ this ->table },slug " ,
261+ 'form_name ' => new UniqueTranslationRule ($ this ->table , 'name ' ),
262+ ];
263+
264+ $ messages = [
265+ "form_slug. {$ this ->rule }" => 'Custom slug message for :attribute. ' ,
266+ "form_name. {$ this ->rule }" => 'Custom name message for :attribute. ' ,
267+ ];
268+
269+ $ this ->createRoute ('test ' , $ rules , $ messages );
270+
271+ $ this ->post ('test ' , [
272+ 'form_slug ' => 'slug-en ' ,
273+ 'form_name ' => 'name-en ' ,
274+ ]);
275+
276+ $ expectedSlugError = 'Custom slug message for form slug. ' ;
277+ $ expectedNameError = 'Custom name message for form name. ' ;
278+
279+ $ errors = session ('errors ' );
280+
281+ $ returnedSlugError = $ errors ->first ('form_slug ' );
282+ $ returnedNameError = $ errors ->first ('form_name ' );
283+
284+ $ this ->assertNotEmpty ($ returnedSlugError );
285+ $ this ->assertNotEmpty ($ returnedNameError );
286+
287+ $ this ->assertEquals ($ expectedSlugError , $ returnedSlugError );
288+ $ this ->assertEquals ($ expectedNameError , $ returnedNameError );
289+
290+ $ returnedSlugArrayError = $ errors ->first ('form_slug.en ' );
291+ $ returnedNameArrayError = $ errors ->first ('form_name.en ' );
292+
293+ $ this ->assertNotEmpty ($ returnedSlugArrayError );
294+ $ this ->assertNotEmpty ($ returnedNameArrayError );
295+
296+ $ this ->assertEquals ($ expectedSlugError , $ returnedSlugArrayError );
297+ $ this ->assertEquals ($ expectedNameError , $ returnedNameArrayError );
298+ }
299+
300+ /** @test */
301+ public function it_returns_a_custom_error_message_when_validating_an_array ()
302+ {
303+ $ rules = [
304+ 'form_slug.* ' => "{$ this ->rule }: {$ this ->table },slug " ,
305+ 'form_name.* ' => new UniqueTranslationRule ($ this ->table , 'name ' ),
306+ ];
307+
308+ $ messages = [
309+ "form_slug.*. {$ this ->rule }" => 'Custom slug message for :attribute. ' ,
310+ "form_name.*. {$ this ->rule }" => 'Custom name message for :attribute. ' ,
311+ ];
312+
313+ $ this ->createRoute ('test ' , $ rules , $ messages );
314+
315+ $ this ->post ('test ' , [
316+ 'form_slug ' => ['en ' => 'slug-en ' ],
317+ 'form_name ' => ['en ' => 'name-en ' ],
318+ ]);
319+
320+ $ expectedSlugError = 'Custom slug message for form slug. ' ;
321+ $ expectedNameError = 'Custom name message for form name. ' ;
322+
323+ $ errors = session ('errors ' );
324+
325+ $ returnedSlugError = $ errors ->first ('form_slug ' );
326+ $ returnedNameError = $ errors ->first ('form_name ' );
327+
328+ $ this ->assertNotEmpty ($ returnedSlugError );
329+ $ this ->assertNotEmpty ($ returnedNameError );
330+
331+ $ this ->assertEquals ($ expectedSlugError , $ returnedSlugError );
332+ $ this ->assertEquals ($ expectedNameError , $ returnedNameError );
333+
334+ $ returnedSlugArrayError = $ errors ->first ('form_slug.en ' );
335+ $ returnedNameArrayError = $ errors ->first ('form_name.en ' );
336+
337+ $ this ->assertNotEmpty ($ returnedSlugArrayError );
338+ $ this ->assertNotEmpty ($ returnedNameArrayError );
339+
340+ $ this ->assertEquals ($ expectedSlugError , $ returnedSlugArrayError );
341+ $ this ->assertEquals ($ expectedNameError , $ returnedNameArrayError );
342+ }
343+
217344 /**
218345 * Create a test route.
219346 *
220347 * @param string $url
221348 * @param array $rules
349+ * @param array $messages
222350 *
223351 * @return void
224352 */
225- protected function createRoute ($ url , $ rules )
353+ protected function createRoute ($ url , $ rules, $ messages = [] )
226354 {
227- Route::post ($ url , function () use ($ rules ) {
228- return request ()->validate ($ rules );
355+ Route::post ($ url , function () use ($ rules, $ messages ) {
356+ return request ()->validate ($ rules, $ messages );
229357 });
230358 }
231359}
0 commit comments