Commit 8cae1cc55371bbbce0d84ec024e41fc50944117b

Authored by Thomas Ziemer
1 parent 62d24433

test: ViewController- und ServiceTests optimiert/ergänzt

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>