@@ -4,12 +4,14 @@ import deepFreeze from 'deep-freeze';
4
4
5
5
import * as eg from '../../__tests__/lib/exampleData' ;
6
6
import {
7
+ EVENT ,
7
8
EVENT_USER_GROUP_ADD ,
8
9
EVENT_USER_GROUP_REMOVE ,
9
10
EVENT_USER_GROUP_UPDATE ,
10
11
EVENT_USER_GROUP_ADD_MEMBERS ,
11
12
EVENT_USER_GROUP_REMOVE_MEMBERS ,
12
13
} from '../../actionConstants' ;
14
+ import { EventTypes } from '../../api/eventTypes' ;
13
15
import userGroupsReducer from '../userGroupsReducer' ;
14
16
15
17
describe ( 'userGroupsReducer' , ( ) => {
@@ -192,4 +194,35 @@ describe('userGroupsReducer', () => {
192
194
) . toEqual ( [ { ...group1 , members : [ user1 . user_id , user4 . user_id ] } , group2 ] ) ;
193
195
} ) ;
194
196
} ) ;
197
+
198
+ describe ( 'realm_user op: update' , ( ) => {
199
+ test ( 'a user is deactivated' , ( ) => {
200
+ const user1 = eg . makeUser ( ) ;
201
+ const user2 = eg . makeUser ( ) ;
202
+ const user3 = eg . makeUser ( ) ;
203
+
204
+ const group1 = eg . makeUserGroup ( { members : [ user1 . user_id , user2 . user_id , user3 . user_id ] } ) ;
205
+ const group2 = eg . makeUserGroup ( { members : [ user2 . user_id , user1 . user_id ] } ) ;
206
+ const group3 = eg . makeUserGroup ( { members : [ user1 . user_id ] } ) ;
207
+
208
+ const person = { userToDeactivate : user1 } ;
209
+ const action = deepFreeze ( {
210
+ type : EVENT ,
211
+ event : { id : 1 , type : EventTypes . realm_user , op : 'update' , person } ,
212
+ } ) ;
213
+
214
+ const prevState = deepFreeze ( [ group1 , group2 , group3 ] ) ;
215
+
216
+ const actualState = userGroupsReducer ( prevState , action ) ;
217
+
218
+ expect ( actualState ) . toEqual ( [
219
+ { ...group1 , members : [ user2 . user_id , user3 . user_id ] } ,
220
+ { ...group2 , members : [ user2 . user_id ] } ,
221
+
222
+ // A newly-empty group is not pruned; when a group is deactivated,
223
+ // we expect a user_group/remove event.
224
+ { ...group3 , members : [ ] } ,
225
+ ] ) ;
226
+ } ) ;
227
+ } ) ;
195
228
} ) ;
0 commit comments