@@ -14,10 +14,12 @@ See the License for the specific language governing permissions and
14
14
limitations under the License.
15
15
*/
16
16
17
+ import { mocked } from 'jest-mock' ;
17
18
import { EventType } from "matrix-js-sdk/src/@types/event" ;
18
19
import { RoomMember } from "matrix-js-sdk/src/models/room-member" ;
19
20
import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state" ;
20
21
import { defer } from "matrix-js-sdk/src/utils" ;
22
+ import { ClientEvent , RoomEvent , MatrixEvent } from 'matrix-js-sdk/src/matrix' ;
21
23
22
24
import "../skinned-sdk" ; // Must be first for skinning to work
23
25
import SpaceStore from "../../src/stores/spaces/SpaceStore" ;
@@ -101,8 +103,8 @@ describe("SpaceStore", () => {
101
103
const viewRoom = roomId => defaultDispatcher . dispatch ( { action : Action . ViewRoom , room_id : roomId } , true ) ;
102
104
103
105
const run = async ( ) => {
104
- client . getRoom . mockImplementation ( roomId => rooms . find ( room => room . roomId === roomId ) ) ;
105
- client . getRoomUpgradeHistory . mockImplementation ( roomId => [ rooms . find ( room => room . roomId === roomId ) ] ) ;
106
+ mocked ( client ) . getRoom . mockImplementation ( roomId => rooms . find ( room => room . roomId === roomId ) ) ;
107
+ mocked ( client ) . getRoomUpgradeHistory . mockImplementation ( roomId => [ rooms . find ( room => room . roomId === roomId ) ] ) ;
106
108
await testUtils . setupAsyncStoreWithClient ( store , client ) ;
107
109
jest . runOnlyPendingTimers ( ) ;
108
110
} ;
@@ -117,7 +119,7 @@ describe("SpaceStore", () => {
117
119
118
120
beforeEach ( async ( ) => {
119
121
jest . runOnlyPendingTimers ( ) ; // run async dispatch
120
- client . getVisibleRooms . mockReturnValue ( rooms = [ ] ) ;
122
+ mocked ( client ) . getVisibleRooms . mockReturnValue ( rooms = [ ] ) ;
121
123
122
124
await SettingsStore . setValue ( "Spaces.enabledMetaSpaces" , null , SettingLevel . DEVICE , {
123
125
[ MetaSpace . Home ] : true ,
@@ -318,7 +320,7 @@ describe("SpaceStore", () => {
318
320
mkSpace ( space3 , [ invite2 ] ) ;
319
321
mkSpace ( space4 , [ room4 , fav2 , space2 , space3 ] ) ;
320
322
321
- client . getRoom . mockImplementation ( roomId => rooms . find ( room => room . roomId === roomId ) ) ;
323
+ mocked ( client ) . getRoom . mockImplementation ( roomId => rooms . find ( room => room . roomId === roomId ) ) ;
322
324
323
325
[ fav1 , fav2 , fav3 ] . forEach ( roomId => {
324
326
client . getRoom ( roomId ) . tags = {
@@ -329,7 +331,7 @@ describe("SpaceStore", () => {
329
331
} ) ;
330
332
331
333
[ invite1 , invite2 ] . forEach ( roomId => {
332
- client . getRoom ( roomId ) . getMyMembership . mockReturnValue ( "invite" ) ;
334
+ mocked ( client . getRoom ( roomId ) ) . getMyMembership . mockReturnValue ( "invite" ) ;
333
335
} ) ;
334
336
335
337
// have dmPartner1 be in space1 with you
@@ -350,7 +352,7 @@ describe("SpaceStore", () => {
350
352
351
353
// room 2 claims to be a child of space2 and is so via a valid m.space.parent
352
354
const cliRoom2 = client . getRoom ( room2 ) ;
353
- cliRoom2 . currentState . getStateEvents . mockImplementation ( testUtils . mockStateEventImplementation ( [
355
+ const room2MockStateEvents = testUtils . mockStateEventImplementation ( [
354
356
mkEvent ( {
355
357
event : true ,
356
358
type : EventType . SpaceParent ,
@@ -359,36 +361,40 @@ describe("SpaceStore", () => {
359
361
skey : space2 ,
360
362
content : { via : [ ] , canonical : true } ,
361
363
ts : Date . now ( ) ,
362
- } ) ,
363
- ] ) ) ;
364
+ } ) as MatrixEvent ,
365
+ ] ) ;
366
+ mocked ( cliRoom2 . currentState ) . getStateEvents . mockImplementation ( room2MockStateEvents ) ;
364
367
const cliSpace2 = client . getRoom ( space2 ) ;
365
- cliSpace2 . currentState . maySendStateEvent . mockImplementation ( ( evType : string , userId : string ) => {
366
- if ( evType === EventType . SpaceChild ) {
367
- return userId === client . getUserId ( ) ;
368
- }
369
- return true ;
370
- } ) ;
368
+ mocked ( cliSpace2 . currentState ) . maySendStateEvent . mockImplementation (
369
+ ( evType : string , userId : string ) => {
370
+ if ( evType === EventType . SpaceChild ) {
371
+ return userId === client . getUserId ( ) ;
372
+ }
373
+ return true ;
374
+ } ) ;
371
375
372
376
// room 3 claims to be a child of space3 but is not due to invalid m.space.parent (permissions)
373
377
const cliRoom3 = client . getRoom ( room3 ) ;
374
- cliRoom3 . currentState . getStateEvents . mockImplementation ( testUtils . mockStateEventImplementation ( [
375
- mkEvent ( {
376
- event : true ,
377
- type : EventType . SpaceParent ,
378
- room : room3 ,
379
- user : client . getUserId ( ) ,
380
- skey : space3 ,
381
- content : { via : [ ] , canonical : true } ,
382
- ts : Date . now ( ) ,
383
- } ) ,
384
- ] ) ) ;
378
+ mocked ( cliRoom3 . currentState ) . getStateEvents . mockImplementation (
379
+ testUtils . mockStateEventImplementation ( [
380
+ mkEvent ( {
381
+ event : true ,
382
+ type : EventType . SpaceParent ,
383
+ room : room3 ,
384
+ user : client . getUserId ( ) ,
385
+ skey : space3 ,
386
+ content : { via : [ ] , canonical : true } ,
387
+ ts : Date . now ( ) ,
388
+ } ) ,
389
+ ] ) ) ;
385
390
const cliSpace3 = client . getRoom ( space3 ) ;
386
- cliSpace3 . currentState . maySendStateEvent . mockImplementation ( ( evType : string , userId : string ) => {
387
- if ( evType === EventType . SpaceChild ) {
388
- return false ;
389
- }
390
- return true ;
391
- } ) ;
391
+ mocked ( cliSpace3 . currentState ) . maySendStateEvent . mockImplementation (
392
+ ( evType : string , userId : string ) => {
393
+ if ( evType === EventType . SpaceChild ) {
394
+ return false ;
395
+ }
396
+ return true ;
397
+ } ) ;
392
398
393
399
await run ( ) ;
394
400
} ) ;
@@ -598,7 +604,7 @@ describe("SpaceStore", () => {
598
604
expect ( store . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
599
605
const space = mkSpace ( space1 ) ;
600
606
const prom = testUtils . emitPromise ( store , UPDATE_TOP_LEVEL_SPACES ) ;
601
- client . emit ( " Room" , space ) ;
607
+ client . emit ( ClientEvent . Room , space ) ;
602
608
await prom ;
603
609
expect ( store . spacePanelSpaces ) . toStrictEqual ( [ space ] ) ;
604
610
expect ( store . invitedSpaces ) . toStrictEqual ( [ ] ) ;
@@ -611,7 +617,7 @@ describe("SpaceStore", () => {
611
617
expect ( store . spacePanelSpaces ) . toStrictEqual ( [ space ] ) ;
612
618
space . getMyMembership . mockReturnValue ( "leave" ) ;
613
619
const prom = testUtils . emitPromise ( store , UPDATE_TOP_LEVEL_SPACES ) ;
614
- client . emit ( "Room.myMembership" , space , "leave" , "join" ) ;
620
+ client . emit ( RoomEvent . MyMembership , space , "leave" , "join" ) ;
615
621
await prom ;
616
622
expect ( store . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
617
623
} ) ;
@@ -623,7 +629,7 @@ describe("SpaceStore", () => {
623
629
const space = mkSpace ( space1 ) ;
624
630
space . getMyMembership . mockReturnValue ( "invite" ) ;
625
631
const prom = testUtils . emitPromise ( store , UPDATE_INVITED_SPACES ) ;
626
- client . emit ( " Room" , space ) ;
632
+ client . emit ( ClientEvent . Room , space ) ;
627
633
await prom ;
628
634
expect ( store . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
629
635
expect ( store . invitedSpaces ) . toStrictEqual ( [ space ] ) ;
@@ -638,7 +644,7 @@ describe("SpaceStore", () => {
638
644
expect ( store . invitedSpaces ) . toStrictEqual ( [ space ] ) ;
639
645
space . getMyMembership . mockReturnValue ( "join" ) ;
640
646
const prom = testUtils . emitPromise ( store , UPDATE_TOP_LEVEL_SPACES ) ;
641
- client . emit ( "Room.myMembership" , space , "join" , "invite" ) ;
647
+ client . emit ( RoomEvent . MyMembership , space , "join" , "invite" ) ;
642
648
await prom ;
643
649
expect ( store . spacePanelSpaces ) . toStrictEqual ( [ space ] ) ;
644
650
expect ( store . invitedSpaces ) . toStrictEqual ( [ ] ) ;
@@ -653,7 +659,7 @@ describe("SpaceStore", () => {
653
659
expect ( store . invitedSpaces ) . toStrictEqual ( [ space ] ) ;
654
660
space . getMyMembership . mockReturnValue ( "leave" ) ;
655
661
const prom = testUtils . emitPromise ( store , UPDATE_INVITED_SPACES ) ;
656
- client . emit ( "Room.myMembership" , space , "leave" , "invite" ) ;
662
+ client . emit ( RoomEvent . MyMembership , space , "leave" , "invite" ) ;
657
663
await prom ;
658
664
expect ( store . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
659
665
expect ( store . invitedSpaces ) . toStrictEqual ( [ ] ) ;
@@ -673,7 +679,7 @@ describe("SpaceStore", () => {
673
679
const invite = mkRoom ( invite1 ) ;
674
680
invite . getMyMembership . mockReturnValue ( "invite" ) ;
675
681
const prom = testUtils . emitPromise ( store , space1 ) ;
676
- client . emit ( " Room" , space ) ;
682
+ client . emit ( ClientEvent . Room , space ) ;
677
683
await prom ;
678
684
679
685
expect ( store . spacePanelSpaces ) . toStrictEqual ( [ space ] ) ;
@@ -705,11 +711,11 @@ describe("SpaceStore", () => {
705
711
ts : Date . now ( ) ,
706
712
} ) ;
707
713
const spaceRoom = client . getRoom ( spaceId ) ;
708
- spaceRoom . currentState . getStateEvents . mockImplementation (
714
+ mocked ( spaceRoom . currentState ) . getStateEvents . mockImplementation (
709
715
testUtils . mockStateEventImplementation ( [ childEvent ] ) ,
710
716
) ;
711
717
712
- client . emit ( "RoomState.events" , childEvent ) ;
718
+ client . emit ( RoomStateEvent . Events , childEvent , spaceRoom . currentState , undefined ) ;
713
719
} ;
714
720
715
721
const addMember = ( spaceId , user : RoomMember ) => {
@@ -723,12 +729,12 @@ describe("SpaceStore", () => {
723
729
ts : Date . now ( ) ,
724
730
} ) ;
725
731
const spaceRoom = client . getRoom ( spaceId ) ;
726
- spaceRoom . currentState . getStateEvents . mockImplementation (
732
+ mocked ( spaceRoom . currentState ) . getStateEvents . mockImplementation (
727
733
testUtils . mockStateEventImplementation ( [ memberEvent ] ) ,
728
734
) ;
729
- spaceRoom . getMember . mockReturnValue ( user ) ;
735
+ mocked ( spaceRoom ) . getMember . mockReturnValue ( user ) ;
730
736
731
- client . emit ( "RoomState.members" , memberEvent ) ;
737
+ client . emit ( RoomStateEvent . Members , memberEvent , spaceRoom . currentState , user ) ;
732
738
} ;
733
739
734
740
it ( 'emits events for parent spaces when child room is added' , async ( ) => {
@@ -857,8 +863,8 @@ describe("SpaceStore", () => {
857
863
858
864
await run ( ) ;
859
865
860
- const deferred = defer < void > ( ) ;
861
- ( space . loadMembersIfNeeded as jest . Mock ) . mockImplementation ( ( ) => {
866
+ const deferred = defer < boolean > ( ) ;
867
+ space . loadMembersIfNeeded . mockImplementation ( ( ) => {
862
868
const event = mkEvent ( {
863
869
event : true ,
864
870
type : EventType . RoomMember ,
@@ -876,7 +882,7 @@ describe("SpaceStore", () => {
876
882
} ) ;
877
883
878
884
client . emit ( RoomStateEvent . Members , event , null , null ) ;
879
- deferred . resolve ( ) ;
885
+ return deferred . resolve ( true ) as unknown as Promise < boolean > ;
880
886
} ) ;
881
887
882
888
spyDispatcher . mockClear ( ) ;
@@ -1000,7 +1006,7 @@ describe("SpaceStore", () => {
1000
1006
mkSpace ( space2 , [ room1 , room2 ] ) ;
1001
1007
1002
1008
const cliRoom2 = client . getRoom ( room2 ) ;
1003
- cliRoom2 . currentState . getStateEvents . mockImplementation ( testUtils . mockStateEventImplementation ( [
1009
+ mocked ( cliRoom2 . currentState ) . getStateEvents . mockImplementation ( testUtils . mockStateEventImplementation ( [
1004
1010
mkEvent ( {
1005
1011
event : true ,
1006
1012
type : EventType . SpaceParent ,
@@ -1123,14 +1129,14 @@ describe("SpaceStore", () => {
1123
1129
// receive invite to space
1124
1130
const rootSpace = mkSpace ( space1 , [ room1 , room2 , space2 ] ) ;
1125
1131
rootSpace . getMyMembership . mockReturnValue ( "invite" ) ;
1126
- client . emit ( " Room" , rootSpace ) ;
1132
+ client . emit ( ClientEvent . Room , rootSpace ) ;
1127
1133
jest . runOnlyPendingTimers ( ) ;
1128
1134
expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
1129
1135
expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
1130
1136
1131
1137
// accept invite to space
1132
1138
rootSpace . getMyMembership . mockReturnValue ( "join" ) ;
1133
- client . emit ( "Room.myMembership" , rootSpace , "join" , "invite" ) ;
1139
+ client . emit ( RoomEvent . MyMembership , rootSpace , "join" , "invite" ) ;
1134
1140
jest . runOnlyPendingTimers ( ) ;
1135
1141
expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
1136
1142
expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
@@ -1139,7 +1145,7 @@ describe("SpaceStore", () => {
1139
1145
expect ( SpaceStore . instance . isRoomInSpace ( space1 , room1 ) ) . toBeFalsy ( ) ;
1140
1146
const rootSpaceRoom1 = mkRoom ( room1 ) ;
1141
1147
rootSpaceRoom1 . getMyMembership . mockReturnValue ( "join" ) ;
1142
- client . emit ( " Room" , rootSpaceRoom1 ) ;
1148
+ client . emit ( ClientEvent . Room , rootSpaceRoom1 ) ;
1143
1149
jest . runOnlyPendingTimers ( ) ;
1144
1150
expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
1145
1151
expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
@@ -1153,7 +1159,7 @@ describe("SpaceStore", () => {
1153
1159
expect ( SpaceStore . instance . isRoomInSpace ( space1 , room2 ) ) . toBeFalsy ( ) ;
1154
1160
const rootSpaceRoom2 = mkRoom ( room2 ) ;
1155
1161
rootSpaceRoom2 . getMyMembership . mockReturnValue ( "invite" ) ;
1156
- client . emit ( " Room" , rootSpaceRoom2 ) ;
1162
+ client . emit ( ClientEvent . Room , rootSpaceRoom2 ) ;
1157
1163
jest . runOnlyPendingTimers ( ) ;
1158
1164
expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
1159
1165
expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
@@ -1181,7 +1187,7 @@ describe("SpaceStore", () => {
1181
1187
}
1182
1188
} ) ;
1183
1189
expect ( SpaceStore . instance . getSpaceFilteredUserIds ( space1 ) . has ( dm1Partner . userId ) ) . toBeFalsy ( ) ;
1184
- client . emit ( "RoomState.members" , mkEvent ( {
1190
+ const memberEvent = mkEvent ( {
1185
1191
event : true ,
1186
1192
type : EventType . RoomMember ,
1187
1193
content : {
@@ -1190,12 +1196,13 @@ describe("SpaceStore", () => {
1190
1196
skey : dm1Partner . userId ,
1191
1197
user : dm1Partner . userId ,
1192
1198
room : space1 ,
1193
- } ) ) ;
1199
+ } ) ;
1200
+ client . emit ( RoomStateEvent . Members , memberEvent , undefined , undefined ) ;
1194
1201
jest . runOnlyPendingTimers ( ) ;
1195
1202
expect ( SpaceStore . instance . getSpaceFilteredUserIds ( space1 ) . has ( dm1Partner . userId ) ) . toBeTruthy ( ) ;
1196
1203
const dm1Room = mkRoom ( dm1 ) ;
1197
1204
dm1Room . getMyMembership . mockReturnValue ( "join" ) ;
1198
- client . emit ( " Room" , dm1Room ) ;
1205
+ client . emit ( ClientEvent . Room , dm1Room ) ;
1199
1206
jest . runOnlyPendingTimers ( ) ;
1200
1207
expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
1201
1208
expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
@@ -1209,7 +1216,7 @@ describe("SpaceStore", () => {
1209
1216
const subspace = mkSpace ( space2 ) ;
1210
1217
subspace . getMyMembership . mockReturnValue ( "join" ) ;
1211
1218
const prom = testUtils . emitPromise ( SpaceStore . instance , space1 ) ;
1212
- client . emit ( " Room" , subspace ) ;
1219
+ client . emit ( ClientEvent . Room , subspace ) ;
1213
1220
jest . runOnlyPendingTimers ( ) ;
1214
1221
expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
1215
1222
expect ( SpaceStore . instance . spacePanelSpaces . map ( r => r . roomId ) ) . toStrictEqual ( [ rootSpace . roomId ] ) ;
0 commit comments