1
1
/* @flow strict-local */
2
2
3
3
import deepFreeze from 'deep-freeze' ;
4
+ import invariant from 'invariant' ;
4
5
5
6
import * as eg from '../../__tests__/lib/exampleData' ;
6
7
import {
@@ -11,6 +12,7 @@ import {
11
12
EVENT_USER_GROUP_REMOVE_MEMBERS ,
12
13
} from '../../actionConstants' ;
13
14
import userGroupsReducer from '../userGroupsReducer' ;
15
+ import eventToAction from '../../events/eventToAction' ;
14
16
15
17
describe ( 'userGroupsReducer' , ( ) => {
16
18
describe ( 'REGISTER_COMPLETE' , ( ) => {
@@ -192,4 +194,44 @@ 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 event = {
209
+ id : 0 ,
210
+ type : 'realm_user' ,
211
+ op : 'update' ,
212
+ person : { user_id : user1 . user_id , is_active : false } ,
213
+ } ;
214
+
215
+ const prevUserGroupsState = deepFreeze ( [ group1 , group2 , group3 ] ) ;
216
+ const prevPerAccountState = eg . reduxStatePlus ( {
217
+ users : [ user1 , user2 , user3 ] ,
218
+ userGroups : prevUserGroupsState ,
219
+ } ) ;
220
+ const action = eventToAction ( prevPerAccountState , event ) ;
221
+
222
+ expect ( action ) . not . toBeNull ( ) ;
223
+ invariant ( action != null , 'action not null' ) ;
224
+
225
+ const actualState = userGroupsReducer ( prevUserGroupsState , action ) ;
226
+
227
+ expect ( actualState ) . toEqual ( [
228
+ { ...group1 , members : [ user2 . user_id , user3 . user_id ] } ,
229
+ { ...group2 , members : [ user2 . user_id ] } ,
230
+
231
+ // A newly-empty group is not pruned; when a group is deactivated,
232
+ // we expect a user_group/remove event.
233
+ { ...group3 , members : [ ] } ,
234
+ ] ) ;
235
+ } ) ;
236
+ } ) ;
195
237
} ) ;
0 commit comments