@@ -18,7 +18,7 @@ import { mocked } from "jest-mock";
18
18
import { MatrixClient , Room } from "matrix-js-sdk/src/matrix" ;
19
19
20
20
import DMRoomMap from "../../../src/utils/DMRoomMap" ;
21
- import { createTestClient , makeMembershipEvent } from "../../test-utils" ;
21
+ import { createTestClient , makeMembershipEvent , mkThirdPartyInviteEvent } from "../../test-utils" ;
22
22
import { LocalRoom } from "../../../src/models/LocalRoom" ;
23
23
import { findDMForUser } from "../../../src/utils/dm/findDMForUser" ;
24
24
import { getFunctionalMembers } from "../../../src/utils/room/getFunctionalMembers" ;
@@ -32,13 +32,15 @@ describe("findDMForUser", () => {
32
32
const userId2 = "@user2:example.com" ;
33
33
const userId3 = "@user3:example.com" ;
34
34
const botId = "@bot:example.com" ;
35
+ const thirdPartyId = "party@example.com" ;
35
36
let room1 : Room ;
36
37
let room2 : LocalRoom ;
37
38
let room3 : Room ;
38
39
let room4 : Room ;
39
40
let room5 : Room ;
40
41
let room6 : Room ;
41
- const room7Id = "!room7:example.com" ;
42
+ let room7 : Room ;
43
+ const unknownRoomId = "!unknown:example.com" ;
42
44
let dmRoomMap : DMRoomMap ;
43
45
let mockClient : MatrixClient ;
44
46
@@ -89,6 +91,14 @@ describe("findDMForUser", () => {
89
91
makeMembershipEvent ( room6 . roomId , userId3 , "join" ) ,
90
92
] ) ;
91
93
94
+ // room with pending third-party invite
95
+ room7 = new Room ( "!room7:example.com" , mockClient , userId1 ) ;
96
+ room7 . getMyMembership = ( ) => "join" ;
97
+ room7 . currentState . setStateEvents ( [
98
+ makeMembershipEvent ( room7 . roomId , userId1 , "join" ) ,
99
+ mkThirdPartyInviteEvent ( thirdPartyId , "third-party" , room7 . roomId ) ,
100
+ ] ) ;
101
+
92
102
mocked ( mockClient . getRoom ) . mockImplementation ( ( roomId : string ) => {
93
103
return (
94
104
{
@@ -98,6 +108,7 @@ describe("findDMForUser", () => {
98
108
[ room4 . roomId ] : room4 ,
99
109
[ room5 . roomId ] : room5 ,
100
110
[ room6 . roomId ] : room6 ,
111
+ [ room7 . roomId ] : room7 ,
101
112
} [ roomId ] || null
102
113
) ;
103
114
} ) ;
@@ -113,14 +124,15 @@ describe("findDMForUser", () => {
113
124
room4 . roomId ,
114
125
room5 . roomId ,
115
126
room6 . roomId ,
116
- room7Id , // this room does not exist in client
127
+ room7 . roomId ,
128
+ unknownRoomId , // this room does not exist in client
117
129
] ) ,
118
130
) ,
119
131
} as unknown as DMRoomMap ;
120
132
jest . spyOn ( DMRoomMap , "shared" ) . mockReturnValue ( dmRoomMap ) ;
121
133
mocked ( dmRoomMap . getDMRoomsForUserId ) . mockImplementation ( ( userId : string ) => {
122
134
if ( userId === userId1 ) {
123
- return [ room1 . roomId , room2 . roomId , room3 . roomId , room4 . roomId , room5 . roomId , room7Id ] ;
135
+ return [ room1 . roomId , room2 . roomId , room3 . roomId , room4 . roomId , room5 . roomId , unknownRoomId ] ;
124
136
}
125
137
126
138
return [ ] ;
@@ -158,4 +170,8 @@ describe("findDMForUser", () => {
158
170
159
171
expect ( findDMForUser ( mockClient , userId3 ) ) . toBe ( room6 ) ;
160
172
} ) ;
173
+
174
+ it ( "should find a room with a pending third-party invite" , ( ) => {
175
+ expect ( findDMForUser ( mockClient , thirdPartyId ) ) . toBe ( room7 ) ;
176
+ } ) ;
161
177
} ) ;
0 commit comments