@@ -195,6 +195,51 @@ class BootstrapFormGroupTest < ActionView::TestCase
195195 assert_equivalent_html expected , bootstrap_form_for ( @user ) { |f | f . text_field :email , prepend : "$" , append : ".00" }
196196 end
197197
198+ test "file field with prepend text" do
199+ expected = <<~HTML
200+ < div class ="mb-3 ">
201+ < label class ="form-label " for ="user_avatar "> Avatar</ label >
202+ < div class ="input-group ">
203+ < span class ="input-group-text "> before</ span >
204+ < input class ="form-control " id ="user_avatar " name ="user[avatar] " type ="file " />
205+ </ div >
206+ </ div >
207+ HTML
208+ assert_equivalent_html expected , @builder . file_field ( :avatar , prepend : "before" )
209+ end
210+
211+ test "file field with append text" do
212+ expected = <<~HTML
213+ < div class ="mb-3 ">
214+ < label class ="form-label " for ="user_avatar "> Avatar</ label >
215+ < div class ="input-group ">
216+ < input class ="form-control " id ="user_avatar " name ="user[avatar] " type ="file " />
217+ < span class ="input-group-text "> after</ span >
218+ </ div >
219+ </ div >
220+ HTML
221+ assert_equivalent_html expected , @builder . file_field ( :avatar , append : "after" )
222+ end
223+
224+ test "file field with append and prepend button" do
225+ prefix = '<div class="mb-3"><label class="form-label" for="user_avatar">Avatar</label><div class="input-group">'
226+ field = <<~HTML
227+ < input class ="form-control " id ="user_avatar " name ="user[avatar] " type ="file " />
228+ HTML
229+ button_src = link_to ( "Click" , "#" , class : "btn btn-secondary" )
230+ button_prepend = button_src
231+ button_append = button_src
232+ suffix = "</div></div>"
233+ after_button = prefix + field + button_append + suffix
234+ before_button = prefix + button_prepend + field + suffix
235+ both_button = prefix + button_prepend + field + button_append + suffix
236+ multiple_button = prefix + button_prepend + button_prepend + field + button_append + button_append + suffix
237+ assert_equivalent_html after_button , @builder . file_field ( :avatar , append : button_src )
238+ assert_equivalent_html before_button , @builder . file_field ( :avatar , prepend : button_src )
239+ assert_equivalent_html both_button , @builder . file_field ( :avatar , append : button_src , prepend : button_src )
240+ assert_equivalent_html multiple_button , @builder . file_field ( :avatar , append : [ button_src ] * 2 , prepend : [ button_src ] * 2 )
241+ end
242+
198243 test "help messages for default forms" do
199244 expected = <<~HTML
200245 < div class ="mb-3 ">
0 commit comments