@@ -23,7 +23,23 @@ describe('roundActivities reducers', () => {
2323 expect ( nextState . needToSave ) . toBe ( true ) ;
2424 expect ( nextState . changedKeys . has ( 'schedule' ) ) . toBe ( true ) ;
2525 expect ( nextActivities [ 0 ] ) . toBe ( activityOne ) ;
26- expect ( nextActivities [ 1 ] ) . toBe ( updatedActivityTwo ) ;
26+ // The updated activity is returned as a new object (extraneous props are stripped), so use toEqual
27+ expect ( nextActivities [ 1 ] ) . not . toBe ( updatedActivityTwo ) ;
28+ expect ( nextActivities [ 1 ] ) . toEqual ( updatedActivityTwo ) ;
29+ } ) ;
30+
31+ it ( 'updateRoundActivities strips extraneous properties (e.g. room) from stored activities' , ( ) => {
32+ const activityOne = buildActivity ( { id : 1 , name : 'Round 1' , activityCode : '333-r1' } ) ;
33+ const room = { id : 10 , name : 'Room A' , color : '#000' , extensions : [ ] , activities : [ activityOne ] } ;
34+ // Simulate ActivityWithRoom: an activity with an extra `room` reference attached internally
35+ const activityWithRoom = { ...activityOne , name : 'Round 1 Updated' , room } ;
36+ const state = buildState ( buildWcif ( [ activityOne ] ) ) ;
37+
38+ const nextState = updateRoundActivities ( state , { activities : [ activityWithRoom ] } ) ;
39+
40+ const nextActivity = nextState . wcif ?. schedule . venues [ 0 ] . rooms [ 0 ] . activities [ 0 ] ;
41+ expect ( nextActivity ) . not . toHaveProperty ( 'room' ) ;
42+ expect ( nextActivity ) . toEqual ( expect . objectContaining ( { id : 1 , name : 'Round 1 Updated' } ) ) ;
2743 } ) ;
2844
2945 it ( 'updateRoundChildActivities updates child activities and keeps other assignments intact' , ( ) => {
0 commit comments