Skip to content

Commit 1247294

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

File tree

2 files changed

+94
-7
lines changed

2 files changed

+94
-7
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.springframework.stereotype.Service;
2121
import org.springframework.transaction.annotation.Transactional;
2222

23+
import java.time.LocalDateTime;
2324
import java.util.List;
2425
import java.util.Set;
2526

@@ -62,13 +63,18 @@ public void update(final String id,
6263
.filter(roleFromDatabase -> identity.getInstitutionId().equals(roleFromDatabase.getInstitution().getId()))
6364
.orElseThrow(() -> new AysRoleNotExistByIdException(id));
6465

65-
this.checkExistingRoleNameByWithoutId(id, updateRequest.getName());
66+
if (!role.getName().equals(updateRequest.getName())) {
67+
this.checkExistingRoleNameByWithoutId(id, updateRequest.getName());
68+
}
6669

6770
final List<AysPermission> permissions = this.checkExistingPermissionsAndGet(updateRequest.getPermissionIds());
6871

6972
role.setName(updateRequest.getName());
7073
role.setPermissions(permissions);
7174

75+
role.setUpdatedAt(LocalDateTime.now());
76+
role.setUpdatedUser(identity.getUserId());
77+
7278
roleSavePort.save(role);
7379
}
7480

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

Lines changed: 87 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.ays.auth.model.AysPermissionBuilder;
77
import org.ays.auth.model.AysRole;
88
import org.ays.auth.model.AysRoleBuilder;
9+
import org.ays.auth.model.enums.AysPermissionCategory;
910
import org.ays.auth.model.enums.AysRoleStatus;
1011
import org.ays.auth.model.request.AysRoleUpdateRequest;
1112
import org.ays.auth.model.request.AysRoleUpdateRequestBuilder;
@@ -30,10 +31,7 @@
3031
import org.mockito.Mock;
3132
import org.mockito.Mockito;
3233

33-
import java.util.ArrayList;
34-
import java.util.List;
35-
import java.util.Optional;
36-
import java.util.UUID;
34+
import java.util.*;
3735

3836
class AysRoleUpdateServiceImplTest extends AysUnitTest {
3937

@@ -112,7 +110,7 @@ void givenIdAndRoleUpdateRequest_whenValuesValid_thenUpdateRoleWithSuperPermissi
112110
Mockito.verify(identity, Mockito.times(1))
113111
.isSuperAdmin();
114112

115-
Mockito.verify(identity, Mockito.never())
113+
Mockito.verify(identity, Mockito.times(1))
116114
.getUserId();
117115

118116
Mockito.verify(roleSavePort, Mockito.times(1))
@@ -156,6 +154,9 @@ void givenIdAndRoleUpdateRequest_whenValuesValid_thenUpdateRole() {
156154
Mockito.when(identity.isSuperAdmin())
157155
.thenReturn(false);
158156

157+
Mockito.when(identity.getUserId())
158+
.thenReturn("mockUpdatedUser");
159+
159160
Mockito.when(roleSavePort.save(Mockito.any(AysRole.class)))
160161
.thenReturn(Mockito.mock(AysRole.class));
161162

@@ -178,13 +179,93 @@ void givenIdAndRoleUpdateRequest_whenValuesValid_thenUpdateRole() {
178179
Mockito.verify(identity, Mockito.times(1))
179180
.isSuperAdmin();
180181

181-
Mockito.verify(identity, Mockito.never())
182+
Mockito.verify(identity, Mockito.times(1))
182183
.getUserId();
183184

184185
Mockito.verify(roleSavePort, Mockito.times(1))
185186
.save(Mockito.any(AysRole.class));
186187
}
187188

189+
@Test
190+
void givenIdAndRoleUpdateRequest_whenPermissionsUpdatedAndNameUnchanged_thenUpdateRole() {
191+
// Given
192+
String mockId = AysRandomUtil.generateUUID();
193+
AysRoleUpdateRequest mockUpdateRequest = new AysRoleUpdateRequestBuilder()
194+
.withName("ExistingName")
195+
.withPermissionIds(Set.of(UUID.randomUUID().toString()))
196+
.build();
197+
198+
AysRole mockRole = new AysRoleBuilder()
199+
.withName("ExistingName")
200+
.withPermissions(List.of(
201+
new AysPermissionBuilder().withValidValues()
202+
.withName("institution:page")
203+
.withCategory(AysPermissionCategory.PAGE)
204+
.build()
205+
))
206+
.withId(mockId)
207+
.build();
208+
209+
// When
210+
Mockito.when(roleReadPort.findById(Mockito.anyString()))
211+
.thenReturn(Optional.of(mockRole));
212+
213+
Mockito.when(identity.getInstitutionId())
214+
.thenReturn(mockRole.getInstitution().getId());
215+
216+
Mockito.when(roleReadPort.findByName(Mockito.anyString())).
217+
thenReturn(Optional.of(mockRole));
218+
219+
220+
List<AysPermission> mockPermissions = new ArrayList<>();
221+
mockUpdateRequest.getPermissionIds().forEach(permissionId -> {
222+
AysPermission mockPermission = new AysPermissionBuilder()
223+
.withValidValues()
224+
.withId(permissionId)
225+
.withIsSuper(false)
226+
.build();
227+
mockPermissions.add(mockPermission);
228+
});
229+
Mockito.when(permissionReadPort.findAllByIds(Mockito.anySet()))
230+
.thenReturn(mockPermissions);
231+
232+
Mockito.when(identity.isSuperAdmin())
233+
.thenReturn(false);
234+
235+
Mockito.when(identity.getUserId())
236+
.thenReturn("mockUserId");
237+
238+
Mockito.when(roleSavePort.save(Mockito.any(AysRole.class)))
239+
.thenReturn(Mockito.mock(AysRole.class));
240+
241+
// Then
242+
roleUpdateService.update(mockId, mockUpdateRequest);
243+
244+
// Verify
245+
Mockito.verify(roleReadPort, Mockito.times(1))
246+
.findById(Mockito.anyString());
247+
248+
Mockito.verify(identity, Mockito.times(1))
249+
.getInstitutionId();
250+
251+
Mockito.verify(roleReadPort, Mockito.never())
252+
.findByName(Mockito.anyString());
253+
254+
255+
Mockito.verify(permissionReadPort, Mockito.times(1))
256+
.findAllByIds(Mockito.anySet());
257+
258+
Mockito.verify(identity, Mockito.times(1))
259+
.isSuperAdmin();
260+
261+
262+
Mockito.verify(identity, Mockito.times(1))
263+
.getUserId();
264+
265+
Mockito.verify(roleSavePort, Mockito.times(1))
266+
.save(Mockito.any(AysRole.class));
267+
}
268+
188269
@Test
189270
void givenValidIdAndRoleUpdateRequest_whenRoleNotFound_thenThrowAysRoleNotExistByIdException() {
190271
// Given

0 commit comments

Comments
 (0)