Skip to content

Commit 6d41d90

Browse files
committed
Try to make JS tests work
1 parent 1e31c30 commit 6d41d90

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

src/LiveComponent/assets/test/controller/model.test.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,41 @@ describe('LiveController data-model Tests', () => {
216216
fetchMock.done();
217217
});
218218

219+
it('sends correct data for checkbox fields', async () => {
220+
const checkboxTemplate = (data) => `
221+
<div
222+
${initLiveComponent('/_components/my_component', data)}
223+
data-action="change->live#update"
224+
>
225+
<label>
226+
Checkbox 1: <input type="checkbox" name="form[check1]" value="1" ${data.form.check1 ? 'checked' : ''} />
227+
</label>
228+
229+
<label>
230+
Checkbox 2: <input type="checkbox" name="form[check2]" value="1" ${data.form.check2 ? 'checked' : ''} />
231+
</label>
232+
</div>
233+
`;
234+
const data = { form: { } };
235+
const { element, controller } = await startStimulus(checkboxTemplate(data));
236+
237+
mockRerender({ form: {check1: '1'}}, checkboxTemplate);
238+
239+
const check1Element = getByLabelText(element, 'Checkbox 1:');
240+
const check2Element = getByLabelText(element, 'Checkbox 2:');
241+
242+
await userEvent.click(check1Element);
243+
await waitFor(() => expect(check1Element).toBeChecked());
244+
245+
await userEvent.click(check2Element);
246+
await waitFor(() => expect(check2Element).toBeChecked());
247+
248+
expect(controller.dataValue).toEqual({form: {check1: '1', check2: '1'}});
249+
250+
// assert all calls were done the correct number of times
251+
fetchMock.done();
252+
});
253+
219254
it('updates correctly when live#update is on a parent element', async () => {
220255
const parentUpdateTemplate = (data) => `
221256
<div

0 commit comments

Comments
 (0)