diff --git a/frontend/src/pages/Login.spec.js b/frontend/src/pages/Login.spec.js index 36c293451..501745b19 100644 --- a/frontend/src/pages/Login.spec.js +++ b/frontend/src/pages/Login.spec.js @@ -204,18 +204,22 @@ describe('Login', () => { }) describe('login fails', () => { + const createError = async (errorMessage) => { + apolloQueryMock.mockRejectedValue({ + message: errorMessage, + }) + wrapper = Wrapper() + jest.clearAllMocks() + await wrapper.find('input[placeholder="Email"]').setValue('user@example.org') + await wrapper.find('input[placeholder="form.password"]').setValue('1234') + await flushPromises() + await wrapper.find('form').trigger('submit') + await flushPromises() + } + describe('login fails with "User email not validated"', () => { beforeEach(async () => { - apolloQueryMock.mockRejectedValue({ - message: 'GraphQL error: User email not validated', - }) - wrapper = Wrapper() - jest.clearAllMocks() - await wrapper.find('input[placeholder="Email"]').setValue('user@example.org') - await wrapper.find('input[placeholder="form.password"]').setValue('1234') - await flushPromises() - await wrapper.find('form').trigger('submit') - await flushPromises() + await createError('GraphQL error: User email not validated') }) it('hides the spinner', () => { @@ -244,16 +248,7 @@ describe('Login', () => { describe('login fails with "User has no password set yet"', () => { beforeEach(async () => { - apolloQueryMock.mockRejectedValue({ - message: 'GraphQL error: User has no password set yet', - }) - wrapper = Wrapper() - jest.clearAllMocks() - await wrapper.find('input[placeholder="Email"]').setValue('user@example.org') - await wrapper.find('input[placeholder="form.password"]').setValue('1234') - await flushPromises() - await wrapper.find('form').trigger('submit') - await flushPromises() + await createError('GraphQL error: User has no password set yet') }) it('shows error title, subtitle, login button', () => { @@ -277,6 +272,33 @@ describe('Login', () => { expect(toastErrorSpy).toBeCalledWith('error.no-account') }) }) + + describe('login fails with an unknow error', () => { + beforeEach(async () => { + await createError(' – Unknow error') + }) + + it('shows error title, subtitle, login button', () => { + expect(wrapper.vm.showPageMessage).toBeTruthy() + expect(wrapper.find('.test-message-headline').text()).toBe('site.thx.errorTitle') + expect(wrapper.find('.test-message-subtitle').text()).toBe( + 'error.unknown-error – Unknow error', + ) + expect(wrapper.find('.test-message-button').text()).toBe('settings.password.reset') + }) + + it('button link directs to "/forgot-password"', () => { + expect(wrapper.find('.test-message-button').attributes('href')).toBe('/forgot-password') + }) + + it.skip('click redirects to "/forgot-password"', () => { + // expect(mockRouterPush).toBeCalledWith('/forgot-password') + }) + + it('toasts the error message', () => { + expect(toastErrorSpy).toBeCalledWith('error.unknown-error – Unknow error') + }) + }) }) }) })