@@ -435,6 +435,32 @@ def options_range(start: 1, stop: 31, selected: nil, months: false)
435435 end
436436 end
437437
438+ test "date selects are wrapped correctly with error with specified id:" do
439+ @user . errors . add ( :misc , "error for test" )
440+ travel_to ( Time . utc ( 2012 , 2 , 3 ) ) do
441+ expected = <<~HTML
442+ < form accept-charset ="UTF-8 " action ="/users " class ="new_user " id ="new_user " method ="post ">
443+ < div class ="mb-3 ">
444+ < label class ="form-label " for ="user_misc "> Misc</ label >
445+ < div class ="rails-bootstrap-forms-date-select ">
446+ < select class ="form-select is-invalid " id ="user_misc_1i " aria-labelledby ="user_misc_feedback " name ="user[misc(1i)] ">
447+ #{ options_range ( start : 2007 , stop : 2017 , selected : 2012 ) }
448+ </ select>
449+ < select class ="form-select is-invalid " id ="user_misc_2i " aria-labelledby ="user_misc_feedback " name ="user[misc(2i)] ">
450+ #{ options_range ( start : 1 , stop : 12 , selected : 2 , months : true ) }
451+ </ select>
452+ < select class ="form-select is-invalid " id ="user_misc_3i " aria-labelledby ="user_misc_feedback " name ="user[misc(3i)] ">
453+ #{ options_range ( start : 1 , stop : 31 , selected : 3 ) }
454+ </ select>
455+ < div class ="invalid-feedback " id ="user_misc_feedback "> error for test</ div >
456+ </ div>
457+ </ div>
458+ </ form>
459+ HTML
460+ assert_equivalent_html expected , bootstrap_form_for ( @user ) { |f | f . date_select ( :misc , id : "custom-id" ) }
461+ end
462+ end
463+
438464 test "date selects with options are wrapped correctly" do
439465 travel_to ( Time . utc ( 2012 , 2 , 3 ) ) do
440466 expected = <<~HTML
@@ -536,6 +562,33 @@ def options_range(start: 1, stop: 31, selected: nil, months: false)
536562 end
537563 end
538564
565+ test "time selects are wrapped correctly with error with specified id:" do
566+ @user . errors . add ( :misc , "error for test" )
567+ travel_to ( Time . utc ( 2012 , 2 , 3 , 12 , 0 , 0 ) ) do
568+ expected = <<~HTML
569+ < form accept-charset ="UTF-8 " action ="/users " class ="new_user " id ="new_user " method ="post ">
570+ < div class ="mb-3 ">
571+ < label class ="form-label " for ="user_misc "> Misc</ label >
572+ < div class ="rails-bootstrap-forms-time-select ">
573+ < input #{ autocomplete_attr_time_selects } id="user_misc_1i" name="user[misc(1i)]" type="hidden" value="2012" />
574+ < input #{ autocomplete_attr_time_selects } id="user_misc_2i" name="user[misc(2i)]" type="hidden" value="2" />
575+ < input #{ autocomplete_attr_time_selects } id="user_misc_3i" name="user[misc(3i)]" type="hidden" value="3" />
576+ < select class ="form-select is-invalid " id ="user_misc_4i " aria-labelledby ="user_misc_feedback " name ="user[misc(4i)] ">
577+ #{ options_range ( start : '00' , stop : '23' , selected : '12' ) }
578+ </ select>
579+ :
580+ < select class ="form-select is-invalid " id ="user_misc_5i " aria-labelledby ="user_misc_feedback " name ="user[misc(5i)] ">
581+ #{ options_range ( start : '00' , stop : '59' , selected : '00' ) }
582+ </ select>
583+ < div class ="invalid-feedback " id ="user_misc_feedback "> error for test</ div >
584+ </ div>
585+ </ div>
586+ </ form>
587+ HTML
588+ assert_equivalent_html expected , bootstrap_form_for ( @user ) { |f | f . time_select ( :misc , id : "custom-id" ) }
589+ end
590+ end
591+
539592 test "time selects with options are wrapped correctly" do
540593 travel_to ( Time . utc ( 2012 , 2 , 3 , 12 , 0 , 0 ) ) do
541594 expected = <<~HTML
@@ -650,6 +703,40 @@ def options_range(start: 1, stop: 31, selected: nil, months: false)
650703 end
651704 end
652705
706+ test "datetime selects are wrapped correctly with error with specified id:" do
707+ @user . errors . add ( :misc , "error for test" )
708+ travel_to ( Time . utc ( 2012 , 2 , 3 , 12 , 0 , 0 ) ) do
709+ expected = <<~HTML
710+ < form accept-charset ="UTF-8 " action ="/users " class ="new_user " id ="new_user " method ="post ">
711+ < div class ="mb-3 ">
712+ < label class ="form-label " for ="user_misc "> Misc</ label >
713+ < div class ="rails-bootstrap-forms-datetime-select ">
714+ < select class ="form-select is-invalid " id ="user_misc_1i " aria-labelledby ="user_misc_feedback " name ="user[misc(1i)] ">
715+ #{ options_range ( start : 2007 , stop : 2017 , selected : 2012 ) }
716+ </ select>
717+ < select class ="form-select is-invalid " id ="user_misc_2i " aria-labelledby ="user_misc_feedback " name ="user[misc(2i)] ">
718+ #{ options_range ( start : 1 , stop : 12 , selected : 2 , months : true ) }
719+ </ select>
720+ < select class ="form-select is-invalid " id ="user_misc_3i " aria-labelledby ="user_misc_feedback " name ="user[misc(3i)] ">
721+ #{ options_range ( start : 1 , stop : 31 , selected : 3 ) }
722+ </ select>
723+ —
724+ < select class ="form-select is-invalid " id ="user_misc_4i " aria-labelledby ="user_misc_feedback " name ="user[misc(4i)] ">
725+ #{ options_range ( start : '00' , stop : '23' , selected : '12' ) }
726+ </ select>
727+ :
728+ < select class ="form-select is-invalid " id ="user_misc_5i " aria-labelledby ="user_misc_feedback " name ="user[misc(5i)] ">
729+ #{ options_range ( start : '00' , stop : '59' , selected : '00' ) }
730+ </ select>
731+ < div class ="invalid-feedback " id ="user_misc_feedback "> error for test</ div >
732+ </ div>
733+ </ div>
734+ </ form>
735+ HTML
736+ assert_equivalent_html expected , bootstrap_form_for ( @user ) { |f | f . datetime_select ( :misc , id : "custom-id" ) }
737+ end
738+ end
739+
653740 test "datetime selects with options are wrapped correctly" do
654741 travel_to ( Time . utc ( 2012 , 2 , 3 , 12 , 0 , 0 ) ) do
655742 expected = <<~HTML
0 commit comments