From f53d091691b1a7d6da267f040ef99e7dd1bcadfa Mon Sep 17 00:00:00 2001 From: Matt Rider Date: Thu, 6 Jun 2019 13:50:10 -0300 Subject: [PATCH] Add error handling component tests --- webapp/components/Modal/DisableModal.spec.js | 25 ++++++++++++++++--- .../ReleaseModal/ReleaseModal.spec.js | 25 ++++++++++++++++--- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/webapp/components/Modal/DisableModal.spec.js b/webapp/components/Modal/DisableModal.spec.js index 87484f6bf..4780657ee 100644 --- a/webapp/components/Modal/DisableModal.spec.js +++ b/webapp/components/Modal/DisableModal.spec.js @@ -26,12 +26,15 @@ describe('DisableModal.vue', () => { truncate: a => a, }, $toast: { - success: () => {}, - error: () => {}, + success: jest.fn(), + error: jest.fn(), }, $t: jest.fn(), $apollo: { - mutate: jest.fn().mockResolvedValue(), + mutate: jest + .fn() + .mockResolvedValueOnce({ enable: 'u4711' }) + .mockRejectedValue({ message: 'Not Authorised!' }), }, location: { reload: jest.fn(), @@ -151,6 +154,10 @@ describe('DisableModal.vue', () => { await wrapper.find('button.confirm').trigger('click') }) + afterEach(() => { + jest.clearAllMocks() + }) + it('calls mutation', () => { expect(mocks.$apollo.mutate).toHaveBeenCalled() }) @@ -174,6 +181,18 @@ describe('DisableModal.vue', () => { expect(wrapper.emitted().close).toBeTruthy() }) }) + + describe('handles errors', () => { + beforeEach(() => { + wrapper = Wrapper() + // second submission causes mutation to reject + wrapper.find('button.confirm').trigger('click') + }) + + it('shows an error toaster when mutation rejects', async () => { + await expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorised!') + }) + }) }) }) }) diff --git a/webapp/components/ReleaseModal/ReleaseModal.spec.js b/webapp/components/ReleaseModal/ReleaseModal.spec.js index 766d981f8..bb7281ab7 100644 --- a/webapp/components/ReleaseModal/ReleaseModal.spec.js +++ b/webapp/components/ReleaseModal/ReleaseModal.spec.js @@ -23,12 +23,15 @@ describe('ReleaseModal.vue', () => { truncate: a => a, }, $toast: { - success: () => {}, - error: () => {}, + success: jest.fn(), + error: jest.fn(), }, $t: jest.fn(), $apollo: { - mutate: jest.fn().mockResolvedValue(), + mutate: jest + .fn() + .mockResolvedValueOnce({ enable: 'u4711' }) + .mockRejectedValue({ message: 'Not Authorised!' }), }, location: { reload: jest.fn(), @@ -146,6 +149,10 @@ describe('ReleaseModal.vue', () => { wrapper.find('button.confirm').trigger('click') }) + afterEach(() => { + jest.clearAllMocks() + }) + it('calls mutation', () => { expect(mocks.$apollo.mutate).toHaveBeenCalled() }) @@ -169,6 +176,18 @@ describe('ReleaseModal.vue', () => { expect(wrapper.emitted().close).toBeTruthy() }) }) + + describe('handles errors', () => { + beforeEach(() => { + wrapper = Wrapper() + // second submission causes mutation to reject + wrapper.find('button.confirm').trigger('click') + }) + + it('shows an error toaster when mutation rejects', async () => { + await expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorised!') + }) + }) }) }) })