@@ -12,19 +12,32 @@ describe('#nestedForm', (): void => {
12
12
13
13
document . body . innerHTML = `
14
14
<form data-controller="nested-form">
15
- <template data-nested-form-target="template">
15
+ <template data-nested-form-target="template" data-model-template="todo" >
16
16
<div class="nested-form-wrapper" data-new-record="true">
17
17
<label for="NEW_RECORD">New todo</label>
18
18
</div>
19
19
</template>
20
20
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
+
21
27
<div>
22
28
<label>Your todo</label>
23
29
</div>
24
30
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>
26
39
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>
28
41
</form>
29
42
`
30
43
} )
@@ -39,4 +52,19 @@ describe('#nestedForm', (): void => {
39
52
40
53
expect ( target . previousElementSibling . innerHTML ) . toContain ( 'New todo' )
41
54
} )
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
+ } )
42
70
} )
0 commit comments