@@ -13,29 +13,81 @@ function makeWrapper() {
1313}
1414
1515describe ( 'changePasswordForm' , ( ) => {
16- let wrapper ;
17-
18- beforeEach ( ( ) => {
19- wrapper = makeWrapper ( ) ;
16+ it ( 'should render the form' , ( ) => {
17+ const wrapper = makeWrapper ( ) ;
18+ expect ( wrapper . html ( ) ) . toContain ( 'Change password' ) ;
19+ expect ( wrapper . html ( ) ) . toContain ( 'New password' ) ;
20+ expect ( wrapper . html ( ) ) . toContain ( 'Confirm new password' ) ;
21+ expect ( wrapper . html ( ) ) . toContain ( 'Save changes' ) ;
22+ expect ( wrapper . html ( ) ) . toContain ( 'Cancel' ) ;
2023 } ) ;
2124
22- it ( 'validation should fail if passwords do not match' , async ( ) => {
23- await wrapper . setData ( { password : 'test' } ) ;
24- expect ( typeof wrapper . vm . passwordConfirmRules [ 0 ] ( 'data' ) ) . toBe ( 'string' ) ;
25+ describe ( 'if a password is too short' , ( ) => {
26+ let updateUserPassword ;
27+ let wrapper ;
28+
29+ beforeAll ( async ( ) => {
30+ wrapper = makeWrapper ( ) ;
31+ updateUserPassword = jest . spyOn ( wrapper . vm , 'updateUserPassword' ) ;
32+ const passwordInputs = wrapper . findAll ( 'input[type="password"]' ) ;
33+ passwordInputs . at ( 0 ) . setValue ( 'pw' ) ;
34+ wrapper . findComponent ( { name : 'KModal' } ) . vm . $emit ( 'submit' ) ;
35+ await wrapper . vm . $nextTick ( ) ;
36+ } ) ;
37+
38+ it ( 'should show a correct error message' , ( ) => {
39+ expect ( wrapper . html ( ) ) . toContain ( 'Password should be at least 8 characters long' ) ;
40+ } ) ;
41+
42+ it ( 'should not call updateUserPassword' , ( ) => {
43+ expect ( updateUserPassword ) . not . toHaveBeenCalled ( ) ;
44+ } ) ;
2545 } ) ;
2646
27- it ( 'failed validation should not call updateUserPassword' , async ( ) => {
28- const updateUserPassword = jest . spyOn ( wrapper . vm , 'updateUserPassword' ) ;
29- updateUserPassword . mockImplementation ( ( ) => Promise . resolve ( ) ) ;
30- await wrapper . vm . submitPassword ( ) ;
31- expect ( updateUserPassword ) . not . toHaveBeenCalled ( ) ;
47+ describe ( `if passwords don't match` , ( ) => {
48+ let updateUserPassword ;
49+ let wrapper ;
50+
51+ beforeAll ( async ( ) => {
52+ wrapper = makeWrapper ( ) ;
53+ updateUserPassword = jest . spyOn ( wrapper . vm , 'updateUserPassword' ) ;
54+ const passwordInputs = wrapper . findAll ( 'input[type="password"]' ) ;
55+ passwordInputs . at ( 0 ) . setValue ( 'password1' ) ;
56+ passwordInputs . at ( 1 ) . setValue ( 'password2' ) ;
57+ wrapper . findComponent ( { name : 'KModal' } ) . vm . $emit ( 'submit' ) ;
58+ await wrapper . vm . $nextTick ( ) ;
59+ } ) ;
60+
61+ it ( 'should show a correct error message' , ( ) => {
62+ expect ( wrapper . html ( ) ) . toContain ( `Passwords don't match` ) ;
63+ } ) ;
64+
65+ it ( 'should not call updateUserPassword' , ( ) => {
66+ expect ( updateUserPassword ) . not . toHaveBeenCalled ( ) ;
67+ } ) ;
3268 } ) ;
3369
34- it ( 'clicking submit should call updateUserPassword' , async ( ) => {
35- const updateUserPassword = jest . spyOn ( wrapper . vm , 'updateUserPassword' ) ;
36- updateUserPassword . mockImplementation ( ( ) => Promise . resolve ( ) ) ;
37- await wrapper . setData ( { password : 'tester123' , confirmation : 'tester123' } ) ;
38- await wrapper . vm . submitPassword ( ) ;
39- expect ( updateUserPassword ) . toHaveBeenCalled ( ) ;
70+ describe ( 'if passwords match and are valid' , ( ) => {
71+ let updateUserPassword ;
72+ let wrapper ;
73+
74+ beforeAll ( async ( ) => {
75+ wrapper = makeWrapper ( ) ;
76+ updateUserPassword = jest . spyOn ( wrapper . vm , 'updateUserPassword' ) ;
77+ const passwordInputs = wrapper . findAll ( 'input[type="password"]' ) ;
78+ passwordInputs . at ( 0 ) . setValue ( 'password123' ) ;
79+ passwordInputs . at ( 1 ) . setValue ( 'password123' ) ;
80+ wrapper . findComponent ( { name : 'KModal' } ) . vm . $emit ( 'submit' ) ;
81+ await wrapper . vm . $nextTick ( ) ;
82+ } ) ;
83+
84+ it ( 'should not show any error messages' , ( ) => {
85+ expect ( wrapper . html ( ) ) . not . toContain ( 'Password should be at least 8 characters long' ) ;
86+ expect ( wrapper . html ( ) ) . not . toContain ( `Passwords don't match` ) ;
87+ } ) ;
88+
89+ it ( 'should call updateUserPassword' , ( ) => {
90+ expect ( updateUserPassword ) . toHaveBeenCalled ( ) ;
91+ } ) ;
4092 } ) ;
4193} ) ;
0 commit comments