From 6a1b8f0fd9d6638f7921dd0ae3e687a596da0d54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 5 May 2022 11:33:07 +0200 Subject: [PATCH] Avoid on page error message on Login - Have a translation for 'No user with this credentials'. --- frontend/src/locales/de.json | 1 + frontend/src/locales/en.json | 1 + frontend/src/pages/Login.spec.js | 41 +++++++++++++++++++------------- frontend/src/pages/Login.vue | 10 +++----- 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index ea288819f..6066ce04a 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -35,6 +35,7 @@ "error": "Fehler!", "no-account": "Leider konnten wir keinen (aktivierten) Account mit diesen Daten finden.", "no-transactionlist": "Es gab leider einen Fehler. Es wurden keine Transaktionen vom Server übermittelt.", + "no-user": "Kein Benutzer mit diesen Anmeldedaten.", "session-expired": "Die Sitzung wurde aus Sicherheitsgründen beendet.", "unknown-error": "Unbekanter Fehler: ", "user-already-exists": "Ein Benutzer mit diesen Daten existiert bereits." diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index f5e412086..5a0602098 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -35,6 +35,7 @@ "error": "Error!", "no-account": "Unfortunately we could not find an (activated) account to the given data.", "no-transactionlist": "Unfortunately, there was an error. No transactions have been sent from the server.", + "no-user": "No user with this credentials.", "session-expired": "The session was closed for security reasons.", "unknown-error": "Unknown error: ", "user-already-exists": "A user with this data already exists." diff --git a/frontend/src/pages/Login.spec.js b/frontend/src/pages/Login.spec.js index db11a036e..478266676 100644 --- a/frontend/src/pages/Login.spec.js +++ b/frontend/src/pages/Login.spec.js @@ -219,7 +219,7 @@ describe('Login', () => { describe('login fails with "User email not validated"', () => { beforeEach(async () => { - await createError('GraphQL error: User email not validated') + await createError('GraphQL error: User email not validated.') }) it('hides the spinner', () => { @@ -251,7 +251,7 @@ describe('Login', () => { describe('login fails with "User has no password set yet"', () => { beforeEach(async () => { - await createError('GraphQL error: User has no password set yet') + await createError('GraphQL error: User has no password set yet.') }) it('shows error title, subtitle, login button', () => { @@ -276,26 +276,33 @@ describe('Login', () => { }) }) + describe('login fails with "No user with this credentials"', () => { + beforeEach(async () => { + await createError('GraphQL error: No user with this credentials.') + }) + + it('shows no error message on the page', () => { + expect(wrapper.vm.showPageMessage).toBe(false) + expect(wrapper.find('.test-message-headline').exists()).toBe(false) + expect(wrapper.find('.test-message-subtitle').exists()).toBe(false) + expect(wrapper.find('.test-message-button').exists()).toBe(false) + }) + + it('toasts the error message', () => { + expect(toastErrorSpy).toBeCalledWith('error.no-user') + }) + }) + describe('login fails with an unknow error', () => { beforeEach(async () => { await createError(' – Unknow error') }) - it('shows error title, subtitle, login button', () => { - expect(wrapper.vm.showPageMessage).toBe(true) - 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('shows no error message on the page', () => { + expect(wrapper.vm.showPageMessage).toBe(false) + expect(wrapper.find('.test-message-headline').exists()).toBe(false) + expect(wrapper.find('.test-message-subtitle').exists()).toBe(false) + expect(wrapper.find('.test-message-button').exists()).toBe(false) }) it('toasts the error message', () => { diff --git a/frontend/src/pages/Login.vue b/frontend/src/pages/Login.vue index bda36a0d2..7544bdcf7 100755 --- a/frontend/src/pages/Login.vue +++ b/frontend/src/pages/Login.vue @@ -134,14 +134,10 @@ export default { this.errorSubtitle = this.$t('site.thx.unsetPassword') this.errorLinkTo = '/reset-password/login' this.toastError(this.$t('error.no-account')) + } else if (error.message.includes('No user with this credentials')) { + this.toastError(this.$t('error.no-user')) } else { - // appeared errors: 'GraphQL error: No user with this credentials' - // Wolle: avoid this error message! may be avoid in general? - const errorMessage = this.$t('error.unknown-error') + error.message - this.showPageMessage = true - this.errorSubtitle = errorMessage - this.errorLinkTo = '/forgot-password' - this.toastError(errorMessage) + this.toastError(this.$t('error.unknown-error') + error.message) } loader.hide() })