Skip to content

Commit 6bfc697

Browse files
committed
Manually merging
1 parent 6aade3f commit 6bfc697

File tree

3 files changed

+259
-34
lines changed

3 files changed

+259
-34
lines changed

test/bootstrap_collection_checkboxes_test.rb

Lines changed: 124 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -368,13 +368,13 @@ class BootstrapCollectionCheckboxesTest < ActionView::TestCase
368368
<div role="group" aria-labelledby="user_misc" class="mb-3">
369369
<div id="user_misc" class="form-label">Misc</div>
370370
<div class="form-check">
371-
<input class="form-check-input is-invalid" id="user_misc_1" name="user[misc][]" type="checkbox" value="1" />
371+
<input class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="1" />
372372
<label class="form-check-label" for="user_misc_1">Foo</label>
373373
</div>
374374
<div class="form-check">
375-
<input class="form-check-input is-invalid" id="user_misc_2" name="user[misc][]" type="checkbox" value="2" />
375+
<input class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="2" />
376376
<label class="form-check-label" for="user_misc_2">Bar</label>
377-
<div class="invalid-feedback">a box must be checked</div>
377+
<div class="invalid-feedback" id="user_misc_feedback">a box must be checked</div>
378378
</div>
379379
</div>
380380
</form>
@@ -387,6 +387,35 @@ class BootstrapCollectionCheckboxesTest < ActionView::TestCase
387387
assert_equivalent_html expected, actual
388388
end
389389

390+
test "collection_check_boxes renders error after last check box with specified id:" do
391+
collection = [Address.new(id: 1, street: "Foo"), Address.new(id: 2, street: "Bar")]
392+
@user.errors.add(:misc, "a box must be checked")
393+
394+
expected = <<~HTML
395+
<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post">
396+
<input #{autocomplete_attr_55336} id="user_misc" name="user[misc][]" type="hidden" value="" />
397+
<div role="group" aria-labelledby="user_misc" class="mb-3">
398+
<div id="user_misc" class="form-label">Misc</div>
399+
<div class="form-check">
400+
<input class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="1" />
401+
<label class="form-check-label" for="user_misc_1">Foo</label>
402+
</div>
403+
<div class="form-check">
404+
<input class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="2" />
405+
<label class="form-check-label" for="user_misc_2">Bar</label>
406+
<div class="invalid-feedback" id="user_misc_feedback">a box must be checked</div>
407+
</div>
408+
</div>
409+
</form>
410+
HTML
411+
412+
actual = bootstrap_form_for(@user) do |f|
413+
f.collection_check_boxes(:misc, collection, :id, :street, { id: "custom-id" })
414+
end
415+
416+
assert_equivalent_html expected, actual
417+
end
418+
390419
test "collection_check_boxes renders data attributes" do
391420
collection = [
392421
["1", "Foo", { "data-city": "east" }],
@@ -418,13 +447,13 @@ class BootstrapCollectionCheckboxesTest < ActionView::TestCase
418447
<div role="group" aria-labelledby="user_misc" class="mb-3">
419448
<div id="user_misc" class="form-label">Misc</div>
420449
<div class="form-check">
421-
<input checked="checked" class="form-check-input is-invalid" id="user_misc_1" name="user[misc][]" type="checkbox" value="1" />
450+
<input checked="checked" class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="1" />
422451
<label class="form-check-label" for="user_misc_1"> Foo</label>
423452
</div>
424453
<div class="form-check">
425-
<input checked="checked" class="form-check-input is-invalid" id="user_misc_2" name="user[misc][]" type="checkbox" value="2" />
454+
<input checked="checked" class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="2" />
426455
<label class="form-check-label" for="user_misc_2"> Bar</label>
427-
<div class="invalid-feedback">error for test</div>
456+
<div class="invalid-feedback" id="user_misc_feedback">error for test</div>
428457
</div>
429458
</div>
430459
</form>
@@ -435,6 +464,33 @@ class BootstrapCollectionCheckboxesTest < ActionView::TestCase
435464
end
436465
assert_equivalent_html expected, actual
437466
end
467+
468+
test "collection_check_boxes renders multiple check boxes with error correctly with specified id:" do
469+
@user.errors.add(:misc, "error for test")
470+
collection = [Address.new(id: 1, street: "Foo"), Address.new(id: 2, street: "Bar")]
471+
expected = <<~HTML
472+
<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post">
473+
<input #{autocomplete_attr_55336} id="user_misc" name="user[misc][]" type="hidden" value="" />
474+
<div role="group" aria-labelledby="user_misc" class="mb-3">
475+
<div id="user_misc" class="form-label">Misc</div>
476+
<div class="form-check">
477+
<input checked="checked" class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="1" />
478+
<label class="form-check-label" for="user_misc_1"> Foo</label>
479+
</div>
480+
<div class="form-check">
481+
<input checked="checked" class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="2" />
482+
<label class="form-check-label" for="user_misc_2"> Bar</label>
483+
<div class="invalid-feedback" id="user_misc_feedback">error for test</div>
484+
</div>
485+
</div>
486+
</form>
487+
HTML
488+
489+
actual = bootstrap_form_for(@user) do |f|
490+
f.collection_check_boxes(:misc, collection, :id, :street, checked: collection, id: "custom-id")
491+
end
492+
assert_equivalent_html expected, actual
493+
end
438494
end
439495

440496
class BootstrapLegacyCollectionCheckboxesTest < ActionView::TestCase
@@ -803,13 +859,13 @@ class BootstrapLegacyCollectionCheckboxesTest < ActionView::TestCase
803859
<div class="mb-3">
804860
<label class="form-label" for="user_misc">Misc</label>
805861
<div class="form-check">
806-
<input class="form-check-input is-invalid" id="user_misc_1" name="user[misc][]" type="checkbox" value="1" />
862+
<input class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="1" />
807863
<label class="form-check-label" for="user_misc_1">Foo</label>
808864
</div>
809865
<div class="form-check">
810-
<input class="form-check-input is-invalid" id="user_misc_2" name="user[misc][]" type="checkbox" value="2" />
866+
<input class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="2" />
811867
<label class="form-check-label" for="user_misc_2">Bar</label>
812-
<div class="invalid-feedback">a box must be checked</div>
868+
<div class="invalid-feedback" id="user_misc_feedback">a box must be checked</div>
813869
</div>
814870
</div>
815871
</form>
@@ -822,6 +878,35 @@ class BootstrapLegacyCollectionCheckboxesTest < ActionView::TestCase
822878
assert_equivalent_html expected, actual
823879
end
824880

881+
test "collection_check_boxes renders error after last check box with specified id:" do
882+
collection = [Address.new(id: 1, street: "Foo"), Address.new(id: 2, street: "Bar")]
883+
@user.errors.add(:misc, "a box must be checked")
884+
885+
expected = <<~HTML
886+
<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post">
887+
<input #{autocomplete_attr_55336} id="user_misc" name="user[misc][]" type="hidden" value="" />
888+
<div class="mb-3">
889+
<label class="form-label" for="user_misc">Misc</label>
890+
<div class="form-check">
891+
<input class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="1" />
892+
<label class="form-check-label" for="user_misc_1">Foo</label>
893+
</div>
894+
<div class="form-check">
895+
<input class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="2" />
896+
<label class="form-check-label" for="user_misc_2">Bar</label>
897+
<div class="invalid-feedback" id="user_misc_feedback">a box must be checked</div>
898+
</div>
899+
</div>
900+
</form>
901+
HTML
902+
903+
actual = bootstrap_form_for(@user) do |f|
904+
f.collection_check_boxes(:misc, collection, :id, :street, { id: "custom-id" })
905+
end
906+
907+
assert_equivalent_html expected, actual
908+
end
909+
825910
test "collection_check_boxes renders data attributes" do
826911
collection = [
827912
["1", "Foo", { "data-city": "east" }],
@@ -853,13 +938,13 @@ class BootstrapLegacyCollectionCheckboxesTest < ActionView::TestCase
853938
<div class="mb-3">
854939
<label class="form-label" for="user_misc">Misc</label>
855940
<div class="form-check">
856-
<input checked="checked" class="form-check-input is-invalid" id="user_misc_1" name="user[misc][]" type="checkbox" value="1" />
941+
<input checked="checked" class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="1" />
857942
<label class="form-check-label" for="user_misc_1"> Foo</label>
858943
</div>
859944
<div class="form-check">
860-
<input checked="checked" class="form-check-input is-invalid" id="user_misc_2" name="user[misc][]" type="checkbox" value="2" />
945+
<input checked="checked" class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="2" />
861946
<label class="form-check-label" for="user_misc_2"> Bar</label>
862-
<div class="invalid-feedback">error for test</div>
947+
<div class="invalid-feedback" id="user_misc_feedback">error for test</div>
863948
</div>
864949
</div>
865950
</form>
@@ -870,4 +955,31 @@ class BootstrapLegacyCollectionCheckboxesTest < ActionView::TestCase
870955
end
871956
assert_equivalent_html expected, actual
872957
end
958+
959+
test "collection_check_boxes renders multiple check boxes with error correctly with specified id:" do
960+
@user.errors.add(:misc, "error for test")
961+
collection = [Address.new(id: 1, street: "Foo"), Address.new(id: 2, street: "Bar")]
962+
expected = <<~HTML
963+
<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post">
964+
<input #{autocomplete_attr_55336} id="user_misc" name="user[misc][]" type="hidden" value="" />
965+
<div class="mb-3">
966+
<label class="form-label" for="user_misc">Misc</label>
967+
<div class="form-check">
968+
<input checked="checked" class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="1" />
969+
<label class="form-check-label" for="user_misc_1"> Foo</label>
970+
</div>
971+
<div class="form-check">
972+
<input checked="checked" class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc][]" type="checkbox" value="2" />
973+
<label class="form-check-label" for="user_misc_2"> Bar</label>
974+
<div class="invalid-feedback" id="user_misc_feedback">error for test</div>
975+
</div>
976+
</div>
977+
</form>
978+
HTML
979+
980+
actual = bootstrap_form_for(@user) do |f|
981+
f.collection_check_boxes(:misc, collection, :id, :street, checked: collection, id: "custom-id")
982+
end
983+
assert_equivalent_html expected, actual
984+
end
873985
end

test/bootstrap_collection_radio_buttons_test.rb

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ class BootstrapCollectionRadioButtonsTest < ActionView::TestCase
6161
<div role="group" aria-labelledby="user_misc" class="mb-3">
6262
<div id="user_misc" class="form-label">Misc</div>
6363
<div class="form-check">
64-
<input class="form-check-input is-invalid" id="user_misc_1" name="user[misc]" type="radio" value="1" />
64+
<input class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc]" type="radio" value="1" />
6565
<label class="form-check-label" for="user_misc_1"> Foo</label>
6666
</div>
6767
<div class="form-check">
68-
<input class="form-check-input is-invalid" id="user_misc_2" name="user[misc]" type="radio" value="2" />
68+
<input class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc]" type="radio" value="2" />
6969
<label class="form-check-label" for="user_misc_2"> Bar</label>
70-
<div class="invalid-feedback">error for test</div>
70+
<div class="invalid-feedback" id="user_misc_feedback">error for test</div>
7171
</div>
7272
</div>
7373
</form>
@@ -79,6 +79,32 @@ class BootstrapCollectionRadioButtonsTest < ActionView::TestCase
7979
assert_equivalent_html expected, actual
8080
end
8181

82+
test "collection_radio_buttons renders multiple radios with error correctly with specified id:" do
83+
@user.errors.add(:misc, "error for test")
84+
collection = [Address.new(id: 1, street: "Foo"), Address.new(id: 2, street: "Bar")]
85+
expected = <<~HTML
86+
<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post">
87+
<div role="group" aria-labelledby="user_misc" class="mb-3">
88+
<div id="user_misc" class="form-label">Misc</div>
89+
<div class="form-check">
90+
<input class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc]" type="radio" value="1" />
91+
<label class="form-check-label" for="user_misc_1"> Foo</label>
92+
</div>
93+
<div class="form-check">
94+
<input class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc]" type="radio" value="2" />
95+
<label class="form-check-label" for="user_misc_2"> Bar</label>
96+
<div class="invalid-feedback" id="user_misc_feedback">error for test</div>
97+
</div>
98+
</div>
99+
</form>
100+
HTML
101+
102+
actual = bootstrap_form_for(@user) do |f|
103+
f.collection_radio_buttons(:misc, collection, :id, :street, { id: "custom-id" })
104+
end
105+
assert_equivalent_html expected, actual
106+
end
107+
82108
test "collection_radio_buttons renders inline radios correctly" do
83109
collection = [Address.new(id: 1, street: "Foo"), Address.new(id: 2, street: "Bar")]
84110
expected = <<~HTML
@@ -327,13 +353,13 @@ class BootstrapCLegacyollectionRadioButtonsTest < ActionView::TestCase
327353
<div class="mb-3">
328354
<label class="form-label" for="user_misc">Misc</label>
329355
<div class="form-check">
330-
<input class="form-check-input is-invalid" id="user_misc_1" name="user[misc]" type="radio" value="1" />
356+
<input class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc]" type="radio" value="1" />
331357
<label class="form-check-label" for="user_misc_1"> Foo</label>
332358
</div>
333359
<div class="form-check">
334-
<input class="form-check-input is-invalid" id="user_misc_2" name="user[misc]" type="radio" value="2" />
360+
<input class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc]" type="radio" value="2" />
335361
<label class="form-check-label" for="user_misc_2"> Bar</label>
336-
<div class="invalid-feedback">error for test</div>
362+
<div class="invalid-feedback" id="user_misc_feedback">error for test</div>
337363
</div>
338364
</div>
339365
</form>
@@ -345,6 +371,32 @@ class BootstrapCLegacyollectionRadioButtonsTest < ActionView::TestCase
345371
assert_equivalent_html expected, actual
346372
end
347373

374+
test "collection_radio_buttons renders multiple radios with error correctly with specified id:" do
375+
@user.errors.add(:misc, "error for test")
376+
collection = [Address.new(id: 1, street: "Foo"), Address.new(id: 2, street: "Bar")]
377+
expected = <<~HTML
378+
<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post">
379+
<div class="mb-3">
380+
<label class="form-label" for="user_misc">Misc</label>
381+
<div class="form-check">
382+
<input class="form-check-input is-invalid" id="user_misc_1" aria-labelledby="user_misc_feedback" name="user[misc]" type="radio" value="1" />
383+
<label class="form-check-label" for="user_misc_1"> Foo</label>
384+
</div>
385+
<div class="form-check">
386+
<input class="form-check-input is-invalid" id="user_misc_2" aria-labelledby="user_misc_feedback" name="user[misc]" type="radio" value="2" />
387+
<label class="form-check-label" for="user_misc_2"> Bar</label>
388+
<div class="invalid-feedback" id="user_misc_feedback">error for test</div>
389+
</div>
390+
</div>
391+
</form>
392+
HTML
393+
394+
actual = bootstrap_form_for(@user) do |f|
395+
f.collection_radio_buttons(:misc, collection, :id, :street, { id: "custom-id" })
396+
end
397+
assert_equivalent_html expected, actual
398+
end
399+
348400
test "collection_radio_buttons renders inline radios correctly" do
349401
collection = [Address.new(id: 1, street: "Foo"), Address.new(id: 2, street: "Bar")]
350402
expected = <<~HTML

0 commit comments

Comments
 (0)