Skip to content

Commit 383b219

Browse files
committed
add test
Signed-off-by: Timo K <[email protected]>
1 parent e9dafb5 commit 383b219

File tree

2 files changed

+38
-42
lines changed

2 files changed

+38
-42
lines changed

spec/unit/matrixrtc/CallMembership.spec.ts

Lines changed: 30 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,7 @@ limitations under the License.
1515
*/
1616

1717
import { type MatrixEvent } from "../../../src";
18-
import {
19-
CallMembership,
20-
type SessionMembershipData,
21-
DEFAULT_EXPIRE_DURATION,
22-
type RtcMembershipData,
23-
} from "../../../src/matrixrtc/CallMembership";
18+
import { CallMembership, DEFAULT_EXPIRE_DURATION, type RtcMembershipData } from "../../../src/matrixrtc/CallMembership";
2419
import { membershipTemplate } from "./mocks";
2520

2621
function makeMockEvent(originTs = 0, content = {}): MatrixEvent {
@@ -42,16 +37,6 @@ describe("CallMembership", () => {
4237
jest.useRealTimers();
4338
});
4439

45-
const membershipTemplate: SessionMembershipData = {
46-
"call_id": "",
47-
"scope": "m.room",
48-
"application": "m.call",
49-
"device_id": "AAAAAAA",
50-
"focus_active": { type: "livekit", focus_selection: "oldest_membership" },
51-
"foci_preferred": [{ type: "livekit" }],
52-
"m.call.intent": "voice",
53-
};
54-
5540
it("rejects membership with no device_id", () => {
5641
expect(() => {
5742
new CallMembership(makeMockEvent(0, Object.assign({}, membershipTemplate, { device_id: undefined })));
@@ -184,6 +169,19 @@ describe("CallMembership", () => {
184169
expect(membership.isExpired()).toBe(true);
185170
});
186171
});
172+
describe("expiry calculation", () => {
173+
beforeEach(() => jest.useFakeTimers());
174+
afterEach(() => jest.useRealTimers());
175+
176+
it("calculates time until expiry", () => {
177+
// server origin timestamp for this event is 1000
178+
const fakeEvent = makeMockEvent(1000, membershipTemplate);
179+
const membership = new CallMembership(fakeEvent);
180+
jest.setSystemTime(2000);
181+
// should be using absolute expiry time
182+
expect(membership.getMsUntilExpiry()).toEqual(DEFAULT_EXPIRE_DURATION - 1000);
183+
});
184+
});
187185
});
188186

189187
describe("RtcMembershipData", () => {
@@ -328,28 +326,25 @@ describe("CallMembership", () => {
328326
expect(membership.isExpired()).toBe(false);
329327
});
330328
});
331-
});
332-
333-
describe("expiry calculation", () => {
334-
let fakeEvent: MatrixEvent;
335-
let membership: CallMembership;
336-
337-
beforeEach(() => {
338-
// server origin timestamp for this event is 1000
339-
fakeEvent = makeMockEvent(1000, membershipTemplate);
340-
membership = new CallMembership(fakeEvent!);
341329

342-
jest.useFakeTimers();
343-
});
330+
describe("expiry calculation", () => {
331+
beforeEach(() => jest.useFakeTimers());
332+
afterEach(() => jest.useRealTimers());
344333

345-
afterEach(() => {
346-
jest.useRealTimers();
347-
});
334+
afterEach(() => {
335+
jest.useRealTimers();
336+
});
348337

349-
it("calculates time until expiry", () => {
350-
jest.setSystemTime(2000);
351-
// should be using absolute expiry time
352-
expect(membership.getMsUntilExpiry()).toEqual(DEFAULT_EXPIRE_DURATION - 1000);
338+
it("calculates time until expiry", () => {
339+
// server origin timestamp for this event is 1000
340+
// The related event used for created_ts is at 500
341+
const fakeEvent = makeMockEvent(1000, membershipTemplate);
342+
const initialEvent = makeMockEvent(500, membershipTemplate);
343+
const membership = new CallMembership(fakeEvent, initialEvent);
344+
jest.setSystemTime(2000);
345+
// should be using absolute expiry time
346+
expect(membership.getMsUntilExpiry()).toEqual(DEFAULT_EXPIRE_DURATION - 1500);
347+
});
353348
});
354349
});
355350
});

spec/unit/matrixrtc/mocks.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ import { secureRandomString } from "../../../src/randomstring";
2323
export type MembershipData = (SessionMembershipData | {}) & { user_id: string };
2424

2525
export const membershipTemplate: SessionMembershipData & { user_id: string } = {
26-
application: "m.call",
27-
call_id: "",
28-
user_id: "@mock:user.example",
29-
device_id: "AAAAAAA",
30-
scope: "m.room",
31-
focus_active: { type: "livekit", focus_selection: "oldest_membership" },
32-
foci_preferred: [
26+
"application": "m.call",
27+
"call_id": "",
28+
"user_id": "@mock:user.example",
29+
"device_id": "AAAAAAA",
30+
"scope": "m.room",
31+
"focus_active": { type: "livekit", focus_selection: "oldest_membership" },
32+
"foci_preferred": [
3333
{
3434
livekit_alias: "!alias:something.org",
3535
livekit_service_url: "https://livekit-jwt.something.io",
@@ -41,6 +41,7 @@ export const membershipTemplate: SessionMembershipData & { user_id: string } = {
4141
type: "livekit",
4242
},
4343
],
44+
"m.call.intent": "voice",
4445
};
4546

4647
export type MockClient = Pick<

0 commit comments

Comments
 (0)