@@ -14,10 +14,12 @@ See the License for the specific language governing permissions and
1414limitations under the License.
1515*/
1616
17+ import { mocked } from 'jest-mock' ;
1718import { EventType } from "matrix-js-sdk/src/@types/event" ;
1819import { RoomMember } from "matrix-js-sdk/src/models/room-member" ;
1920import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state" ;
2021import { defer } from "matrix-js-sdk/src/utils" ;
22+ import { ClientEvent , RoomEvent , MatrixEvent } from 'matrix-js-sdk/src/matrix' ;
2123
2224import "../skinned-sdk" ; // Must be first for skinning to work
2325import SpaceStore from "../../src/stores/spaces/SpaceStore" ;
@@ -101,8 +103,8 @@ describe("SpaceStore", () => {
101103 const viewRoom = roomId => defaultDispatcher . dispatch ( { action : Action . ViewRoom , room_id : roomId } , true ) ;
102104
103105 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 ) ] ) ;
106108 await testUtils . setupAsyncStoreWithClient ( store , client ) ;
107109 jest . runOnlyPendingTimers ( ) ;
108110 } ;
@@ -117,7 +119,7 @@ describe("SpaceStore", () => {
117119
118120 beforeEach ( async ( ) => {
119121 jest . runOnlyPendingTimers ( ) ; // run async dispatch
120- client . getVisibleRooms . mockReturnValue ( rooms = [ ] ) ;
122+ mocked ( client ) . getVisibleRooms . mockReturnValue ( rooms = [ ] ) ;
121123
122124 await SettingsStore . setValue ( "Spaces.enabledMetaSpaces" , null , SettingLevel . DEVICE , {
123125 [ MetaSpace . Home ] : true ,
@@ -318,7 +320,7 @@ describe("SpaceStore", () => {
318320 mkSpace ( space3 , [ invite2 ] ) ;
319321 mkSpace ( space4 , [ room4 , fav2 , space2 , space3 ] ) ;
320322
321- client . getRoom . mockImplementation ( roomId => rooms . find ( room => room . roomId === roomId ) ) ;
323+ mocked ( client ) . getRoom . mockImplementation ( roomId => rooms . find ( room => room . roomId === roomId ) ) ;
322324
323325 [ fav1 , fav2 , fav3 ] . forEach ( roomId => {
324326 client . getRoom ( roomId ) . tags = {
@@ -329,7 +331,7 @@ describe("SpaceStore", () => {
329331 } ) ;
330332
331333 [ invite1 , invite2 ] . forEach ( roomId => {
332- client . getRoom ( roomId ) . getMyMembership . mockReturnValue ( "invite" ) ;
334+ mocked ( client . getRoom ( roomId ) ) . getMyMembership . mockReturnValue ( "invite" ) ;
333335 } ) ;
334336
335337 // have dmPartner1 be in space1 with you
@@ -350,7 +352,7 @@ describe("SpaceStore", () => {
350352
351353 // room 2 claims to be a child of space2 and is so via a valid m.space.parent
352354 const cliRoom2 = client . getRoom ( room2 ) ;
353- cliRoom2 . currentState . getStateEvents . mockImplementation ( testUtils . mockStateEventImplementation ( [
355+ const room2MockStateEvents = testUtils . mockStateEventImplementation ( [
354356 mkEvent ( {
355357 event : true ,
356358 type : EventType . SpaceParent ,
@@ -359,36 +361,40 @@ describe("SpaceStore", () => {
359361 skey : space2 ,
360362 content : { via : [ ] , canonical : true } ,
361363 ts : Date . now ( ) ,
362- } ) ,
363- ] ) ) ;
364+ } ) as MatrixEvent ,
365+ ] ) ;
366+ mocked ( cliRoom2 . currentState ) . getStateEvents . mockImplementation ( room2MockStateEvents ) ;
364367 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+ } ) ;
371375
372376 // room 3 claims to be a child of space3 but is not due to invalid m.space.parent (permissions)
373377 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+ ] ) ) ;
385390 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+ } ) ;
392398
393399 await run ( ) ;
394400 } ) ;
@@ -598,7 +604,7 @@ describe("SpaceStore", () => {
598604 expect ( store . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
599605 const space = mkSpace ( space1 ) ;
600606 const prom = testUtils . emitPromise ( store , UPDATE_TOP_LEVEL_SPACES ) ;
601- client . emit ( " Room" , space ) ;
607+ client . emit ( ClientEvent . Room , space ) ;
602608 await prom ;
603609 expect ( store . spacePanelSpaces ) . toStrictEqual ( [ space ] ) ;
604610 expect ( store . invitedSpaces ) . toStrictEqual ( [ ] ) ;
@@ -611,7 +617,7 @@ describe("SpaceStore", () => {
611617 expect ( store . spacePanelSpaces ) . toStrictEqual ( [ space ] ) ;
612618 space . getMyMembership . mockReturnValue ( "leave" ) ;
613619 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" ) ;
615621 await prom ;
616622 expect ( store . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
617623 } ) ;
@@ -623,7 +629,7 @@ describe("SpaceStore", () => {
623629 const space = mkSpace ( space1 ) ;
624630 space . getMyMembership . mockReturnValue ( "invite" ) ;
625631 const prom = testUtils . emitPromise ( store , UPDATE_INVITED_SPACES ) ;
626- client . emit ( " Room" , space ) ;
632+ client . emit ( ClientEvent . Room , space ) ;
627633 await prom ;
628634 expect ( store . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
629635 expect ( store . invitedSpaces ) . toStrictEqual ( [ space ] ) ;
@@ -638,7 +644,7 @@ describe("SpaceStore", () => {
638644 expect ( store . invitedSpaces ) . toStrictEqual ( [ space ] ) ;
639645 space . getMyMembership . mockReturnValue ( "join" ) ;
640646 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" ) ;
642648 await prom ;
643649 expect ( store . spacePanelSpaces ) . toStrictEqual ( [ space ] ) ;
644650 expect ( store . invitedSpaces ) . toStrictEqual ( [ ] ) ;
@@ -653,7 +659,7 @@ describe("SpaceStore", () => {
653659 expect ( store . invitedSpaces ) . toStrictEqual ( [ space ] ) ;
654660 space . getMyMembership . mockReturnValue ( "leave" ) ;
655661 const prom = testUtils . emitPromise ( store , UPDATE_INVITED_SPACES ) ;
656- client . emit ( "Room.myMembership" , space , "leave" , "invite" ) ;
662+ client . emit ( RoomEvent . MyMembership , space , "leave" , "invite" ) ;
657663 await prom ;
658664 expect ( store . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
659665 expect ( store . invitedSpaces ) . toStrictEqual ( [ ] ) ;
@@ -673,7 +679,7 @@ describe("SpaceStore", () => {
673679 const invite = mkRoom ( invite1 ) ;
674680 invite . getMyMembership . mockReturnValue ( "invite" ) ;
675681 const prom = testUtils . emitPromise ( store , space1 ) ;
676- client . emit ( " Room" , space ) ;
682+ client . emit ( ClientEvent . Room , space ) ;
677683 await prom ;
678684
679685 expect ( store . spacePanelSpaces ) . toStrictEqual ( [ space ] ) ;
@@ -705,11 +711,11 @@ describe("SpaceStore", () => {
705711 ts : Date . now ( ) ,
706712 } ) ;
707713 const spaceRoom = client . getRoom ( spaceId ) ;
708- spaceRoom . currentState . getStateEvents . mockImplementation (
714+ mocked ( spaceRoom . currentState ) . getStateEvents . mockImplementation (
709715 testUtils . mockStateEventImplementation ( [ childEvent ] ) ,
710716 ) ;
711717
712- client . emit ( "RoomState.events" , childEvent ) ;
718+ client . emit ( RoomStateEvent . Events , childEvent , spaceRoom . currentState , undefined ) ;
713719 } ;
714720
715721 const addMember = ( spaceId , user : RoomMember ) => {
@@ -723,12 +729,12 @@ describe("SpaceStore", () => {
723729 ts : Date . now ( ) ,
724730 } ) ;
725731 const spaceRoom = client . getRoom ( spaceId ) ;
726- spaceRoom . currentState . getStateEvents . mockImplementation (
732+ mocked ( spaceRoom . currentState ) . getStateEvents . mockImplementation (
727733 testUtils . mockStateEventImplementation ( [ memberEvent ] ) ,
728734 ) ;
729- spaceRoom . getMember . mockReturnValue ( user ) ;
735+ mocked ( spaceRoom ) . getMember . mockReturnValue ( user ) ;
730736
731- client . emit ( "RoomState.members" , memberEvent ) ;
737+ client . emit ( RoomStateEvent . Members , memberEvent , spaceRoom . currentState , user ) ;
732738 } ;
733739
734740 it ( 'emits events for parent spaces when child room is added' , async ( ) => {
@@ -857,8 +863,8 @@ describe("SpaceStore", () => {
857863
858864 await run ( ) ;
859865
860- const deferred = defer < void > ( ) ;
861- ( space . loadMembersIfNeeded as jest . Mock ) . mockImplementation ( ( ) => {
866+ const deferred = defer < boolean > ( ) ;
867+ space . loadMembersIfNeeded . mockImplementation ( ( ) => {
862868 const event = mkEvent ( {
863869 event : true ,
864870 type : EventType . RoomMember ,
@@ -876,7 +882,7 @@ describe("SpaceStore", () => {
876882 } ) ;
877883
878884 client . emit ( RoomStateEvent . Members , event , null , null ) ;
879- deferred . resolve ( ) ;
885+ return deferred . resolve ( true ) as unknown as Promise < boolean > ;
880886 } ) ;
881887
882888 spyDispatcher . mockClear ( ) ;
@@ -1000,7 +1006,7 @@ describe("SpaceStore", () => {
10001006 mkSpace ( space2 , [ room1 , room2 ] ) ;
10011007
10021008 const cliRoom2 = client . getRoom ( room2 ) ;
1003- cliRoom2 . currentState . getStateEvents . mockImplementation ( testUtils . mockStateEventImplementation ( [
1009+ mocked ( cliRoom2 . currentState ) . getStateEvents . mockImplementation ( testUtils . mockStateEventImplementation ( [
10041010 mkEvent ( {
10051011 event : true ,
10061012 type : EventType . SpaceParent ,
@@ -1123,14 +1129,14 @@ describe("SpaceStore", () => {
11231129 // receive invite to space
11241130 const rootSpace = mkSpace ( space1 , [ room1 , room2 , space2 ] ) ;
11251131 rootSpace . getMyMembership . mockReturnValue ( "invite" ) ;
1126- client . emit ( " Room" , rootSpace ) ;
1132+ client . emit ( ClientEvent . Room , rootSpace ) ;
11271133 jest . runOnlyPendingTimers ( ) ;
11281134 expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
11291135 expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ ] ) ;
11301136
11311137 // accept invite to space
11321138 rootSpace . getMyMembership . mockReturnValue ( "join" ) ;
1133- client . emit ( "Room.myMembership" , rootSpace , "join" , "invite" ) ;
1139+ client . emit ( RoomEvent . MyMembership , rootSpace , "join" , "invite" ) ;
11341140 jest . runOnlyPendingTimers ( ) ;
11351141 expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
11361142 expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
@@ -1139,7 +1145,7 @@ describe("SpaceStore", () => {
11391145 expect ( SpaceStore . instance . isRoomInSpace ( space1 , room1 ) ) . toBeFalsy ( ) ;
11401146 const rootSpaceRoom1 = mkRoom ( room1 ) ;
11411147 rootSpaceRoom1 . getMyMembership . mockReturnValue ( "join" ) ;
1142- client . emit ( " Room" , rootSpaceRoom1 ) ;
1148+ client . emit ( ClientEvent . Room , rootSpaceRoom1 ) ;
11431149 jest . runOnlyPendingTimers ( ) ;
11441150 expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
11451151 expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
@@ -1153,7 +1159,7 @@ describe("SpaceStore", () => {
11531159 expect ( SpaceStore . instance . isRoomInSpace ( space1 , room2 ) ) . toBeFalsy ( ) ;
11541160 const rootSpaceRoom2 = mkRoom ( room2 ) ;
11551161 rootSpaceRoom2 . getMyMembership . mockReturnValue ( "invite" ) ;
1156- client . emit ( " Room" , rootSpaceRoom2 ) ;
1162+ client . emit ( ClientEvent . Room , rootSpaceRoom2 ) ;
11571163 jest . runOnlyPendingTimers ( ) ;
11581164 expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
11591165 expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
@@ -1181,7 +1187,7 @@ describe("SpaceStore", () => {
11811187 }
11821188 } ) ;
11831189 expect ( SpaceStore . instance . getSpaceFilteredUserIds ( space1 ) . has ( dm1Partner . userId ) ) . toBeFalsy ( ) ;
1184- client . emit ( "RoomState.members" , mkEvent ( {
1190+ const memberEvent = mkEvent ( {
11851191 event : true ,
11861192 type : EventType . RoomMember ,
11871193 content : {
@@ -1190,12 +1196,13 @@ describe("SpaceStore", () => {
11901196 skey : dm1Partner . userId ,
11911197 user : dm1Partner . userId ,
11921198 room : space1 ,
1193- } ) ) ;
1199+ } ) ;
1200+ client . emit ( RoomStateEvent . Members , memberEvent , undefined , undefined ) ;
11941201 jest . runOnlyPendingTimers ( ) ;
11951202 expect ( SpaceStore . instance . getSpaceFilteredUserIds ( space1 ) . has ( dm1Partner . userId ) ) . toBeTruthy ( ) ;
11961203 const dm1Room = mkRoom ( dm1 ) ;
11971204 dm1Room . getMyMembership . mockReturnValue ( "join" ) ;
1198- client . emit ( " Room" , dm1Room ) ;
1205+ client . emit ( ClientEvent . Room , dm1Room ) ;
11991206 jest . runOnlyPendingTimers ( ) ;
12001207 expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
12011208 expect ( SpaceStore . instance . spacePanelSpaces ) . toStrictEqual ( [ rootSpace ] ) ;
@@ -1209,7 +1216,7 @@ describe("SpaceStore", () => {
12091216 const subspace = mkSpace ( space2 ) ;
12101217 subspace . getMyMembership . mockReturnValue ( "join" ) ;
12111218 const prom = testUtils . emitPromise ( SpaceStore . instance , space1 ) ;
1212- client . emit ( " Room" , subspace ) ;
1219+ client . emit ( ClientEvent . Room , subspace ) ;
12131220 jest . runOnlyPendingTimers ( ) ;
12141221 expect ( SpaceStore . instance . invitedSpaces ) . toStrictEqual ( [ ] ) ;
12151222 expect ( SpaceStore . instance . spacePanelSpaces . map ( r => r . roomId ) ) . toStrictEqual ( [ rootSpace . roomId ] ) ;
0 commit comments