You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-07-30 04:23:07 +03:00
Merge branch 'develop' into andybalaam/unrevert-deletion-move-prs
This commit is contained in:
@ -85,9 +85,7 @@ describe("CallMembership", () => {
|
||||
|
||||
it("considers memberships expired when local age large", () => {
|
||||
const fakeEvent = makeMockEvent(1000);
|
||||
const evAge = 6000;
|
||||
fakeEvent.getLocalAge = jest.fn().mockReturnValue(evAge);
|
||||
fakeEvent.localTimestamp = Date.now() - evAge;
|
||||
fakeEvent.getLocalAge = jest.fn().mockReturnValue(6000);
|
||||
const membership = new CallMembership(fakeEvent, membershipTemplate);
|
||||
expect(membership.isExpired()).toEqual(true);
|
||||
});
|
||||
|
@ -61,7 +61,7 @@ export function mockRTCEvent(
|
||||
getSender: jest.fn().mockReturnValue("@mock:user.example"),
|
||||
getTs: jest.fn().mockReturnValue(1000),
|
||||
getLocalAge: getLocalAgeFn,
|
||||
localTimestamp: Date.now() - getLocalAgeFn(),
|
||||
localTimestamp: Date.now(),
|
||||
getRoomId: jest.fn().mockReturnValue(roomId),
|
||||
sender: {
|
||||
userId: "@mock:user.example",
|
||||
|
@ -24,7 +24,7 @@ import {
|
||||
KeysUploadRequest,
|
||||
RoomMessageRequest,
|
||||
SignatureUploadRequest,
|
||||
SigningKeysUploadRequest,
|
||||
UploadSigningKeysRequest,
|
||||
ToDeviceRequest,
|
||||
} from "@matrix-org/matrix-sdk-crypto-wasm";
|
||||
|
||||
@ -173,10 +173,10 @@ describe("OutgoingRequestProcessor", () => {
|
||||
httpBackend.verifyNoOutstandingRequests();
|
||||
});
|
||||
|
||||
it("should handle SigningKeysUploadRequests without UIA", async () => {
|
||||
it("should handle UploadSigningKeysRequest without UIA", async () => {
|
||||
// first, mock up a request as we might expect to receive it from the Rust layer ...
|
||||
const testReq = { foo: "bar" };
|
||||
const outgoingRequest = new SigningKeysUploadRequest(JSON.stringify(testReq));
|
||||
const outgoingRequest = new UploadSigningKeysRequest(JSON.stringify(testReq));
|
||||
|
||||
// ... then poke the request into the OutgoingRequestProcessor under test
|
||||
const reqProm = processor.makeOutgoingRequest(outgoingRequest);
|
||||
@ -200,10 +200,10 @@ describe("OutgoingRequestProcessor", () => {
|
||||
httpBackend.verifyNoOutstandingRequests();
|
||||
});
|
||||
|
||||
it("should handle SigningKeysUploadRequests with UIA", async () => {
|
||||
it("should handle UploadSigningKeysRequest with UIA", async () => {
|
||||
// first, mock up a request as we might expect to receive it from the Rust layer ...
|
||||
const testReq = { foo: "bar" };
|
||||
const outgoingRequest = new SigningKeysUploadRequest(JSON.stringify(testReq));
|
||||
const outgoingRequest = new UploadSigningKeysRequest(JSON.stringify(testReq));
|
||||
|
||||
// also create a UIA callback
|
||||
const authCallback: UIAuthCallback<Object> = async (makeRequest) => {
|
||||
|
@ -22,12 +22,15 @@ import { Room } from "../../src/models/room";
|
||||
import { EventTimeline } from "../../src/models/event-timeline";
|
||||
import { TimelineIndex, TimelineWindow } from "../../src/timeline-window";
|
||||
import { mkMessage } from "../test-utils/test-utils";
|
||||
import { MatrixEvent } from "../../src/models/event";
|
||||
|
||||
const ROOM_ID = "roomId";
|
||||
const USER_ID = "userId";
|
||||
const mockClient = {
|
||||
getEventTimeline: jest.fn(),
|
||||
paginateEventTimeline: jest.fn(),
|
||||
supportsThreads: jest.fn(),
|
||||
getUserId: jest.fn().mockReturnValue(USER_ID),
|
||||
} as unknown as MockedObject<MatrixClient>;
|
||||
|
||||
/*
|
||||
@ -64,6 +67,23 @@ function addEventsToTimeline(timeline: EventTimeline, numEvents: number, toStart
|
||||
}
|
||||
}
|
||||
|
||||
function createEvents(numEvents: number): Array<MatrixEvent> {
|
||||
const ret = [];
|
||||
|
||||
for (let i = 0; i < numEvents; i++) {
|
||||
ret.push(
|
||||
mkMessage({
|
||||
room: ROOM_ID,
|
||||
user: USER_ID,
|
||||
event: true,
|
||||
unsigned: { age: 1 },
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* create a pair of linked timelines
|
||||
*/
|
||||
@ -412,4 +432,46 @@ describe("TimelineWindow", function () {
|
||||
expect(timelineWindow.canPaginate(EventTimeline.FORWARDS)).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
function idsOf(events: Array<MatrixEvent>): Array<string> {
|
||||
return events.map((e) => (e ? e.getId() ?? "MISSING_ID" : "MISSING_EVENT"));
|
||||
}
|
||||
|
||||
describe("removing events", () => {
|
||||
it("should shorten if removing an event within the window makes it overflow", function () {
|
||||
// Given a room with events in two timelines
|
||||
const room = new Room(ROOM_ID, mockClient, USER_ID, { timelineSupport: true });
|
||||
const timelineSet = room.getUnfilteredTimelineSet();
|
||||
const liveTimeline = room.getLiveTimeline();
|
||||
const oldTimeline = room.addTimeline();
|
||||
liveTimeline.setNeighbouringTimeline(oldTimeline, EventTimeline.BACKWARDS);
|
||||
oldTimeline.setNeighbouringTimeline(liveTimeline, EventTimeline.FORWARDS);
|
||||
|
||||
const oldEvents = createEvents(5);
|
||||
const liveEvents = createEvents(5);
|
||||
const [, , e3, e4, e5] = oldEvents;
|
||||
const [, e7, e8, e9, e10] = liveEvents;
|
||||
room.addLiveEvents(liveEvents);
|
||||
room.addEventsToTimeline(oldEvents, true, oldTimeline);
|
||||
|
||||
// And 2 windows over the timelines in this room
|
||||
const oldWindow = new TimelineWindow(mockClient, timelineSet);
|
||||
oldWindow.load(e5.getId(), 6);
|
||||
expect(idsOf(oldWindow.getEvents())).toEqual(idsOf([e5, e4, e3]));
|
||||
|
||||
const newWindow = new TimelineWindow(mockClient, timelineSet);
|
||||
newWindow.load(e9.getId(), 4);
|
||||
expect(idsOf(newWindow.getEvents())).toEqual(idsOf([e7, e8, e9, e10]));
|
||||
|
||||
// When I remove an event
|
||||
room.removeEvent(e8.getId()!);
|
||||
|
||||
// Then the affected timeline is shortened (because it would have
|
||||
// been too long with the removed event gone)
|
||||
expect(idsOf(newWindow.getEvents())).toEqual(idsOf([e7, e9, e10]));
|
||||
|
||||
// And the unaffected one is not
|
||||
expect(idsOf(oldWindow.getEvents())).toEqual(idsOf([e5, e4, e3]));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user