Skip to content

Commit f24d1a3

Browse files
authored
test(query-devtools/Devtools): add tests for "Bulk Edit Data" mode switch, save, and invalid JSON (#10687)
1 parent 4746ac4 commit f24d1a3

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

packages/query-devtools/src/__tests__/Devtools.test.tsx

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -644,4 +644,48 @@ describe('Devtools', () => {
644644
)
645645
})
646646
})
647+
648+
describe('data edit', () => {
649+
it('should switch to data editor when "Bulk Edit Data" is clicked', () => {
650+
queryClient.setQueryData(['edit-data'], { name: 'a' })
651+
const rendered = renderDevtools({ initialIsOpen: true })
652+
653+
fireEvent.click(rendered.getByLabelText(/Query key \["edit-data"\]/))
654+
fireEvent.click(rendered.getByLabelText('Bulk Edit Data'))
655+
656+
expect(
657+
rendered.getByLabelText('Edit query data as JSON'),
658+
).toBeInTheDocument()
659+
})
660+
661+
it('should save the edited data when the form is submitted', () => {
662+
queryClient.setQueryData(['edit-save'], { name: 'a' })
663+
const rendered = renderDevtools({ initialIsOpen: true })
664+
665+
fireEvent.click(rendered.getByLabelText(/Query key \["edit-save"\]/))
666+
fireEvent.click(rendered.getByLabelText('Bulk Edit Data'))
667+
668+
const textarea = rendered.getByLabelText('Edit query data as JSON')
669+
fireEvent.input(textarea, {
670+
target: { value: JSON.stringify({ name: 'b' }) },
671+
})
672+
fireEvent.submit(textarea.closest('form')!)
673+
674+
expect(queryClient.getQueryData(['edit-save'])).toEqual({ name: 'b' })
675+
})
676+
677+
it('should set an error state when the edited data is invalid JSON', () => {
678+
queryClient.setQueryData(['edit-invalid'], { name: 'a' })
679+
const rendered = renderDevtools({ initialIsOpen: true })
680+
681+
fireEvent.click(rendered.getByLabelText(/Query key \["edit-invalid"\]/))
682+
fireEvent.click(rendered.getByLabelText('Bulk Edit Data'))
683+
684+
const textarea = rendered.getByLabelText('Edit query data as JSON')
685+
fireEvent.input(textarea, { target: { value: 'not json' } })
686+
fireEvent.submit(textarea.closest('form')!)
687+
688+
expect(rendered.getByText('Invalid Value')).toBeInTheDocument()
689+
})
690+
})
647691
})

0 commit comments

Comments
 (0)