Skip to content
Snippets Groups Projects

Improving testcase

Merged Tore.Brede requested to merge update_register_form_test into master
All threads resolved!
3 files
+ 33
30
Compare changes
  • Side-by-side
  • Inline
Files
3
import React from 'react'
import React from 'react'
import { render, waitFor, screen } from 'test-utils'
import { render, waitFor, screen } from 'test-utils'
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import userEvent from '@testing-library/user-event'
import userEvent from '@testing-library/user-event'
import AdapterDateFns from '@mui/lab/AdapterDateFns'
import AdapterDateFns from '@mui/lab/AdapterDateFns'
import { LocalizationProvider } from '@mui/lab'
import { LocalizationProvider } from '@mui/lab'
import Register from './index'
import Register from './index'
// TODO: can this be initialized in 'test-utils'? should we stub it?
// see https://react.i18next.com/misc/testing
i18n.use(initReactI18next).init({
lng: 'en',
fallbackLng: 'en',
// Have a common namespace used around the full app
ns: ['translations'],
defaultNS: 'translations',
debug: false,
resources: { en: { translations: {} } },
})
test('Validation message showing if last name is missing', async () => {
test('Validation message showing if last name is missing', async () => {
render(
render(
<LocalizationProvider dateAdapter={AdapterDateFns}>
<LocalizationProvider dateAdapter={AdapterDateFns}>
<Register />
<Register />
</LocalizationProvider>)
</LocalizationProvider>
)
const firstNameLabel = i18n.t('input.firstName').toString()
const firstNameComponent = screen.getByLabelText(firstNameLabel)
expect(firstNameComponent).toBeInTheDocument()
userEvent.type(firstNameComponent, 'Test')
// Try to go to the next step and check that the validation message is showing
// Try to go to the next step and check that the validation message is showing
const submitButton = screen.getByTestId('button-next')
const submitButton = screen.getByTestId('button-next')
userEvent.click(submitButton)
userEvent.click(submitButton)
const validationLastName = i18n
const validationMessage = await waitFor(() =>
.t('common:validation.lastNameRequired')
screen.getByText('validation.lastNameRequired')
.toString()
)
await waitFor(() => screen.getByText(validationLastName))
const validationMessage = screen.getByText(validationLastName)
expect(validationMessage).toBeInTheDocument()
expect(validationMessage).toBeInTheDocument()
 
 
screen.queryByText('validation.lastNameRequired')
 
 
const inputValue = 'Test input value'
 
// Note that we need to use the test-ID of the input field inside the Material UI TextField-component
 
userEvent.type(screen.getByTestId('lastName-input-field'), inputValue)
 
expect(screen.getByDisplayValue(inputValue)).toBeInTheDocument()
 
 
// Type in text, the message should disappear
 
screen.queryByText('validation.lastNameRequired')
 
userEvent.click(submitButton)
 
 
await waitFor(() => {
 
expect(
 
screen.queryByText('validation.lastNameRequired')
 
).not.toBeInTheDocument()
 
})
})
})
Loading