diff --git a/admin/src/locales/de.json b/admin/src/locales/de.json index 111d6823f..b1a008eaf 100644 --- a/admin/src/locales/de.json +++ b/admin/src/locales/de.json @@ -12,6 +12,9 @@ "select_value": "Betrag auswählen", "submit_creation": "Schöpfung einreichen", "toasted": "Offene Schöpfung ({value} GDD) für {email} wurde gespeichert und liegt zur Bestätigung bereit", + "toasted_created": "Schöpfung wurde erfolgreich gespeichert", + "toasted_default": "`Fall {event} wird nicht unterstützt`", + "toasted_delete": "Offene Schöpfung wurde gelöscht", "toasted_update": "`Offene Schöpfung {value} GDD) für {email} wurde geändert und liegt zur Bestätigung bereit", "update_creation": "Schöpfung aktualisieren" }, diff --git a/admin/src/locales/en.json b/admin/src/locales/en.json index d412ecfcb..2d2df4461 100644 --- a/admin/src/locales/en.json +++ b/admin/src/locales/en.json @@ -12,6 +12,9 @@ "select_value": "Select amount", "submit_creation": "Submit creation", "toasted": "Open creation ({value} GDD) for {email} has been saved and is ready for confirmation.", + "toasted_created": "Creation has been successfully saved", + "toasted_default": "`Case {event} is not supported`", + "toasted_delete": "Open creation has been deleted", "toasted_update": "Open creation {value} GDD) for {email} has been changed and is ready for confirmation.", "update_creation": "Creation update" }, diff --git a/admin/src/pages/CreationConfirm.spec.js b/admin/src/pages/CreationConfirm.spec.js index 14a71bb78..cc0a096da 100644 --- a/admin/src/pages/CreationConfirm.spec.js +++ b/admin/src/pages/CreationConfirm.spec.js @@ -127,7 +127,7 @@ describe('CreationConfirm', () => { }) it('toasts a success message', () => { - expect(toastedSuccessMock).toBeCalledWith('Pending Creation has been deleted') + expect(toastedSuccessMock).toBeCalledWith('creation_form.toasted_delete') }) }) @@ -189,7 +189,7 @@ describe('CreationConfirm', () => { }) it('toasts a success message', () => { - expect(toastedSuccessMock).toBeCalledWith('Pending Creation has been deleted') + expect(toastedSuccessMock).toBeCalledWith('creation_form.toasted_created') }) }) @@ -201,7 +201,7 @@ describe('CreationConfirm', () => { }) it('toasts an error message', () => { - expect(toastedErrorMock).toBeCalledWith('Case confirm is not supported') + expect(toastedErrorMock).toBeCalledWith('creation_form.toasted_default') }) }) diff --git a/admin/src/pages/CreationConfirm.vue b/admin/src/pages/CreationConfirm.vue index 578c9b23f..bfb3100aa 100644 --- a/admin/src/pages/CreationConfirm.vue +++ b/admin/src/pages/CreationConfirm.vue @@ -66,7 +66,7 @@ export default { index = this.confirmResult.indexOf(findArr) this.confirmResult.splice(index, 1) this.$store.commit('openCreationsMinus', 1) - this.$toasted.success('Pending Creation has been deleted') + this.$toasted.success(this.$t('creation_form.toasted_delete')) }) .catch((error) => { this.$toasted.error(error.message) @@ -75,10 +75,10 @@ export default { case 'confirmed': this.confirmResult.splice(index, 1) this.$store.commit('openCreationsMinus', 1) - this.$toasted.success('Pending Creation has been deleted') + this.$toasted.success(this.$t('creation_form.toasted_created')) break default: - this.$toasted.error('Case ' + event + ' is not supported') + this.$toasted.error(this.$t('creation_form.toasted_default', { event })) } }, getPendingCreations() { diff --git a/frontend/src/components/Inputs/InputPasswordConfirmation.vue b/frontend/src/components/Inputs/InputPasswordConfirmation.vue index ecb3aa55a..8154984ef 100644 --- a/frontend/src/components/Inputs/InputPasswordConfirmation.vue +++ b/frontend/src/components/Inputs/InputPasswordConfirmation.vue @@ -24,8 +24,12 @@

- + {{ $t('overview') }} @@ -52,3 +52,9 @@ export default { }, } + diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 651944547..d92f42f5d 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -198,7 +198,7 @@ }, "thx": { "activateEmail": "Dein Konto wurde noch nicht aktiviert. Bitte überprüfe deine E-Mail und klicke den Aktivierungslink!", - "checkEmail": "Deine E-Mail wurde erfolgreich verifiziert.", + "checkEmail": "Deine E-Mail wurde erfolgreich verifiziert. Du kannst dich jetzt anmelden.", "email": "Wir haben dir eine E-Mail gesendet.", "emailActivated": "Danke dass Du deine E-Mail bestätigt hast.", "errorTitle": "Achtung!", diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index c6cbeed69..014d449a0 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -198,7 +198,7 @@ }, "thx": { "activateEmail": "Your account has not been activated yet, please check your emails and click the activation link!", - "checkEmail": "Your email has been successfully verified.", + "checkEmail": "Your email has been successfully verified. You can sign in now.", "email": "We have sent you an email.", "emailActivated": "Thank you your email has been activated.", "errorTitle": "Attention!", diff --git a/frontend/src/views/Pages/ResetPassword.spec.js b/frontend/src/views/Pages/ResetPassword.spec.js index e28d16c3e..da8b4bc4f 100644 --- a/frontend/src/views/Pages/ResetPassword.spec.js +++ b/frontend/src/views/Pages/ResetPassword.spec.js @@ -15,54 +15,48 @@ const stubs = { RouterLink: RouterLinkStub, } -const createMockObject = (comingFrom) => { - return { - localVue, - mocks: { - $i18n: { - locale: 'en', - }, - $t: jest.fn((t) => t), - $route: { - params: { - optin: '123', - comingFrom, - }, - path: { - includes: (t) => t, - }, - }, - $toasted: { - global: { - error: toasterMock, - }, - }, - $router: { - push: routerPushMock, - }, - $loading: { - show: jest.fn(() => { - return { hide: jest.fn() } - }), - }, - $apollo: { - mutate: apolloMutationMock, - }, +const mocks = { + $i18n: { + locale: 'en', + }, + $t: jest.fn((t) => t), + $route: { + params: { + optin: '123', }, - stubs, - } + path: { + mock: 'checkEmail', + includes: jest.fn((t) => t === mocks.$route.path.mock), + }, + }, + $toasted: { + global: { + error: toasterMock, + }, + }, + $router: { + push: routerPushMock, + }, + $loading: { + show: jest.fn(() => { + return { hide: jest.fn() } + }), + }, + $apollo: { + mutate: apolloMutationMock, + }, } describe('ResetPassword', () => { let wrapper - const Wrapper = (functionName) => { - return mount(ResetPassword, functionName) + const Wrapper = () => { + return mount(ResetPassword, { localVue, mocks, stubs }) } describe('mount', () => { beforeEach(() => { - wrapper = Wrapper(createMockObject()) + wrapper = Wrapper() }) describe('No valid optin', () => { @@ -86,11 +80,32 @@ describe('ResetPassword', () => { }) describe('Register header', () => { - it('has a welcome message', async () => { - expect(wrapper.find('div.header').text()).toContain('settings.password.reset') - expect(wrapper.find('div.header').text()).toContain( - 'settings.password.reset-password.text', - ) + describe('from reset', () => { + beforeEach(() => { + mocks.$route.path.mock = 'reset' + wrapper = Wrapper() + }) + + it('has a welcome message', async () => { + expect(wrapper.find('div.header').text()).toContain('settings.password.reset') + expect(wrapper.find('div.header').text()).toContain( + 'settings.password.reset-password.text', + ) + }) + }) + + describe('from checkEmail', () => { + beforeEach(() => { + mocks.$route.path.mock = 'checkEmail' + wrapper = Wrapper() + }) + + it('has a welcome message', async () => { + expect(wrapper.find('div.header').text()).toContain('settings.password.set') + expect(wrapper.find('div.header').text()).toContain( + 'settings.password.set-password.text', + ) + }) }) }) @@ -128,7 +143,6 @@ describe('ResetPassword', () => { describe('submit form', () => { beforeEach(async () => { - // wrapper = Wrapper(createMockObject()) await wrapper.findAll('input').at(0).setValue('Aa123456_') await wrapper.findAll('input').at(1).setValue('Aa123456_') await flushPromises() @@ -164,14 +178,14 @@ describe('ResetPassword', () => { }) }) - describe('server response with success', () => { + describe('server response with success on /checkEmail', () => { beforeEach(async () => { + mocks.$route.path.mock = 'checkEmail' apolloMutationMock.mockResolvedValue({ data: { resetPassword: 'success', }, }) - wrapper = Wrapper(createMockObject('checkEmail')) await wrapper.findAll('input').at(0).setValue('Aa123456_') await wrapper.findAll('input').at(1).setValue('Aa123456_') await wrapper.find('form').trigger('submit') @@ -189,6 +203,26 @@ describe('ResetPassword', () => { ) }) + it('redirects to "/thx/checkEmail"', () => { + expect(routerPushMock).toHaveBeenCalledWith('/thx/checkEmail') + }) + }) + + describe('server response with success on /reset', () => { + beforeEach(async () => { + mocks.$route.path.mock = 'reset' + wrapper = Wrapper() + apolloMutationMock.mockResolvedValue({ + data: { + resetPassword: 'success', + }, + }) + await wrapper.findAll('input').at(0).setValue('Aa123456_') + await wrapper.findAll('input').at(1).setValue('Aa123456_') + await wrapper.find('form').trigger('submit') + await flushPromises() + }) + it('redirects to "/thx/reset"', () => { expect(routerPushMock).toHaveBeenCalledWith('/thx/reset') }) diff --git a/frontend/src/views/Pages/ResetPassword.vue b/frontend/src/views/Pages/ResetPassword.vue index 05d8a0f6e..0023c3838 100644 --- a/frontend/src/views/Pages/ResetPassword.vue +++ b/frontend/src/views/Pages/ResetPassword.vue @@ -92,7 +92,11 @@ export default { }) .then(() => { this.form.password = '' - this.$router.push('/thx/reset') + if (this.$route.path.includes('checkEmail')) { + this.$router.push('/thx/checkEmail') + } else { + this.$router.push('/thx/reset') + } }) .catch((error) => { this.$toasted.global.error(error.message)