Skip to content

Commit e9dafb5

Browse files
committed
fix tests
Signed-off-by: Timo K <[email protected]>
1 parent 65a3461 commit e9dafb5

File tree

4 files changed

+41
-19
lines changed

4 files changed

+41
-19
lines changed

spec/unit/matrixrtc/MatrixRTCSessionManager.spec.ts

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,30 @@ import { logger } from "../../../src/logger";
2323
describe("MatrixRTCSessionManager", () => {
2424
let client: MatrixClient;
2525

26-
beforeEach(() => {
26+
beforeEach(async () => {
2727
client = new MatrixClient({ baseUrl: "base_url" });
28-
client.matrixRTC.start();
28+
await client.matrixRTC.start();
2929
});
3030

3131
afterEach(() => {
3232
client.stopClient();
3333
client.matrixRTC.stop();
3434
});
3535

36-
it("Fires event when session starts", () => {
36+
it("Fires event when session starts", async () => {
3737
const onStarted = jest.fn();
38-
client.matrixRTC.on(MatrixRTCSessionManagerEvents.SessionStarted, onStarted);
38+
const { promise, resolve } = Promise.withResolvers<void>();
39+
client.matrixRTC.on(MatrixRTCSessionManagerEvents.SessionStarted, (...v) => {
40+
onStarted(...v);
41+
resolve();
42+
});
3943

4044
try {
4145
const room1 = makeMockRoom([membershipTemplate]);
4246
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
4347

4448
client.emit(ClientEvent.Room, room1);
49+
await promise;
4550
expect(onStarted).toHaveBeenCalledWith(room1.roomId, client.matrixRTC.getActiveRoomSession(room1));
4651
} finally {
4752
client.matrixRTC.off(MatrixRTCSessionManagerEvents.SessionStarted, onStarted);
@@ -63,34 +68,48 @@ describe("MatrixRTCSessionManager", () => {
6368
}
6469
});
6570

66-
it("Fires event when session ends", () => {
71+
it("Fires event when session ends", async () => {
6772
const onEnded = jest.fn();
68-
client.matrixRTC.on(MatrixRTCSessionManagerEvents.SessionEnded, onEnded);
73+
const { promise: endPromise, resolve: rEnd } = Promise.withResolvers();
74+
client.matrixRTC.once(MatrixRTCSessionManagerEvents.SessionEnded, onEnded);
75+
const { promise: startPromise, resolve: rStart } = Promise.withResolvers();
76+
client.matrixRTC.once(MatrixRTCSessionManagerEvents.SessionEnded, rEnd);
77+
client.matrixRTC.once(MatrixRTCSessionManagerEvents.SessionStarted, rStart);
78+
6979
const room1 = makeMockRoom([membershipTemplate]);
7080
jest.spyOn(client, "getRooms").mockReturnValue([room1]);
7181
jest.spyOn(client, "getRoom").mockReturnValue(room1);
7282

7383
client.emit(ClientEvent.Room, room1);
84+
await startPromise;
7485

7586
mockRoomState(room1, [{ user_id: membershipTemplate.user_id }]);
76-
7787
const roomState = room1.getLiveTimeline().getState(EventTimeline.FORWARDS)!;
7888
const membEvent = roomState.getStateEvents("org.matrix.msc3401.call.member")[0];
7989
client.emit(RoomStateEvent.Events, membEvent, roomState, null);
80-
90+
await endPromise;
8191
expect(onEnded).toHaveBeenCalledWith(room1.roomId, client.matrixRTC.getActiveRoomSession(room1));
8292
});
8393

84-
it("Fires correctly with for with custom sessionDescription", () => {
94+
it("Fires correctly with for with custom sessionDescription", async () => {
8595
const onStarted = jest.fn();
8696
const onEnded = jest.fn();
8797
// create a session manager with a custom session description
8898
const sessionManager = new MatrixRTCSessionManager(logger, client, { id: "test", application: "m.notCall" });
8999

90100
// manually start the session manager (its not the default one started by the client)
91-
sessionManager.start();
92-
sessionManager.on(MatrixRTCSessionManagerEvents.SessionEnded, onEnded);
93-
sessionManager.on(MatrixRTCSessionManagerEvents.SessionStarted, onStarted);
101+
await sessionManager.start();
102+
const { promise: startPromise, resolve: rStart } = Promise.withResolvers<void>();
103+
const { promise: endPromise, resolve: rEnd } = Promise.withResolvers<void>();
104+
105+
sessionManager.on(MatrixRTCSessionManagerEvents.SessionEnded, (v) => {
106+
onEnded(v);
107+
rEnd();
108+
});
109+
sessionManager.on(MatrixRTCSessionManagerEvents.SessionStarted, (v) => {
110+
onStarted(v);
111+
rStart();
112+
});
94113

95114
try {
96115
const room1 = makeMockRoom([{ ...membershipTemplate, application: "m.other" }]);
@@ -104,6 +123,7 @@ describe("MatrixRTCSessionManager", () => {
104123
jest.spyOn(client, "getRooms").mockReturnValue([room1, room2]);
105124

106125
client.emit(ClientEvent.Room, room2);
126+
await startPromise;
107127
expect(onStarted).toHaveBeenCalled();
108128
onStarted.mockClear();
109129

@@ -113,6 +133,7 @@ describe("MatrixRTCSessionManager", () => {
113133
const roomState = room2.getLiveTimeline().getState(EventTimeline.FORWARDS)!;
114134
const membEvent = roomState.getStateEvents("org.matrix.msc3401.call.member")[0];
115135
client.emit(RoomStateEvent.Events, membEvent, roomState, null);
136+
await endPromise;
116137
expect(onEnded).toHaveBeenCalled();
117138
onEnded.mockClear();
118139

spec/unit/matrixrtc/MembershipManager.spec.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
} from "../../../src/matrixrtc";
3434
import { makeMockClient, makeMockRoom, membershipTemplate, mockCallMembership, type MockClient } from "./mocks";
3535
import { MembershipManager } from "../../../src/matrixrtc/MembershipManager.ts";
36+
import { waitFor } from "../../test-utils/test-utils.ts";
3637

3738
/**
3839
* Create a promise that will resolve once a mocked method is called.
@@ -923,18 +924,18 @@ describe("MembershipManager", () => {
923924
});
924925
});
925926

926-
it("Should prefix log with MembershipManager used", () => {
927+
it("Should prefix log with MembershipManager used", async () => {
928+
const spy = jest.spyOn(console, "error");
927929
const client = makeMockClient("@alice:example.org", "AAAAAAA");
928930
const room = makeMockRoom([membershipTemplate]);
929931

930932
const membershipManager = new MembershipManager(undefined, room, client, callSession);
931933

932-
const spy = jest.spyOn(console, "error");
933934
// Double join
934935
membershipManager.join([]);
935936
membershipManager.join([]);
936937

937-
expect(spy).toHaveBeenCalled();
938+
await waitFor(() => expect(spy).toHaveBeenCalled());
938939
const logline: string = spy.mock.calls[0][0];
939940
expect(logline.startsWith("[MembershipManager]")).toBe(true);
940941
});

spec/unit/matrixrtc/RoomKeyTransport.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe("RoomKeyTransport", () => {
3131
let mockLogger: Mocked<Logger>;
3232

3333
const onCallEncryptionMock = jest.fn();
34-
beforeEach(() => {
34+
beforeEach(async () => {
3535
onCallEncryptionMock.mockReset();
3636
mockLogger = {
3737
debug: jest.fn(),
@@ -50,7 +50,7 @@ describe("RoomKeyTransport", () => {
5050
};
5151
room = makeMockRoom([membershipTemplate]);
5252
client = new MatrixClient({ baseUrl: "base_url" });
53-
client.matrixRTC.start();
53+
await client.matrixRTC.start();
5454
transport = new RoomKeyTransport(room, client, statistics, {
5555
getChild: jest.fn().mockReturnValue(mockLogger),
5656
} as unknown as Mocked<Logger>);

src/matrixrtc/MatrixRTCSession.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,8 +363,8 @@ export class MatrixRTCSession extends TypedEventEmitter<
363363
return eventData ? new MatrixEvent(eventData) : undefined;
364364
};
365365
const relatedEvent = relatedEventId
366-
? room.findEventById(relatedEventId)
367-
: await getRelatedMatrixEvent();
366+
? (room.findEventById(relatedEventId) ?? (await getRelatedMatrixEvent()))
367+
: undefined;
368368

369369
try {
370370
membership = new CallMembership(memberEvent, relatedEvent);

0 commit comments

Comments
 (0)