Merge branch '1697-refactor-thx-page-#1' of github.com:gradido/gradido into 1697-refactor-thx-page-#2

# Conflicts:
#	frontend/src/components/Message/Message.vue
#	frontend/src/pages/Login.spec.js
This commit is contained in:
Wolfgang Huß 2022-05-02 10:17:55 +02:00
commit a6ec784596
5 changed files with 126 additions and 63 deletions

View File

@ -27,7 +27,7 @@ describe('Message', () => {
})
it('renders the component', () => {
expect(wrapper.find('div.header').exists()).toBeTruthy()
expect(wrapper.find('div.header').exists()).toBe(true)
})
it('renders title, subtitle, and button text', () => {

View File

@ -7,9 +7,9 @@
<p class="h4 test-message-subtitle">{{ subtitle }}</p>
<hr />
<b-button
v-if="buttonText && (linkTo || callback)"
v-if="showButton()"
class="test-message-button"
:to="linkTo ? linkTo + (code ? `/${code}` : '') : null"
:to="buttonLinkTo()"
@click="optionalCallback()"
>
{{ buttonText }}
@ -37,6 +37,12 @@ export default {
this.callback()
}
},
showButton() {
return this.buttonText && (this.linkTo || this.callback)
},
buttonLinkTo() {
return this.linkTo ? this.linkTo + (this.code ? `/${this.code}` : '') : null
},
},
}
</script>

View File

@ -47,7 +47,7 @@ describe('ForgotPassword', () => {
})
it('renders the component', () => {
expect(wrapper.find('div.forgot-password').exists()).toBeTruthy()
expect(wrapper.find('div.forgot-password').exists()).toBe(true)
})
it('has a title', () => {
@ -84,7 +84,7 @@ describe('ForgotPassword', () => {
})
it('has a submit button', () => {
expect(form.find('button[type="submit"]').exists()).toBeTruthy()
expect(form.find('button[type="submit"]').exists()).toBe(true)
})
describe('invalid Email', () => {
@ -118,7 +118,7 @@ describe('ForgotPassword', () => {
})
it('shows error title, subtitle, login button', () => {
expect(wrapper.vm.showPageMessage).toBeTruthy()
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.email-already-sent')
expect(wrapper.find('.test-message-button').text()).toBe('login')
@ -154,7 +154,7 @@ describe('ForgotPassword', () => {
})
it('shows success title, subtitle, login button', () => {
expect(wrapper.vm.showPageMessage).toBeTruthy()
expect(wrapper.vm.showPageMessage).toBe(true)
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')

View File

@ -59,7 +59,7 @@ describe('Login', () => {
})
it('renders the Login form', () => {
expect(wrapper.find('div.login-form').exists()).toBeTruthy()
expect(wrapper.find('div.login-form').exists()).toBe(true)
})
describe('Login header', () => {
@ -102,19 +102,19 @@ describe('Login', () => {
describe('Login form', () => {
it('has a login form', () => {
expect(wrapper.find('form').exists()).toBeTruthy()
expect(wrapper.find('form').exists()).toBe(true)
})
it('has an Email input field', () => {
expect(wrapper.find('input[placeholder="Email"]').exists()).toBeTruthy()
expect(wrapper.find('input[placeholder="Email"]').exists()).toBe(true)
})
it('has an Password input field', () => {
expect(wrapper.find('input[placeholder="form.password"]').exists()).toBeTruthy()
expect(wrapper.find('input[placeholder="form.password"]').exists()).toBe(true)
})
it('has a Submit button', () => {
expect(wrapper.find('button[type="submit"]').exists()).toBeTruthy()
expect(wrapper.find('button[type="submit"]').exists()).toBe(true)
})
})
@ -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', () => {
@ -223,7 +227,7 @@ describe('Login', () => {
})
it('shows error title, subtitle, login button', () => {
expect(wrapper.vm.showPageMessage).toBeTruthy()
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('site.thx.activateEmail')
expect(wrapper.find('.test-message-button').text()).toBe('settings.password.reset')
@ -233,9 +237,11 @@ describe('Login', () => {
expect(wrapper.find('.test-message-button').attributes('href')).toBe('/forgot-password')
})
// Wolle
it.skip('click redirects to "/forgot-password"', () => {
// expect(mockRouterPush).toBeCalledWith('/thx/login')
it.skip('click redirects to "/forgot-password"', async () => {
// wrapper.find('.test-message-button').trigger('click')
// await flushPromises()
// await wrapper.vm.$nextTick()
// expect(mockRouterPush).toBeCalledWith('/forgot-password')
})
it('toasts the error message', () => {
@ -245,20 +251,11 @@ 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', () => {
expect(wrapper.vm.showPageMessage).toBeTruthy()
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('site.thx.unsetPassword')
expect(wrapper.find('.test-message-button').text()).toBe('settings.password.reset')
@ -279,6 +276,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).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('toasts the error message', () => {
expect(toastErrorSpy).toBeCalledWith('error.unknown-error Unknow error')
})
})
})
})
})

View File

@ -50,7 +50,7 @@ describe('Register', () => {
})
it('renders the Register form', () => {
expect(wrapper.find('div#registerform').exists()).toBeTruthy()
expect(wrapper.find('div#registerform').exists()).toBe(true)
})
describe('Register header', () => {
@ -94,22 +94,22 @@ describe('Register', () => {
describe('Register form', () => {
it('has a register form', () => {
expect(wrapper.find('form').exists()).toBeTruthy()
expect(wrapper.find('form').exists()).toBe(true)
})
it('has firstname input fields', () => {
expect(wrapper.find('#registerFirstname').exists()).toBeTruthy()
expect(wrapper.find('#registerFirstname').exists()).toBe(true)
})
it('has lastname input fields', () => {
expect(wrapper.find('#registerLastname').exists()).toBeTruthy()
expect(wrapper.find('#registerLastname').exists()).toBe(true)
})
it('has email input fields', () => {
expect(wrapper.find('#Email-input-field').exists()).toBeTruthy()
expect(wrapper.find('#Email-input-field').exists()).toBe(true)
})
it('has Language selected field', () => {
expect(wrapper.find('.selectedLanguage').exists()).toBeTruthy()
expect(wrapper.find('.selectedLanguage').exists()).toBe(true)
})
it('selects Language value en', async () => {
@ -118,7 +118,7 @@ describe('Register', () => {
})
it('has 1 checkbox input fields', () => {
expect(wrapper.find('#registerCheckbox').exists()).toBeTruthy()
expect(wrapper.find('#registerCheckbox').exists()).toBe(true)
})
it('has PublisherId input fields', () => {
@ -221,31 +221,64 @@ describe('Register', () => {
})
describe('server sends back error', () => {
beforeEach(async () => {
const createError = async (errorMessage) => {
registerUserMutationMock.mockRejectedValue({
message: 'GraphQL error: User already exists.',
message: errorMessage,
})
await wrapper.find('form').trigger('submit')
await flushPromises()
}
describe('server sends back error "User already exists."', () => {
beforeEach(async () => {
await createError('GraphQL error: User already exists.')
})
it('shows success 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.user-already-exists')
expect(wrapper.find('.test-message-button').text()).toBe(
'site.register.message-button-text',
)
})
it('toasts the error message', () => {
expect(toastErrorSpy).toBeCalledWith('error.user-already-exists')
})
it('click calls "solveError"', async () => {
wrapper.find('.test-message-button').trigger('click')
await wrapper.vm.$nextTick()
expect(wrapper.vm.showPageMessage).toBe(false)
})
})
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',
)
})
describe('server sends back error "Unknown error"', () => {
beforeEach(async () => {
await createError(' Unknown error.')
})
it('toasts the error message', () => {
expect(toastErrorSpy).toBeCalledWith('error.user-already-exists')
})
it('shows success 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 Unknown error.',
)
expect(wrapper.find('.test-message-button').text()).toBe(
'site.register.message-button-text',
)
})
it('click calls "solveError"', async () => {
wrapper.find('.test-message-button').trigger('click')
await wrapper.vm.$nextTick()
expect(wrapper.vm.showPageMessage).not.toBeTruthy()
it('toasts the error message', () => {
expect(toastErrorSpy).toBeCalledWith('error.unknown-error Unknown error.')
})
it('click calls "solveError"', async () => {
wrapper.find('.test-message-button').trigger('click')
await wrapper.vm.$nextTick()
expect(wrapper.vm.showPageMessage).toBe(false)
})
})
})
@ -275,13 +308,13 @@ describe('Register', () => {
})
it('shows success title, subtitle', () => {
expect(wrapper.vm.showPageMessage).toBeTruthy()
expect(wrapper.vm.showPageMessage).toBe(true)
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()
expect(wrapper.find('.test-message-button').exists()).toBe(false)
})
})
})