Skip to content

Commit de3f595

Browse files
committed
AYS-501 | Time and user not being updated has been fixed
1 parent af6e5ef commit de3f595

File tree

3 files changed

+144
-4
lines changed

3 files changed

+144
-4
lines changed

src/main/java/org/ays/auth/service/impl/AysUserUpdateServiceImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public void update(final String id,
7575
user.setEmailAddress(updateRequest.getEmailAddress());
7676
user.setCity(updateRequest.getCity());
7777
user.setPhoneNumber(phoneNumber);
78+
user.setUpdatedUser(identity.getUserId());
7879

7980
userSavePort.save(user);
8081
}

src/test/java/org/ays/auth/controller/AysUserEndToEndTest.java

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.ays.AysEndToEndTest;
44
import org.ays.auth.model.AysRole;
5+
import org.ays.auth.model.AysRoleBuilder;
56
import org.ays.auth.model.AysUser;
67
import org.ays.auth.model.AysUserBuilder;
78
import org.ays.auth.model.enums.AysUserStatus;
@@ -373,6 +374,72 @@ void givenValidIdAndUserUpdateRequest_whenUserUpdated_thenReturnSuccess() throws
373374
Assertions.assertNotNull(userFromDatabase.get().getUpdatedAt());
374375
}
375376

377+
@Test
378+
void givenValidIdAndUserUpdateRequest_whenRolesUpdatedOnly_thenReturnSuccess() throws Exception {
379+
380+
// Initialize
381+
Institution institution = new InstitutionBuilder()
382+
.withId(AysValidTestData.Admin.INSTITUTION_ID)
383+
.build();
384+
385+
List<AysRole> roles = roleReadPort.findAllActivesByInstitutionId(institution.getId());
386+
387+
AysUser user = userSavePort.save(
388+
new AysUserBuilder()
389+
.withValidValues()
390+
.withoutId()
391+
.withRoles(roles)
392+
.withInstitution(institution)
393+
.build()
394+
);
395+
396+
// Given
397+
String id = user.getId();
398+
List<AysRole> newRoles = List.of(
399+
new AysRoleBuilder()
400+
.withValidValues()
401+
.withId("42fe288d-be87-4169-875e-e721a75cc833")
402+
.build()
403+
);
404+
405+
Set<String> newRoleIds = newRoles.stream()
406+
.map(AysRole::getId)
407+
.limit(1)
408+
.collect(Collectors.toSet());
409+
410+
AysUserUpdateRequest updateRequest = new AysUserUpdateRequestBuilder()
411+
.withValidValues()
412+
.withRoleIds(newRoleIds)
413+
.build();
414+
415+
// Then
416+
String endpoint = BASE_PATH.concat("/user/").concat(id);
417+
MockHttpServletRequestBuilder mockHttpServletRequestBuilder = AysMockMvcRequestBuilders
418+
.put(endpoint, adminToken.getAccessToken(), updateRequest);
419+
420+
AysResponse<Void> mockResponse = AysResponseBuilder.SUCCESS;
421+
422+
aysMockMvc.perform(mockHttpServletRequestBuilder, mockResponse)
423+
.andExpect(AysMockResultMatchersBuilders.status()
424+
.isOk())
425+
.andExpect(AysMockResultMatchersBuilders.response()
426+
.doesNotExist());
427+
428+
// Verify
429+
Optional<AysUser> userFromDatabase = userReadPort.findById(id);
430+
431+
Assertions.assertTrue(userFromDatabase.isPresent());
432+
Assertions.assertNotNull(userFromDatabase.get().getId());
433+
Assertions.assertNotNull(userFromDatabase.get().getInstitution());
434+
newRoleIds.forEach(roleId -> Assertions.assertTrue(
435+
userFromDatabase.get().getRoles().stream()
436+
.anyMatch(role -> role.getId().equals(roleId))
437+
)
438+
);
439+
Assertions.assertNotNull(userFromDatabase.get().getUpdatedUser());
440+
Assertions.assertNotNull(userFromDatabase.get().getUpdatedAt());
441+
}
442+
376443

377444
@Test
378445
void givenValidId_whenActivateUser_thenReturnSuccess() throws Exception {

src/test/java/org/ays/auth/service/impl/AysUserUpdateServiceImplTest.java

Lines changed: 76 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,78 @@ void givenValidIdAndValidUpdateRequest_whenAllFieldsChanged_thenUpdateUser() {
128128
.save(Mockito.any(AysUser.class));
129129
}
130130

131+
@Test
132+
void givenValidIdAndValidUpdateRequest_whenRolesUpdatedOnly_thenUpdateUser() {
133+
134+
// Given
135+
String mockId = "3c57d56b-4a97-4f70-86a9-b4c9235cbe13";
136+
137+
Set<String> mockRoleIds = Set.of(
138+
"00a07704-8d7c-4048-b001-9fb69b22bfe8",
139+
"7913e093-ae70-4029-ad8d-efbb21d79f26"
140+
);
141+
AysUserUpdateRequest mockUpdateRequest = new AysUserUpdateRequestBuilder()
142+
.withValidValues()
143+
.withRoleIds(mockRoleIds)
144+
.build();
145+
146+
// When
147+
Institution mockInstitution = new InstitutionBuilder()
148+
.withValidValues()
149+
.build();
150+
Mockito.when(identity.getInstitutionId())
151+
.thenReturn(mockInstitution.getId());
152+
153+
AysUser mockUser = new AysUserBuilder()
154+
.withValidValues()
155+
.withId(mockId)
156+
.withFirstName(mockUpdateRequest.getFirstName())
157+
.withLastName(mockUpdateRequest.getLastName())
158+
.withEmailAddress(mockUpdateRequest.getEmailAddress())
159+
.withPhoneNumber(AysPhoneNumber.builder().build())
160+
.withCity(mockUpdateRequest.getCity())
161+
.withRoles(List.of(
162+
new AysRoleBuilder()
163+
.withValidValues()
164+
.build()
165+
))
166+
.withInstitution(mockInstitution)
167+
.build();
168+
Mockito.when(userReadPort.findById(Mockito.anyString()))
169+
.thenReturn(Optional.of(mockUser));
170+
171+
List<AysRole> mockRoles = new ArrayList<>();
172+
mockUpdateRequest.getRoleIds().forEach(roleId -> {
173+
AysRole mockRole = new AysRoleBuilder()
174+
.withValidValues()
175+
.withId(roleId)
176+
.withInstitution(mockInstitution)
177+
.build();
178+
mockRoles.add(mockRole);
179+
});
180+
Mockito.when(roleReadPort.findAllByIds(Mockito.anySet()))
181+
.thenReturn(mockRoles);
182+
183+
Mockito.when(userSavePort.save(Mockito.any(AysUser.class)))
184+
.thenReturn(Mockito.mock(AysUser.class));
185+
186+
// Then
187+
userUpdateService.update(mockId, mockUpdateRequest);
188+
189+
// Verify
190+
Mockito.verify(userReadPort, Mockito.times(1))
191+
.findById(Mockito.anyString());
192+
193+
Mockito.verify(identity, Mockito.times(mockRoles.size() + 1))
194+
.getInstitutionId();
195+
196+
Mockito.verify(roleReadPort, Mockito.times(1))
197+
.findAllByIds(Mockito.anySet());
198+
199+
Mockito.verify(userSavePort, Mockito.times(1))
200+
.save(Mockito.any(AysUser.class));
201+
}
202+
131203
@Test
132204
void givenValidIdAndValidUpdateRequest_whenPhoneNumberChanged_thenUpdateUser() {
133205

@@ -566,7 +638,7 @@ void givenValidId_whenUserIsPassive_thenActivateUser() {
566638
}
567639

568640
@Test
569-
void givenValidId_whenUserNotFound_thenThrowAysUserNotExistByIdException(){
641+
void givenValidId_whenUserNotFound_thenThrowAysUserNotExistByIdException() {
570642

571643
// Given
572644
String mockId = "9f1eb072-7830-4c43-9a32-d77b62ccddd3";
@@ -593,7 +665,7 @@ void givenValidId_whenUserNotFound_thenThrowAysUserNotExistByIdException(){
593665
}
594666

595667
@Test
596-
void givenValidId_whenUserIsNotPassive_thenThrowAysUserIsNotPassiveException(){
668+
void givenValidId_whenUserIsNotPassive_thenThrowAysUserIsNotPassiveException() {
597669

598670
// Given
599671
String mockId = "bf7cc8d4-eab7-487d-8564-19be0f439b4a";
@@ -863,7 +935,7 @@ void givenValidId_whenUserIsActive_thenPassivateUser() {
863935
}
864936

865937
@Test
866-
void givenValidUserId_whenUserNotFound_thenThrowAysUserNotExistByIdException(){
938+
void givenValidUserId_whenUserNotFound_thenThrowAysUserNotExistByIdException() {
867939

868940
// Given
869941
String mockId = "9f1eb072-7830-4c43-9a32-d77b62ccddd3";
@@ -890,7 +962,7 @@ void givenValidUserId_whenUserNotFound_thenThrowAysUserNotExistByIdException(){
890962
}
891963

892964
@Test
893-
void givenValidId_whenUserIsNotActive_thenThrowAysUserNotActiveException(){
965+
void givenValidId_whenUserIsNotActive_thenThrowAysUserNotActiveException() {
894966

895967
// Given
896968
String mockId = "bf7cc8d4-eab7-487d-8564-19be0f439b4a";

0 commit comments

Comments
 (0)