1
1
import React from 'react' ;
2
- import { fireEvent , render , act , screen } from '@testing-library/react' ;
2
+ import { render , act , screen } from '@testing-library/react' ;
3
+ import userEvent from '@testing-library/user-event' ;
3
4
import '@testing-library/jest-dom/extend-expect' ;
4
5
import { BrowserRouter } from 'react-router-dom' ;
5
6
import AuthForm from './AuthForm' ;
6
7
import SignUpForm from './SignUpForm' ;
7
8
import LoginForm from './LoginForm' ;
9
+ import MutationObserver from '@sheerun/mutationobserver-shim' ;
10
+ window . MutationObserver = MutationObserver ;
8
11
9
12
describe ( 'AuthForm' , ( ) => {
10
13
it ( 'should render accordingly' , ( ) => {
@@ -22,7 +25,7 @@ describe('AuthForm', () => {
22
25
describe ( 'when clicking on the Log in button in the Sign Up Form' , ( ) => {
23
26
it ( 'should show the Login Form' , async ( ) => {
24
27
render ( < AuthForm /> ) ;
25
- fireEvent . click ( screen . getByText ( 'Log in' ) ) ;
28
+ userEvent . click ( screen . getByText ( 'Log in' ) ) ;
26
29
expect ( await screen . findByTestId ( 'loginForm' ) ) . toBeInTheDocument ( ) ;
27
30
expect ( await screen . queryByTestId ( 'signupForm' ) ) . toBeNull ( ) ;
28
31
} ) ;
@@ -31,8 +34,8 @@ describe('AuthForm', () => {
31
34
describe ( 'when clicking on the Sign up button in the Log In Form' , ( ) => {
32
35
it ( 'should show the Sign Up form' , async ( ) => {
33
36
render ( < AuthForm /> ) ;
34
- fireEvent . click ( screen . getByText ( 'Log in' ) ) ;
35
- fireEvent . click ( screen . getByText ( 'Sign up' ) ) ;
37
+ userEvent . click ( screen . getByText ( 'Log in' ) ) ;
38
+ userEvent . click ( screen . getByText ( 'Sign up' ) ) ;
36
39
expect ( await screen . queryByTestId ( 'loginForm' ) ) . toBeNull ( ) ;
37
40
expect ( await screen . findByText ( 'Create an account' ) ) . toBeInTheDocument ( ) ;
38
41
} ) ;
@@ -58,27 +61,20 @@ describe('Signup', () => {
58
61
} ,
59
62
} ) ;
60
63
61
- fireEvent . change ( screen . getByLabelText ( / u s e r n a m e / i) , {
62
- target : { value : 'Carolyne.Carter' } ,
63
- } ) ;
64
+ userEvent . type ( screen . getByLabelText ( / u s e r n a m e / i) , 'Carolyne.Carter' ) ;
64
65
65
- fireEvent . change ( screen . getByLabelText ( / p a s s w o r d / i) , {
66
- target : { value : 'password' } ,
67
- } ) ;
66
+ userEvent . type ( screen . getByLabelText ( / p a s s w o r d / i) , 'password' ) ;
68
67
69
- fireEvent . change ( screen . getByLabelText ( / e m a i l / i) , {
70
- target :
{ value :
'[email protected] ' } ,
71
- } ) ;
68
+ userEvent . type (
69
+ screen . getByLabelText ( / e m a i l / i) ,
70
+
71
+ ) ;
72
72
73
- fireEvent . change ( screen . getByLabelText ( / f i r s t n a m e / i) , {
74
- target : { value : 'Carolyne' } ,
75
- } ) ;
73
+ userEvent . type ( screen . getByLabelText ( / f i r s t n a m e / i) , 'Carolyne' ) ;
76
74
77
- fireEvent . change ( screen . getByLabelText ( / l a s t n a m e / i) , {
78
- target : { value : 'Carter' } ,
79
- } ) ;
75
+ userEvent . type ( screen . getByLabelText ( / l a s t n a m e / i) , 'Carter' ) ;
80
76
81
- fireEvent . click ( screen . getByText ( 'Sign Up' ) ) ;
77
+ userEvent . click ( screen . getByText ( 'Sign Up' ) ) ;
82
78
83
79
await act ( async ( ) => mockRegisterResponse ( ) ) ;
84
80
@@ -92,16 +88,10 @@ describe('Signup', () => {
92
88
</ BrowserRouter >
93
89
) ;
94
90
95
- await act ( async ( ) => fireEvent . click ( screen . getByTestId ( 'submitButton' ) ) ) ;
96
- expect (
97
- screen . getByText ( '"Username" is not allowed to be empty' )
98
- ) . toBeInTheDocument ( ) ;
99
- expect (
100
- screen . getByText ( '"Email" is not allowed to be empty' )
101
- ) . toBeInTheDocument ( ) ;
102
- expect (
103
- screen . getByText ( '"Password" is not allowed to be empty' )
104
- ) . toBeInTheDocument ( ) ;
91
+ await act ( async ( ) => userEvent . click ( screen . getByTestId ( 'submitButton' ) ) ) ;
92
+ expect ( screen . getByText ( 'Username*' ) . className ) . toContain ( 'Mui-error' ) ;
93
+ expect ( screen . getByText ( 'Email*' ) . className ) . toContain ( 'Mui-error' ) ;
94
+ expect ( screen . getByText ( 'Password*' ) . className ) . toContain ( 'Mui-error' ) ;
105
95
} ) ;
106
96
107
97
it ( 'Show username length validation error' , async ( ) => {
@@ -110,13 +100,10 @@ describe('Signup', () => {
110
100
< SignUpForm />
111
101
</ BrowserRouter >
112
102
) ;
113
- console . log ( screen . getByLabelText ( 'Username*' ) ) ;
114
103
115
- fireEvent . change ( screen . getByLabelText ( 'Username*' ) , {
116
- target : { value : 'ga' } ,
117
- } ) ;
104
+ userEvent . type ( screen . getByLabelText ( 'Username*' ) , 'ga' ) ;
118
105
119
- await act ( async ( ) => fireEvent . click ( screen . getByTestId ( 'submitButton' ) ) ) ;
106
+ await act ( async ( ) => userEvent . click ( screen . getByTestId ( 'submitButton' ) ) ) ;
120
107
screen . debug ( ) ;
121
108
expect (
122
109
screen . getByText ( '"Username" length must be at least 3 characters long' )
@@ -141,24 +128,18 @@ describe('Login', () => {
141
128
} ) ;
142
129
143
130
await act ( async ( ) =>
144
- fireEvent . change ( getByLabelText ( / u s e r n a m e / i) , {
145
- target : { value : 'Carolyne.Carter' } ,
146
- } )
131
+ userEvent . type ( getByLabelText ( / u s e r n a m e / i) , 'Carolyne.Carter' )
147
132
) ;
148
133
await act ( async ( ) =>
149
- fireEvent . change ( getByLabelText ( / u s e r n a m e / i) , {
150
- target : { value : 'Carolyne.Carter' } ,
151
- } )
134
+ userEvent . type ( getByLabelText ( / u s e r n a m e / i) , 'Carolyne.Carter' )
152
135
) ;
153
136
154
137
await act ( async ( ) =>
155
- fireEvent . change ( getByLabelText ( / p a s s w o r d / i) , {
156
- target : { value : 'password' } ,
157
- } )
138
+ userEvent . type ( getByLabelText ( / p a s s w o r d / i) , 'password' )
158
139
) ;
159
140
160
141
const submit = getByRole ( 'button' ) ;
161
- await act ( async ( ) => fireEvent . click ( submit ) ) ;
142
+ await act ( async ( ) => userEvent . click ( submit ) ) ;
162
143
await act ( async ( ) => mockLoginResponse ( ) ) ;
163
144
expect ( mockLoginResponse ) . toHaveBeenCalledTimes ( 1 ) ;
164
145
} ) ;
0 commit comments