@@ -12,19 +12,32 @@ describe('#nestedForm', (): void => {
1212
1313 document . body . innerHTML = `
1414 <form data-controller="nested-form">
15- <template data-nested-form-target="template">
15+ <template data-nested-form-target="template" data-model-template="todo" >
1616 <div class="nested-form-wrapper" data-new-record="true">
1717 <label for="NEW_RECORD">New todo</label>
1818 </div>
1919 </template>
2020
21+ <template data-nested-form-target="template" data-model-template="note">
22+ <div class="nested-form-wrapper" data-new-record="true">
23+ <label for="NEW_RECORD">New note</label>
24+ </div>
25+ </template>
26+
2127 <div>
2228 <label>Your todo</label>
2329 </div>
2430
25- <div data-nested-form-target="target"></div>
31+ <div id="nested-form-target-todo" data-nested-form-target="target" data-model-target="todo"></div>
32+ <button type="button" data-action="nested-form#add" data-model="todo" class="nested-form-action">Add todo</button>
33+
34+ <div>
35+ <label>Your note</label>
36+ </div>
37+
38+ <div id="nested-form-target-note" data-nested-form-target="target" data-model-target="note"></div>
2639
27- <button type="button" data-action="nested-form#add">Add todo </button>
40+ <button type="button" data-action="nested-form#add" data-model="note" class="nested-form-action" >Add note </button>
2841 </form>
2942 `
3043 } )
@@ -39,4 +52,19 @@ describe('#nestedForm', (): void => {
3952
4053 expect ( target . previousElementSibling . innerHTML ) . toContain ( 'New todo' )
4154 } )
55+
56+ it ( 'should toggle with many nested forms' , ( ) : void => {
57+ const todoButton : HTMLButtonElement = document . querySelector ( '[data-model="todo"]' )
58+ const todoTarget : HTMLElement = document . querySelector ( '#nested-form-target-todo' )
59+ const noteButton : HTMLButtonElement = document . querySelector ( '[data-model="note"]' )
60+ const noteTarget : HTMLElement = document . querySelector ( '#nested-form-target-note' )
61+
62+ expect ( todoTarget . previousElementSibling . innerHTML ) . toContain ( 'Your todo' )
63+ todoButton . click ( )
64+ expect ( todoTarget . previousElementSibling . innerHTML ) . toContain ( 'New todo' )
65+
66+ expect ( noteTarget . previousElementSibling . innerHTML ) . toContain ( 'Your note' )
67+ noteButton . click ( )
68+ expect ( noteTarget . previousElementSibling . innerHTML ) . toContain ( 'New note' )
69+ } )
4270} )
0 commit comments