6
6
import org .ays .auth .model .AysPermissionBuilder ;
7
7
import org .ays .auth .model .AysRole ;
8
8
import org .ays .auth .model .AysRoleBuilder ;
9
+ import org .ays .auth .model .enums .AysPermissionCategory ;
9
10
import org .ays .auth .model .enums .AysRoleStatus ;
10
11
import org .ays .auth .model .request .AysRoleUpdateRequest ;
11
12
import org .ays .auth .model .request .AysRoleUpdateRequestBuilder ;
30
31
import org .mockito .Mock ;
31
32
import org .mockito .Mockito ;
32
33
33
- import java .util .ArrayList ;
34
- import java .util .List ;
35
- import java .util .Optional ;
36
- import java .util .UUID ;
34
+ import java .util .*;
37
35
38
36
class AysRoleUpdateServiceImplTest extends AysUnitTest {
39
37
@@ -112,7 +110,7 @@ void givenIdAndRoleUpdateRequest_whenValuesValid_thenUpdateRoleWithSuperPermissi
112
110
Mockito .verify (identity , Mockito .times (1 ))
113
111
.isSuperAdmin ();
114
112
115
- Mockito .verify (identity , Mockito .never ( ))
113
+ Mockito .verify (identity , Mockito .times ( 1 ))
116
114
.getUserId ();
117
115
118
116
Mockito .verify (roleSavePort , Mockito .times (1 ))
@@ -156,6 +154,9 @@ void givenIdAndRoleUpdateRequest_whenValuesValid_thenUpdateRole() {
156
154
Mockito .when (identity .isSuperAdmin ())
157
155
.thenReturn (false );
158
156
157
+ Mockito .when (identity .getUserId ())
158
+ .thenReturn ("mockUpdatedUser" );
159
+
159
160
Mockito .when (roleSavePort .save (Mockito .any (AysRole .class )))
160
161
.thenReturn (Mockito .mock (AysRole .class ));
161
162
@@ -178,13 +179,93 @@ void givenIdAndRoleUpdateRequest_whenValuesValid_thenUpdateRole() {
178
179
Mockito .verify (identity , Mockito .times (1 ))
179
180
.isSuperAdmin ();
180
181
181
- Mockito .verify (identity , Mockito .never ( ))
182
+ Mockito .verify (identity , Mockito .times ( 1 ))
182
183
.getUserId ();
183
184
184
185
Mockito .verify (roleSavePort , Mockito .times (1 ))
185
186
.save (Mockito .any (AysRole .class ));
186
187
}
187
188
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
+
188
269
@ Test
189
270
void givenValidIdAndRoleUpdateRequest_whenRoleNotFound_thenThrowAysRoleNotExistByIdException () {
190
271
// Given
0 commit comments