Skip to content

Commit e2ce379

Browse files
authored
Merge pull request #3038 from andybalaam/andybalaam/tests-for-getVisibleRooms
Tests for getVisibleRooms
2 parents 424212c + 8a4c95e commit e2ce379

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

Diff for: spec/unit/matrix-client.spec.ts

+79
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ import { IOlmDevice } from "../../src/crypto/algorithms/megolm";
6262
import { QueryDict } from "../../src/utils";
6363
import { SyncState } from "../../src/sync";
6464
import * as featureUtils from "../../src/feature";
65+
import { StubStore } from "../../src/store/stub";
6566

6667
jest.useFakeTimers();
6768

@@ -2196,4 +2197,82 @@ describe("MatrixClient", function () {
21962197
expect(requestSpy).toHaveBeenCalledWith(Method.Put, path, undefined, {});
21972198
});
21982199
});
2200+
2201+
describe("getVisibleRooms", () => {
2202+
function roomCreateEvent(newRoomId: string, predecessorRoomId: string): MatrixEvent {
2203+
return new MatrixEvent({
2204+
content: {
2205+
"creator": "@daryl:alexandria.example.com",
2206+
"m.federate": true,
2207+
"predecessor": {
2208+
event_id: "spec_is_not_clear_what_id_this_is",
2209+
room_id: predecessorRoomId,
2210+
},
2211+
"room_version": "9",
2212+
},
2213+
event_id: `create_event_id_pred_${predecessorRoomId}`,
2214+
origin_server_ts: 1432735824653,
2215+
room_id: newRoomId,
2216+
sender: "@daryl:alexandria.example.com",
2217+
state_key: "",
2218+
type: "m.room.create",
2219+
});
2220+
}
2221+
2222+
function tombstoneEvent(newRoomId: string, predecessorRoomId: string): MatrixEvent {
2223+
return new MatrixEvent({
2224+
content: {
2225+
body: "This room has been replaced",
2226+
replacement_room: newRoomId,
2227+
},
2228+
event_id: `tombstone_event_id_pred_${predecessorRoomId}`,
2229+
origin_server_ts: 1432735824653,
2230+
room_id: predecessorRoomId,
2231+
sender: "@daryl:alexandria.example.com",
2232+
state_key: "",
2233+
type: "m.room.tombstone",
2234+
});
2235+
}
2236+
2237+
it("Returns an empty list if there are no rooms", () => {
2238+
client.store = new StubStore();
2239+
client.store.getRooms = () => [];
2240+
const rooms = client.getVisibleRooms();
2241+
expect(rooms).toHaveLength(0);
2242+
});
2243+
2244+
it("Returns all non-replaced rooms", () => {
2245+
const room1 = new Room("room1", client, "@carol:alexandria.example.com");
2246+
const room2 = new Room("room2", client, "@daryl:alexandria.example.com");
2247+
client.store = new StubStore();
2248+
client.store.getRooms = () => [room1, room2];
2249+
const rooms = client.getVisibleRooms();
2250+
expect(rooms).toContain(room1);
2251+
expect(rooms).toContain(room2);
2252+
expect(rooms).toHaveLength(2);
2253+
});
2254+
2255+
it("Does not return replaced rooms", () => {
2256+
// Given 4 rooms, 2 of which have been replaced
2257+
const room1 = new Room("room1", client, "@carol:alexandria.example.com");
2258+
const replacedRoom1 = new Room("replacedRoom1", client, "@carol:alexandria.example.com");
2259+
const replacedRoom2 = new Room("replacedRoom2", client, "@carol:alexandria.example.com");
2260+
const room2 = new Room("room2", client, "@daryl:alexandria.example.com");
2261+
client.store = new StubStore();
2262+
client.store.getRooms = () => [room1, replacedRoom1, replacedRoom2, room2];
2263+
room1.addLiveEvents([roomCreateEvent(room1.roomId, replacedRoom1.roomId)], {});
2264+
room2.addLiveEvents([roomCreateEvent(room2.roomId, replacedRoom2.roomId)], {});
2265+
replacedRoom1.addLiveEvents([tombstoneEvent(room1.roomId, replacedRoom1.roomId)], {});
2266+
replacedRoom2.addLiveEvents([tombstoneEvent(room2.roomId, replacedRoom2.roomId)], {});
2267+
2268+
// When we ask for the visible rooms
2269+
const rooms = client.getVisibleRooms();
2270+
2271+
// Then we only get the ones that have not been replaced
2272+
expect(rooms).not.toContain(replacedRoom1);
2273+
expect(rooms).not.toContain(replacedRoom2);
2274+
expect(rooms).toContain(room1);
2275+
expect(rooms).toContain(room2);
2276+
});
2277+
});
21992278
});

0 commit comments

Comments
 (0)