99use Illuminate \Foundation \Testing \RefreshDatabase ;
1010use Illuminate \Http \Request ;
1111use Illuminate \Support \Facades \Route ;
12+ use Illuminate \Validation \ValidationException ;
1213
1314class CustomFieldControllerTest extends TestCase
1415{
@@ -28,7 +29,7 @@ public function valid_data_passes_controller_validation()
2829 $ field = $ survey ->customFields ()->first ();
2930
3031 Route::post ("/surveys/ {$ survey ->id }/responses " , function (Request $ request ) use ($ survey ) {
31- $ survey ->validateCustomFields ($ request );
32+ $ survey ->validateCustomFields ($ request )-> validate () ;
3233
3334 return response ('All good ' , 200 );
3435 });
@@ -317,4 +318,56 @@ public function fields_can_be_saved_from_request_with_convenience_method()
317318
318319 $ this ->assertCount (1 , $ surveyResponse ->customFieldResponses );
319320 }
321+
322+ /** @test */
323+ public function can_validate_request_with_no_custom_fields ()
324+ {
325+ $ survey = Survey::create ();
326+ $ survey ->customfields ()->save (
327+ CustomField::factory ()->make ([
328+ 'title ' => 'favorite_album ' ,
329+ 'type ' => 'select ' ,
330+ 'answers ' => ['Tha Carter ' , 'Tha Carter II ' , 'Tha Carter III ' ],
331+ ])
332+ );
333+
334+ Route::post ("/surveys/ {$ survey ->id }/responses " , function (Request $ request ) use ($ survey ) {
335+ $ survey ->validateCustomFields ($ request )->validate ();
336+
337+ return response ('All good ' , 200 );
338+ });
339+
340+ $ this ->post ("/surveys/ {$ survey ->id }/responses " )
341+ ->assertOk ();
342+ }
343+
344+ /** @test */
345+ public function fails_validation_on_request_with_no_custom_fields_but_is_required ()
346+ {
347+ $ survey = Survey::create ();
348+ $ survey ->customfields ()->save (
349+ CustomField::factory ()->make ([
350+ 'title ' => 'favorite_album ' ,
351+ 'type ' => 'select ' ,
352+ 'answers ' => ['Tha Carter ' , 'Tha Carter II ' , 'Tha Carter III ' ],
353+ 'required ' => true ,
354+ ])
355+ );
356+
357+ Route::post ("/surveys/ {$ survey ->id }/responses " , function (Request $ request ) use ($ survey ) {
358+ $ validator = $ survey ->validateCustomFields ($ request )->validate ();
359+
360+ return response ('All good ' , 200 );
361+ });
362+
363+ $ fieldId = $ survey ->customFields ()->value ('id ' );
364+
365+ try {
366+ $ response = $ this ->post ("/surveys/ {$ survey ->id }/responses " );
367+
368+ $ this ->fail ('ValidationException was not thrown ' );
369+ } catch (ValidationException $ e ) {
370+ $ this ->assertArrayHasKey ('field_ ' . $ fieldId , $ e ->errors ());
371+ }
372+ }
320373}
0 commit comments