From 4d87c95031e9afda70cb600a873529b789509272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 26 Apr 2022 15:40:34 +0200 Subject: [PATCH] Implement tests for Registration page - Refactor little things. --- frontend/src/components/Message/Message.vue | 2 +- frontend/src/pages/ForgotPassword.spec.js | 8 ++- frontend/src/pages/Login.spec.js | 6 +- frontend/src/pages/Register.spec.js | 65 +++++++++++++++------ frontend/src/pages/Register.vue | 2 +- 5 files changed, 58 insertions(+), 25 deletions(-) diff --git a/frontend/src/components/Message/Message.vue b/frontend/src/components/Message/Message.vue index 5f519ee18..769bd99bf 100644 --- a/frontend/src/components/Message/Message.vue +++ b/frontend/src/components/Message/Message.vue @@ -33,7 +33,7 @@ export default { subtitle: { type: String, required: true }, buttonText: { type: String, required: false, default: null }, linkTo: { type: String, required: false, default: null }, - callback: { type: Function, required: false, default: () => {} }, + callback: { type: Function, required: false, default: null }, code: { type: String, required: false, default: null }, // Wolle: to be removed by adding it directly to the "linkTo" }, } diff --git a/frontend/src/pages/ForgotPassword.spec.js b/frontend/src/pages/ForgotPassword.spec.js index 5fba93693..e9aeed552 100644 --- a/frontend/src/pages/ForgotPassword.spec.js +++ b/frontend/src/pages/ForgotPassword.spec.js @@ -117,6 +117,7 @@ describe('ForgotPassword', () => { }) 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.email-already-sent') expect(wrapper.find('.test-message-button').text()).toBe('login') @@ -127,8 +128,10 @@ describe('ForgotPassword', () => { }) // Wolle - it.skip('click redirects to "/login"', () => { - // expect(mockRouterPush).toBeCalledWith('/login') + it.skip('click redirects to "/login"', async () => { + // wrapper.find('.test-message-button').trigger('click') + // await wrapper.vm.$nextTick() + expect(mockRouterPush).toBeCalledWith('/login') }) }) @@ -146,6 +149,7 @@ describe('ForgotPassword', () => { }) it('shows success title, subtitle, login button', () => { + expect(wrapper.vm.showPageMessage).toBeTruthy() expect(wrapper.find('.test-message-headline').text()).toBe('site.thx.title') expect(wrapper.find('.test-message-subtitle').text()).toBe('site.thx.email') expect(wrapper.find('.test-message-button').text()).toBe('login') diff --git a/frontend/src/pages/Login.spec.js b/frontend/src/pages/Login.spec.js index 347dc91a9..c31b4d77d 100644 --- a/frontend/src/pages/Login.spec.js +++ b/frontend/src/pages/Login.spec.js @@ -240,12 +240,13 @@ describe('Login', () => { }) 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('site.thx.activateEmail') expect(wrapper.find('.test-message-button').text()).toBe('settings.password.reset') }) - it('button link directs to "/forgot-password', () => { + it('button link directs to "/forgot-password"', () => { expect(wrapper.find('.test-message-button').attributes('href')).toBe('/forgot-password') }) @@ -270,12 +271,13 @@ describe('Login', () => { }) 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('site.thx.unsetPassword') expect(wrapper.find('.test-message-button').text()).toBe('settings.password.reset') }) - it('button link directs to "/reset-password/login', () => { + it('button link directs to "/reset-password/login"', () => { expect(wrapper.find('.test-message-button').attributes('href')).toBe( '/reset-password/login', ) diff --git a/frontend/src/pages/Register.spec.js b/frontend/src/pages/Register.spec.js index 1e791f7d4..55ac36cb9 100644 --- a/frontend/src/pages/Register.spec.js +++ b/frontend/src/pages/Register.spec.js @@ -221,41 +221,59 @@ describe('Register', () => { describe('server sends back error', () => { beforeEach(async () => { - registerUserMutationMock.mockRejectedValue({ message: 'Ouch!' }) + registerUserMutationMock.mockRejectedValue({ + message: 'GraphQL error: User already exists.', + }) await wrapper.find('form').trigger('submit') await flushPromises() }) - it('shows error message', () => { - expect(wrapper.find('span.alert-text').exists()).toBeTruthy() - expect(wrapper.find('span.alert-text').text().length !== 0).toBeTruthy() - expect(wrapper.find('span.alert-text').text()).toContain('error.error') - expect(wrapper.find('span.alert-text').text()).toContain('Ouch!') + // Wolle: remove? + // it('shows error message', () => { + // expect(wrapper.find('span.alert-text').exists()).toBeTruthy() + // expect(wrapper.find('span.alert-text').text().length !== 0).toBeTruthy() + // expect(wrapper.find('span.alert-text').text()).toContain('error.error') + // expect(wrapper.find('span.alert-text').text()).toContain('Ouch!') + // }) + + // it('button to dismisses error message is present', () => { + // expect(wrapper.find('button.close').exists()).toBeTruthy() + // }) + + // it('dismisses error message', async () => { + // await wrapper.find('button.close').trigger('click') + // await flushPromises() + // expect(wrapper.find('span.alert-text').exists()).not.toBeTruthy() + // }) + + it('shows success 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.user-already-exists') + expect(wrapper.find('.test-message-button').text()).toBe( + 'site.register.message-button-text', + ) }) - it('button to dismisses error message is present', () => { - expect(wrapper.find('button.close').exists()).toBeTruthy() - }) - - it('dismisses error message', async () => { - await wrapper.find('button.close').trigger('click') - await flushPromises() - expect(wrapper.find('span.alert-text').exists()).not.toBeTruthy() + it('click calls "solveError"', async () => { + wrapper.find('.test-message-button').trigger('click') + await wrapper.vm.$nextTick() + expect(wrapper.vm.showPageMessage).not.toBeTruthy() }) }) describe('server sends back success', () => { - beforeEach(() => { + beforeEach(async () => { registerUserMutationMock.mockResolvedValue({ data: { create: 'success', }, }) - }) - - it('routes to "/thx/register"', async () => { await wrapper.find('form').trigger('submit') await flushPromises() + }) + + it('submit sends apollo mutate', () => { expect(registerUserMutationMock).toBeCalledWith( expect.objectContaining({ variables: { @@ -267,7 +285,16 @@ describe('Register', () => { }, }), ) - expect(routerPushMock).toHaveBeenCalledWith('/thx/register') + }) + + it('shows success title, subtitle', () => { + expect(wrapper.vm.showPageMessage).toBeTruthy() + expect(wrapper.find('.test-message-headline').text()).toBe('site.thx.title') + expect(wrapper.find('.test-message-subtitle').text()).toBe('site.thx.register') + }) + + it('button is not present', () => { + expect(wrapper.find('.test-message-button')).toBeTruthy() }) }) }) diff --git a/frontend/src/pages/Register.vue b/frontend/src/pages/Register.vue index 5ee513aaf..0a0d080aa 100755 --- a/frontend/src/pages/Register.vue +++ b/frontend/src/pages/Register.vue @@ -105,6 +105,7 @@ +