Commit 8cae1cc55371bbbce0d84ec024e41fc50944117b
1 parent
62d24433
test: ViewController- und ServiceTests optimiert/ergänzt
Showing
3 changed files
with
138 additions
and
26 deletions
src/test/java/net/ziemers/swxercise/lg/user/service/UserServiceTest.java
@@ -29,12 +29,13 @@ public class UserServiceTest extends JpaTestUtils { | @@ -29,12 +29,13 @@ public class UserServiceTest extends JpaTestUtils { | ||
29 | 29 | ||
30 | private static String USERNAME_TEST = "username_test"; | 30 | private static String USERNAME_TEST = "username_test"; |
31 | private static String EXISTING_USERNAME_TEST = "username_profile"; | 31 | private static String EXISTING_USERNAME_TEST = "username_profile"; |
32 | + private static Long EXISTING_USER_ID = 2L; | ||
32 | 33 | ||
33 | private static boolean dbInitialized; | 34 | private static boolean dbInitialized; |
34 | 35 | ||
35 | private UserDto userDto; | 36 | private UserDto userDto; |
36 | 37 | ||
37 | - private Long userId; | 38 | + private boolean actual; |
38 | 39 | ||
39 | @Inject | 40 | @Inject |
40 | private UserDao userDao; | 41 | private UserDao userDao; |
@@ -74,7 +75,20 @@ public class UserServiceTest extends JpaTestUtils { | @@ -74,7 +75,20 @@ public class UserServiceTest extends JpaTestUtils { | ||
74 | .createUser(); | 75 | .createUser(); |
75 | 76 | ||
76 | then() | 77 | then() |
77 | - .assertCreateFail(); | 78 | + .assertCreateFailure(); |
79 | + } | ||
80 | + | ||
81 | + @Test | ||
82 | + public void testUpdateUserDoesntUpdateUsername() { | ||
83 | + | ||
84 | + given() | ||
85 | + .userDto(USERNAME_TEST); | ||
86 | + | ||
87 | + when() | ||
88 | + .updateUser(EXISTING_USER_ID); | ||
89 | + | ||
90 | + then() | ||
91 | + .assertUpdateSuccess(); | ||
78 | } | 92 | } |
79 | 93 | ||
80 | // given | 94 | // given |
@@ -85,7 +99,7 @@ public class UserServiceTest extends JpaTestUtils { | @@ -85,7 +99,7 @@ public class UserServiceTest extends JpaTestUtils { | ||
85 | 99 | ||
86 | private UserServiceTest userDto(final String username) { | 100 | private UserServiceTest userDto(final String username) { |
87 | userDto = new UserDtoTestDataBuilder() | 101 | userDto = new UserDtoTestDataBuilder() |
88 | - .withUsername(USERNAME_TEST) | 102 | + .withUsername(username) |
89 | .build(); | 103 | .build(); |
90 | return this; | 104 | return this; |
91 | } | 105 | } |
@@ -98,7 +112,15 @@ public class UserServiceTest extends JpaTestUtils { | @@ -98,7 +112,15 @@ public class UserServiceTest extends JpaTestUtils { | ||
98 | 112 | ||
99 | private UserServiceTest createUser() { | 113 | private UserServiceTest createUser() { |
100 | txBegin(); | 114 | txBegin(); |
101 | - userId = underTest.createUser(userDto); | 115 | + actual = underTest.createUser(userDto); |
116 | + txCommit(); | ||
117 | + | ||
118 | + return this; | ||
119 | + } | ||
120 | + | ||
121 | + private UserServiceTest updateUser(final Long id) { | ||
122 | + txBegin(); | ||
123 | + actual = underTest.updateUser(id, userDto); | ||
102 | txCommit(); | 124 | txCommit(); |
103 | 125 | ||
104 | return this; | 126 | return this; |
@@ -111,14 +133,20 @@ public class UserServiceTest extends JpaTestUtils { | @@ -111,14 +133,20 @@ public class UserServiceTest extends JpaTestUtils { | ||
111 | } | 133 | } |
112 | 134 | ||
113 | private void assertCreateSuccess() { | 135 | private void assertCreateSuccess() { |
114 | - // wir suchen den soeben erstellten Benutzer; wenn er existiert, is alles gut | 136 | + // wir suchen den soeben erstellten Benutzer; wenn er existiert, ist alles gut |
115 | final User user = userDao.findByUsername(USERNAME_TEST); | 137 | final User user = userDao.findByUsername(USERNAME_TEST); |
116 | assertNotNull(user); | 138 | assertNotNull(user); |
117 | } | 139 | } |
118 | 140 | ||
119 | - private void assertCreateFail() { | ||
120 | - // es darf kein neuer Benutzer mit identischem "username" erstellt worden sein | ||
121 | - assertNull(userId); | 141 | + private void assertCreateFailure() { |
142 | + // es darf kein neuer Benutzer mit identischem Benutzernamen erstellt worden sein | ||
143 | + assertFalse(actual); | ||
144 | + } | ||
145 | + | ||
146 | + private void assertUpdateSuccess() { | ||
147 | + // wir suchen den soeben aktualisierten Benutzer; wenn sein Benutzername unverändert ist, ist alles gut | ||
148 | + final User user = userDao.findById(EXISTING_USER_ID); | ||
149 | + assertEquals(EXISTING_USERNAME_TEST, user.getProfile().getUsername()); | ||
122 | } | 150 | } |
123 | 151 | ||
124 | } | 152 | } |
src/test/java/net/ziemers/swxercise/ui/UserViewControllerTest.java
1 | package net.ziemers.swxercise.ui; | 1 | package net.ziemers.swxercise.ui; |
2 | 2 | ||
3 | -import net.ziemers.swxercise.lg.model.user.User; | ||
4 | import net.ziemers.swxercise.lg.testdatabuilder.user.UserDtoTestDataBuilder; | 3 | import net.ziemers.swxercise.lg.testdatabuilder.user.UserDtoTestDataBuilder; |
5 | -import net.ziemers.swxercise.lg.testdatabuilder.user.UserTestDataBuilder; | ||
6 | import net.ziemers.swxercise.lg.user.dto.UserDto; | 4 | import net.ziemers.swxercise.lg.user.dto.UserDto; |
7 | import net.ziemers.swxercise.lg.user.service.UserService; | 5 | import net.ziemers.swxercise.lg.user.service.UserService; |
6 | +import net.ziemers.swxercise.ui.enums.ResponseState; | ||
8 | import org.junit.Test; | 7 | import org.junit.Test; |
9 | import org.junit.runner.RunWith; | 8 | import org.junit.runner.RunWith; |
10 | import org.mockito.InjectMocks; | 9 | import org.mockito.InjectMocks; |
@@ -33,8 +32,6 @@ public class UserViewControllerTest { | @@ -33,8 +32,6 @@ public class UserViewControllerTest { | ||
33 | 32 | ||
34 | private UserDto userDto; | 33 | private UserDto userDto; |
35 | 34 | ||
36 | - private User user; | ||
37 | - | ||
38 | private RestResponse actual; | 35 | private RestResponse actual; |
39 | 36 | ||
40 | @Test | 37 | @Test |
@@ -59,12 +56,54 @@ public class UserViewControllerTest { | @@ -59,12 +56,54 @@ public class UserViewControllerTest { | ||
59 | 56 | ||
60 | @Test | 57 | @Test |
61 | public void testCreateUserReturnsSuccess() { | 58 | public void testCreateUserReturnsSuccess() { |
62 | - // TODO Test ist noch zu implementieren | 59 | + |
60 | + given() | ||
61 | + .userDto(); | ||
62 | + | ||
63 | + doing() | ||
64 | + .createUser(true); | ||
65 | + | ||
66 | + then() | ||
67 | + .assertCreateSuccess(); | ||
63 | } | 68 | } |
64 | 69 | ||
65 | @Test | 70 | @Test |
66 | - public void testUpdateUserReturnsSuccess() { | ||
67 | - // TODO Test ist noch zu implementieren | 71 | + public void testCreateUserReturnsFailure() { |
72 | + | ||
73 | + given() | ||
74 | + .userDto(); | ||
75 | + | ||
76 | + doing() | ||
77 | + .createUser(false); | ||
78 | + | ||
79 | + then() | ||
80 | + .assertCreateFailure(); | ||
81 | + } | ||
82 | + | ||
83 | + @Test | ||
84 | + public void testUpdateLoggedInUserReturnsSuccess() { | ||
85 | + | ||
86 | + given() | ||
87 | + .userDto(); | ||
88 | + | ||
89 | + doing() | ||
90 | + .updateUser(); | ||
91 | + | ||
92 | + then() | ||
93 | + .assertUpdateSuccess(); | ||
94 | + } | ||
95 | + | ||
96 | + @Test | ||
97 | + public void testUpdateSpecificUserReturnsSuccess() { | ||
98 | + | ||
99 | + given() | ||
100 | + .userDto(); | ||
101 | + | ||
102 | + doing() | ||
103 | + .updateUser(1L); | ||
104 | + | ||
105 | + then() | ||
106 | + .assertUpdateSuccess(); | ||
68 | } | 107 | } |
69 | 108 | ||
70 | @Test | 109 | @Test |
@@ -81,17 +120,29 @@ public class UserViewControllerTest { | @@ -81,17 +120,29 @@ public class UserViewControllerTest { | ||
81 | public void testLoginUserReturnsSuccess() { | 120 | public void testLoginUserReturnsSuccess() { |
82 | 121 | ||
83 | given() | 122 | given() |
84 | - .userDto() | ||
85 | - .user(); | 123 | + .userDto(); |
86 | 124 | ||
87 | doing() | 125 | doing() |
88 | - .loginUser(); | 126 | + .loginUser(true); |
89 | 127 | ||
90 | then() | 128 | then() |
91 | .assertLoginSuccess(); | 129 | .assertLoginSuccess(); |
92 | } | 130 | } |
93 | 131 | ||
94 | @Test | 132 | @Test |
133 | + public void testLoginNonExistingUserReturnsFailure() { | ||
134 | + | ||
135 | + given() | ||
136 | + .userDto(); | ||
137 | + | ||
138 | + doing() | ||
139 | + .loginUser(false); | ||
140 | + | ||
141 | + then() | ||
142 | + .assertLoginFailure(); | ||
143 | + } | ||
144 | + | ||
145 | + @Test | ||
95 | public void testLogoutUserReturnsSuccess() { | 146 | public void testLogoutUserReturnsSuccess() { |
96 | 147 | ||
97 | doing() | 148 | doing() |
@@ -112,23 +163,36 @@ public class UserViewControllerTest { | @@ -112,23 +163,36 @@ public class UserViewControllerTest { | ||
112 | return this; | 163 | return this; |
113 | } | 164 | } |
114 | 165 | ||
115 | - private UserViewControllerTest user() { | ||
116 | - user = new UserTestDataBuilder().build(); | ||
117 | - return this; | ||
118 | - } | ||
119 | - | ||
120 | // doing | 166 | // doing |
121 | 167 | ||
122 | private UserViewControllerTest doing() { | 168 | private UserViewControllerTest doing() { |
123 | return this; | 169 | return this; |
124 | } | 170 | } |
125 | 171 | ||
126 | - private void loginUser() { | 172 | + private void createUser(final boolean result) { |
127 | /* | 173 | /* |
128 | * The when().thenReturn() method chain is used to specify | 174 | * The when().thenReturn() method chain is used to specify |
129 | * a return value for a method call with pre-defined parameters. | 175 | * a return value for a method call with pre-defined parameters. |
130 | */ | 176 | */ |
131 | - when(userService.loginUser(userDto)).thenReturn(true); | 177 | + when(userService.createUser(userDto)).thenReturn(result); |
178 | + | ||
179 | + actual = underTest.createUser(userDto); | ||
180 | + } | ||
181 | + | ||
182 | + private void updateUser() { | ||
183 | + when(userService.updateUser(userDto)).thenReturn(true); | ||
184 | + | ||
185 | + actual = underTest.updateUser(userDto); | ||
186 | + } | ||
187 | + | ||
188 | + private void updateUser(final Long id) { | ||
189 | + when(userService.updateUser(id, userDto)).thenReturn(true); | ||
190 | + | ||
191 | + actual = underTest.updateUser(id, userDto); | ||
192 | + } | ||
193 | + | ||
194 | + private void loginUser(final boolean result) { | ||
195 | + when(userService.loginUser(userDto)).thenReturn(result); | ||
132 | 196 | ||
133 | actual = underTest.loginUser(userDto); | 197 | actual = underTest.loginUser(userDto); |
134 | } | 198 | } |
@@ -145,11 +209,31 @@ public class UserViewControllerTest { | @@ -145,11 +209,31 @@ public class UserViewControllerTest { | ||
145 | return this; | 209 | return this; |
146 | } | 210 | } |
147 | 211 | ||
212 | + private void assertCreateSuccess() { | ||
213 | + final RestResponse expected = new RestResponse(); | ||
214 | + assertEquals(expected, actual); | ||
215 | + } | ||
216 | + | ||
217 | + private void assertCreateFailure() { | ||
218 | + final RestResponse expected = new RestResponse(ResponseState.ALREADY_EXISTING); | ||
219 | + assertEquals(expected, actual); | ||
220 | + } | ||
221 | + | ||
222 | + private void assertUpdateSuccess() { | ||
223 | + final RestResponse expected = new RestResponse(); | ||
224 | + assertEquals(expected, actual); | ||
225 | + } | ||
226 | + | ||
148 | private void assertLoginSuccess() { | 227 | private void assertLoginSuccess() { |
149 | final RestResponse expected = new RestResponse(); | 228 | final RestResponse expected = new RestResponse(); |
150 | assertEquals(expected, actual); | 229 | assertEquals(expected, actual); |
151 | } | 230 | } |
152 | 231 | ||
232 | + private void assertLoginFailure() { | ||
233 | + final RestResponse expected = new RestResponse(ResponseState.FAILED); | ||
234 | + assertEquals(expected, actual); | ||
235 | + } | ||
236 | + | ||
153 | private void assertLogoutSuccess() { | 237 | private void assertLogoutSuccess() { |
154 | final RestResponse expected = new RestResponse(); | 238 | final RestResponse expected = new RestResponse(); |
155 | assertEquals(expected, actual); | 239 | assertEquals(expected, actual); |
src/test/resources/net/ziemers/swxercise/testdata/UserServiceTestData.xml
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <dataset> | 2 | <dataset> |
3 | <!-- die Grosz-/Kleinschreibung scheint unter bestimmten Bedingungen von Bedeutung zu sein! --> | 3 | <!-- die Grosz-/Kleinschreibung scheint unter bestimmten Bedingungen von Bedeutung zu sein! --> |
4 | - <Profile id="1" username="username_profile" passwordHash="passwordHash_profile" hashAlgorithm="hashAlgorithm_profile" salt="salt_profile"/> | 4 | + <Profile id="1" username="username_profile" passwordHash="passwordHash_profile" hashAlgorithm="SHA512" salt="salt_profile"/> |
5 | <User id="2" firstname="firstname_user" lastname="lastname_user" profile_id="1"/> | 5 | <User id="2" firstname="firstname_user" lastname="lastname_user" profile_id="1"/> |
6 | </dataset> | 6 | </dataset> |