@@ -31,9 +31,7 @@ const defaultData = {
31
31
accepted_tos : true ,
32
32
} ;
33
33
34
- const register = jest . fn ( ) ;
35
-
36
- function makeWrapper ( formData ) {
34
+ async function makeWrapper ( formData ) {
37
35
const wrapper = mount ( Create , {
38
36
router,
39
37
computed : {
@@ -46,21 +44,15 @@ function makeWrapper(formData) {
46
44
stubs : [ 'PolicyModals' ] ,
47
45
mocks : connectionStateMocks ,
48
46
} ) ;
49
- wrapper . setData ( {
47
+ await wrapper . setData ( {
50
48
form : {
51
49
...defaultData ,
52
50
...formData ,
53
51
} ,
54
52
} ) ;
55
- wrapper . setMethods ( {
56
- register : data => {
57
- return new Promise ( resolve => {
58
- register ( data ) ;
59
- resolve ( ) ;
60
- } ) ;
61
- } ,
62
- } ) ;
63
- return wrapper ;
53
+ const register = jest . spyOn ( wrapper . vm , 'register' ) ;
54
+ register . mockImplementation ( ( ) => Promise . resolve ( ) ) ;
55
+ return [ wrapper , { register } ] ;
64
56
}
65
57
function makeFailedPromise ( statusCode ) {
66
58
return ( ) => {
@@ -75,38 +67,39 @@ function makeFailedPromise(statusCode) {
75
67
}
76
68
77
69
describe ( 'create' , ( ) => {
78
- beforeEach ( ( ) => {
79
- register . mockReset ( ) ;
80
- } ) ;
81
- it ( 'should trigger submit method when form is submitted' , ( ) => {
82
- const submit = jest . fn ( ) ;
83
- const wrapper = makeWrapper ( ) ;
84
- wrapper . setMethods ( { submit } ) ;
85
- wrapper . find ( { ref : 'form' } ) . trigger ( 'submit' ) ;
70
+ it ( 'should trigger submit method when form is submitted' , async ( ) => {
71
+ const [ wrapper ] = await makeWrapper ( ) ;
72
+ const submit = jest . spyOn ( wrapper . vm , 'submit' ) ;
73
+ submit . mockImplementation ( ( ) => Promise . resolve ( ) ) ;
74
+ await wrapper . findComponent ( { ref : 'form' } ) . trigger ( 'submit' ) ;
86
75
expect ( submit ) . toHaveBeenCalled ( ) ;
87
76
} ) ;
88
- it ( 'should call register with form data' , ( ) => {
89
- const wrapper = makeWrapper ( ) ;
90
- wrapper . find ( { ref : 'form' } ) . trigger ( 'submit' ) ;
91
- expect ( register . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
77
+
78
+ it ( 'should call register with form data' , async ( ) => {
79
+ const [ wrapper , mocks ] = await makeWrapper ( ) ;
80
+ await wrapper . findComponent ( { ref : 'form' } ) . trigger ( 'submit' ) ;
81
+ expect ( mocks . register . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
92
82
...defaultData ,
93
83
locations : defaultData . locations . join ( '|' ) ,
94
84
uses : defaultData . uses . join ( '|' ) ,
95
85
policies : '{}' ,
96
86
} ) ;
97
87
} ) ;
88
+
98
89
it ( 'should automatically fill the email if provided in the query param' , ( ) => {
99
90
router . push ( { name :
'Create' , query :
{ email :
'[email protected] ' } } ) ;
100
91
const wrapper = mount ( Create , { router, stubs : [ 'PolicyModals' ] , mocks : connectionStateMocks } ) ;
101
92
expect ( wrapper . vm . form . email ) . toBe ( '[email protected] ' ) ;
102
93
} ) ;
94
+
103
95
describe ( 'validation' , ( ) => {
104
- it ( 'should call register if form is valid' , ( ) => {
105
- const wrapper = makeWrapper ( ) ;
96
+ it ( 'should call register if form is valid' , async ( ) => {
97
+ const [ wrapper , mocks ] = await makeWrapper ( ) ;
106
98
wrapper . vm . submit ( ) ;
107
- expect ( register ) . toHaveBeenCalled ( ) ;
99
+ expect ( mocks . register ) . toHaveBeenCalled ( ) ;
108
100
} ) ;
109
- it ( 'should fail if required fields are not set' , ( ) => {
101
+
102
+ it ( 'should fail if required fields are not set' , async ( ) => {
110
103
const form = {
111
104
first_name : '' ,
112
105
last_name : '' ,
@@ -120,55 +113,67 @@ describe('create', () => {
120
113
accepted_tos : false ,
121
114
} ;
122
115
123
- Object . keys ( form ) . forEach ( field => {
124
- const wrapper = makeWrapper ( { [ field ] : form [ field ] } ) ;
125
- wrapper . vm . submit ( ) ;
126
- expect ( register ) . not . toHaveBeenCalled ( ) ;
127
- } ) ;
128
- } ) ;
129
- it ( 'should fail if password1 is too short' , ( ) => {
130
- const wrapper = makeWrapper ( { password1 : '123' } ) ;
131
- wrapper . vm . submit ( ) ;
132
- expect ( register ) . not . toHaveBeenCalled ( ) ;
133
- } ) ;
134
- it ( 'should fail if password1 and password2 do not match' , ( ) => {
135
- const wrapper = makeWrapper ( { password1 : 'some other password' } ) ;
136
- wrapper . vm . submit ( ) ;
137
- expect ( register ) . not . toHaveBeenCalled ( ) ;
116
+ for ( const field of Object . keys ( form ) ) {
117
+ const [ wrapper , mocks ] = await makeWrapper ( { [ field ] : form [ field ] } ) ;
118
+ await wrapper . vm . submit ( ) ;
119
+ expect ( mocks . register ) . not . toHaveBeenCalled ( ) ;
120
+ }
138
121
} ) ;
139
- it ( 'should fail if uses field is set to fields that require more input that is not provided' , ( ) => {
140
- [ uses . STORING , uses . OTHER ] . forEach ( use => {
141
- const wrapper = makeWrapper ( { uses : [ use ] } ) ;
142
- wrapper . vm . submit ( ) ;
143
- expect ( register ) . not . toHaveBeenCalled ( ) ;
144
- } ) ;
122
+
123
+ it ( 'should fail if password1 is too short' , async ( ) => {
124
+ const [ wrapper , mocks ] = await makeWrapper ( { password1 : '123' } ) ;
125
+ await wrapper . vm . submit ( ) ;
126
+ expect ( mocks . register ) . not . toHaveBeenCalled ( ) ;
145
127
} ) ;
146
- it ( 'should fail if source field is set to an option that requires more input that is not provided' , ( ) => {
147
- [ sources . ORGANIZATION , sources . CONFERENCE , sources . OTHER ] . forEach ( source => {
148
- const wrapper = makeWrapper ( { source } ) ;
149
- wrapper . vm . submit ( ) ;
150
- expect ( register ) . not . toHaveBeenCalled ( ) ;
151
- } ) ;
128
+
129
+ it ( 'should fail if password1 and password2 do not match' , async ( ) => {
130
+ const [ wrapper , mocks ] = await makeWrapper ( { password1 : 'some other password' } ) ;
131
+ await wrapper . vm . submit ( ) ;
132
+ expect ( mocks . register ) . not . toHaveBeenCalled ( ) ;
152
133
} ) ;
134
+
135
+ it . each (
136
+ [ uses . STORING , uses . OTHER ] ,
137
+ 'should fail if uses field is set to fields that require more input that is not provided' ,
138
+ async use => {
139
+ const [ wrapper , mocks ] = await makeWrapper ( { uses : [ use ] } ) ;
140
+ await wrapper . vm . submit ( ) ;
141
+ expect ( mocks . register ) . not . toHaveBeenCalled ( ) ;
142
+ } ,
143
+ ) ;
144
+
145
+ it . each (
146
+ [ sources . ORGANIZATION , sources . CONFERENCE , sources . OTHER ] ,
147
+ 'should fail if source field is set to an option that requires more input that is not provided' ,
148
+ async source => {
149
+ const [ wrapper , mocks ] = await makeWrapper ( { source } ) ;
150
+ await wrapper . vm . submit ( ) ;
151
+ expect ( mocks . register ) . not . toHaveBeenCalled ( ) ;
152
+ } ,
153
+ ) ;
153
154
} ) ;
154
155
155
156
describe ( 'on backend failures' , ( ) => {
156
- let wrapper ;
157
- beforeEach ( ( ) => {
158
- wrapper = makeWrapper ( ) ;
157
+ let wrapper , mocks ;
158
+
159
+ beforeEach ( async ( ) => {
160
+ [ wrapper , mocks ] = await makeWrapper ( ) ;
159
161
} ) ;
162
+
160
163
it ( 'should say account with email already exists if register returns a 403' , async ( ) => {
161
- wrapper . setMethods ( { register : makeFailedPromise ( 403 ) } ) ;
164
+ mocks . register . mockImplementation ( makeFailedPromise ( 403 ) ) ;
162
165
await wrapper . vm . submit ( ) ;
163
166
expect ( wrapper . vm . errors . email ) . toHaveLength ( 1 ) ;
164
167
} ) ;
168
+
165
169
it ( 'should say account has not been activated if register returns 405' , async ( ) => {
166
- wrapper . setMethods ( { register : makeFailedPromise ( 405 ) } ) ;
170
+ mocks . register . mockImplementation ( makeFailedPromise ( 405 ) ) ;
167
171
await wrapper . vm . submit ( ) ;
168
172
expect ( wrapper . vm . $route . name ) . toBe ( 'AccountNotActivated' ) ;
169
173
} ) ;
174
+
170
175
it ( 'registrationFailed should be true if any other error is returned' , async ( ) => {
171
- wrapper . setMethods ( { register : makeFailedPromise ( ) } ) ;
176
+ mocks . register . mockImplementation ( makeFailedPromise ( ) ) ;
172
177
await wrapper . vm . submit ( ) ;
173
178
expect ( wrapper . vm . valid ) . toBe ( false ) ;
174
179
expect ( wrapper . vm . registrationFailed ) . toBe ( true ) ;
0 commit comments