Apply prettier formatting

This commit is contained in:
Michael Weimann 2022-12-12 12:24:14 +01:00
parent 1cac306093
commit 526645c791
No known key found for this signature in database
GPG key ID: 53F535A266BB9584
1576 changed files with 65385 additions and 62478 deletions

View file

@ -15,12 +15,12 @@ limitations under the License.
*/
import { EventEmitter } from "events";
import { mocked } from 'jest-mock';
import { mocked } from "jest-mock";
import { EventType } from "matrix-js-sdk/src/@types/event";
import { RoomMember } from "matrix-js-sdk/src/models/room-member";
import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state";
import { defer } from "matrix-js-sdk/src/utils";
import { ClientEvent, RoomEvent, MatrixEvent } from 'matrix-js-sdk/src/matrix';
import { ClientEvent, RoomEvent, MatrixEvent } from "matrix-js-sdk/src/matrix";
import SpaceStore from "../../src/stores/spaces/SpaceStore";
import {
@ -68,14 +68,14 @@ const space2 = "!space2:server";
const space3 = "!space3:server";
const space4 = "!space4:server";
const getUserIdForRoomId = jest.fn(roomId => {
const getUserIdForRoomId = jest.fn((roomId) => {
return {
[dm1]: dm1Partner.userId,
[dm2]: dm2Partner.userId,
[dm3]: dm3Partner.userId,
}[roomId];
});
const getDMRoomsForUserId = jest.fn(userId => {
const getDMRoomsForUserId = jest.fn((userId) => {
switch (userId) {
case dm1Partner.userId:
return [dm1];
@ -100,11 +100,13 @@ describe("SpaceStore", () => {
let rooms = [];
const mkRoom = (roomId: string) => testUtils.mkRoom(client, roomId, rooms);
const mkSpace = (spaceId: string, children: string[] = []) => testUtils.mkSpace(client, spaceId, rooms, children);
const viewRoom = roomId => defaultDispatcher.dispatch({ action: Action.ViewRoom, room_id: roomId }, true);
const viewRoom = (roomId) => defaultDispatcher.dispatch({ action: Action.ViewRoom, room_id: roomId }, true);
const run = async () => {
mocked(client).getRoom.mockImplementation(roomId => rooms.find(room => room.roomId === roomId));
mocked(client).getRoomUpgradeHistory.mockImplementation(roomId => [rooms.find(room => room.roomId === roomId)]);
mocked(client).getRoom.mockImplementation((roomId) => rooms.find((room) => room.roomId === roomId));
mocked(client).getRoomUpgradeHistory.mockImplementation((roomId) => [
rooms.find((room) => room.roomId === roomId),
]);
await testUtils.setupAsyncStoreWithClient(store, client);
jest.runOnlyPendingTimers();
};
@ -119,7 +121,7 @@ describe("SpaceStore", () => {
beforeEach(async () => {
jest.runOnlyPendingTimers(); // run async dispatch
mocked(client).getVisibleRooms.mockReturnValue(rooms = []);
mocked(client).getVisibleRooms.mockReturnValue((rooms = []));
await SettingsStore.setValue("Spaces.enabledMetaSpaces", null, SettingLevel.DEVICE, {
[MetaSpace.Home]: true,
@ -157,18 +159,14 @@ describe("SpaceStore", () => {
mkSpace("!space1:server");
mkSpace("!space2:server");
mkSpace("!company:server", [
mkSpace("!company_dept1:server", [
mkSpace("!company_dept1_group1:server").roomId,
]).roomId,
mkSpace("!company_dept1:server", [mkSpace("!company_dept1_group1:server").roomId]).roomId,
mkSpace("!company_dept2:server").roomId,
]);
await run();
expect(store.spacePanelSpaces.map(r => r.roomId).sort()).toStrictEqual([
"!space1:server",
"!space2:server",
"!company:server",
].sort());
expect(store.spacePanelSpaces.map((r) => r.roomId).sort()).toStrictEqual(
["!space1:server", "!space2:server", "!company:server"].sort(),
);
expect(store.invitedSpaces).toStrictEqual([]);
expect(store.getChildRooms("!space1:server")).toStrictEqual([]);
@ -195,19 +193,16 @@ describe("SpaceStore", () => {
mkSpace("!space1:server");
mkSpace("!space2:server");
mkSpace("!company:server", [
mkSpace("!company_dept1:server", [
mkSpace("!company_dept1_group1:server", [subspace.roomId]).roomId,
]).roomId,
mkSpace("!company_dept1:server", [mkSpace("!company_dept1_group1:server", [subspace.roomId]).roomId])
.roomId,
mkSpace("!company_dept2:server", [subspace.roomId]).roomId,
subspace.roomId,
]);
await run();
expect(store.spacePanelSpaces.map(r => r.roomId).sort()).toStrictEqual([
"!space1:server",
"!space2:server",
"!company:server",
].sort());
expect(store.spacePanelSpaces.map((r) => r.roomId).sort()).toStrictEqual(
["!space1:server", "!space2:server", "!company:server"].sort(),
);
expect(store.invitedSpaces).toStrictEqual([]);
expect(store.getChildRooms("!space1:server")).toStrictEqual([]);
@ -231,16 +226,10 @@ describe("SpaceStore", () => {
});
it("handles full cycles", async () => {
mkSpace("!a:server", [
mkSpace("!b:server", [
mkSpace("!c:server", [
"!a:server",
]).roomId,
]).roomId,
]);
mkSpace("!a:server", [mkSpace("!b:server", [mkSpace("!c:server", ["!a:server"]).roomId]).roomId]);
await run();
expect(store.spacePanelSpaces.map(r => r.roomId)).toStrictEqual(["!a:server"]);
expect(store.spacePanelSpaces.map((r) => r.roomId)).toStrictEqual(["!a:server"]);
expect(store.invitedSpaces).toStrictEqual([]);
expect(store.getChildRooms("!a:server")).toStrictEqual([]);
@ -252,16 +241,10 @@ describe("SpaceStore", () => {
});
it("handles partial cycles", async () => {
mkSpace("!b:server", [
mkSpace("!a:server", [
mkSpace("!c:server", [
"!a:server",
]).roomId,
]).roomId,
]);
mkSpace("!b:server", [mkSpace("!a:server", [mkSpace("!c:server", ["!a:server"]).roomId]).roomId]);
await run();
expect(store.spacePanelSpaces.map(r => r.roomId)).toStrictEqual(["!b:server"]);
expect(store.spacePanelSpaces.map((r) => r.roomId)).toStrictEqual(["!b:server"]);
expect(store.invitedSpaces).toStrictEqual([]);
expect(store.getChildRooms("!b:server")).toStrictEqual([]);
@ -275,16 +258,11 @@ describe("SpaceStore", () => {
it("handles partial cycles with additional spaces coming off them", async () => {
// TODO this test should be failing right now
mkSpace("!a:server", [
mkSpace("!b:server", [
mkSpace("!c:server", [
"!a:server",
mkSpace("!d:server").roomId,
]).roomId,
]).roomId,
mkSpace("!b:server", [mkSpace("!c:server", ["!a:server", mkSpace("!d:server").roomId]).roomId]).roomId,
]);
await run();
expect(store.spacePanelSpaces.map(r => r.roomId)).toStrictEqual(["!a:server"]);
expect(store.spacePanelSpaces.map((r) => r.roomId)).toStrictEqual(["!a:server"]);
expect(store.invitedSpaces).toStrictEqual([]);
expect(store.getChildRooms("!a:server")).toStrictEqual([]);
@ -313,16 +291,30 @@ describe("SpaceStore", () => {
describe("test fixture 1", () => {
beforeEach(async () => {
[fav1, fav2, fav3, dm1, dm2, dm3, orphan1, orphan2, invite1, invite2, room1, room2, room3, room4]
.forEach(mkRoom);
[
fav1,
fav2,
fav3,
dm1,
dm2,
dm3,
orphan1,
orphan2,
invite1,
invite2,
room1,
room2,
room3,
room4,
].forEach(mkRoom);
mkSpace(space1, [fav1, room1]);
mkSpace(space2, [fav1, fav2, fav3, room1]);
mkSpace(space3, [invite2]);
mkSpace(space4, [room4, fav2, space2, space3]);
mocked(client).getRoom.mockImplementation(roomId => rooms.find(room => room.roomId === roomId));
mocked(client).getRoom.mockImplementation((roomId) => rooms.find((room) => room.roomId === roomId));
[fav1, fav2, fav3].forEach(roomId => {
[fav1, fav2, fav3].forEach((roomId) => {
client.getRoom(roomId).tags = {
"m.favourite": {
order: 0.5,
@ -330,21 +322,21 @@ describe("SpaceStore", () => {
};
});
[invite1, invite2].forEach(roomId => {
[invite1, invite2].forEach((roomId) => {
mocked(client.getRoom(roomId)).getMyMembership.mockReturnValue("invite");
});
// have dmPartner1 be in space1 with you
const mySpace1Member = new RoomMember(space1, testUserId);
mySpace1Member.membership = "join";
(rooms.find(r => r.roomId === space1).getMembers as jest.Mock).mockReturnValue([
(rooms.find((r) => r.roomId === space1).getMembers as jest.Mock).mockReturnValue([
mySpace1Member,
dm1Partner,
]);
// have dmPartner2 be in space2 with you
const mySpace2Member = new RoomMember(space2, testUserId);
mySpace2Member.membership = "join";
(rooms.find(r => r.roomId === space2).getMembers as jest.Mock).mockReturnValue([
(rooms.find((r) => r.roomId === space2).getMembers as jest.Mock).mockReturnValue([
mySpace2Member,
dm2Partner,
]);
@ -371,7 +363,8 @@ describe("SpaceStore", () => {
return userId === client.getUserId();
}
return true;
});
},
);
// room 3 claims to be a child of space3 but is not due to invalid m.space.parent (permissions)
const cliRoom3 = client.getRoom(room3);
@ -386,7 +379,8 @@ describe("SpaceStore", () => {
content: { via: [], canonical: true },
ts: Date.now(),
}),
]));
]),
);
const cliSpace3 = client.getRoom(space3);
mocked(cliSpace3.currentState).maySendStateEvent.mockImplementation(
(evType: string, userId: string) => {
@ -394,12 +388,13 @@ describe("SpaceStore", () => {
return false;
}
return true;
});
},
);
await run();
});
describe('isRoomInSpace()', () => {
describe("isRoomInSpace()", () => {
it("home space contains orphaned rooms", () => {
expect(store.isRoomInSpace(MetaSpace.Home, orphan1)).toBeTruthy();
expect(store.isRoomInSpace(MetaSpace.Home, orphan2)).toBeTruthy();
@ -425,12 +420,10 @@ describe("SpaceStore", () => {
expect(store.isRoomInSpace(MetaSpace.Home, invite2)).toBeTruthy();
});
it(
"all rooms space does contain rooms/low priority even if they are also shown in a space",
async () => {
await setShowAllRooms(true);
expect(store.isRoomInSpace(MetaSpace.Home, room1)).toBeTruthy();
});
it("all rooms space does contain rooms/low priority even if they are also shown in a space", async () => {
await setShowAllRooms(true);
expect(store.isRoomInSpace(MetaSpace.Home, room1)).toBeTruthy();
});
it("favourites space does contain favourites even if they are also shown in a space", async () => {
expect(store.isRoomInSpace(MetaSpace.Favourites, fav1)).toBeTruthy();
@ -528,7 +521,7 @@ describe("SpaceStore", () => {
expect(store.isRoomInSpace(space3, dm3)).toBeFalsy();
});
it('uses cached aggregated rooms', () => {
it("uses cached aggregated rooms", () => {
const rooms = store.getSpaceFilteredRoomIds(space4, true);
expect(store.isRoomInSpace(space4, fav1)).toBeTruthy();
expect(store.isRoomInSpace(space4, fav3)).toBeTruthy();
@ -540,26 +533,44 @@ describe("SpaceStore", () => {
});
it("dms are only added to Notification States for only the People Space", async () => {
[dm1, dm2, dm3].forEach(d => {
expect(store.getNotificationState(MetaSpace.People)
.rooms.map(r => r.roomId).includes(d)).toBeTruthy();
[dm1, dm2, dm3].forEach((d) => {
expect(
store
.getNotificationState(MetaSpace.People)
.rooms.map((r) => r.roomId)
.includes(d),
).toBeTruthy();
});
[space1, space2, space3, MetaSpace.Home, MetaSpace.Orphans, MetaSpace.Favourites].forEach(s => {
[dm1, dm2, dm3].forEach(d => {
expect(store.getNotificationState(s).rooms.map(r => r.roomId).includes(d)).toBeFalsy();
[space1, space2, space3, MetaSpace.Home, MetaSpace.Orphans, MetaSpace.Favourites].forEach((s) => {
[dm1, dm2, dm3].forEach((d) => {
expect(
store
.getNotificationState(s)
.rooms.map((r) => r.roomId)
.includes(d),
).toBeFalsy();
});
});
});
it("orphan rooms are added to Notification States for only the Home Space", async () => {
await setShowAllRooms(false);
[orphan1, orphan2].forEach(d => {
expect(store.getNotificationState(MetaSpace.Home)
.rooms.map(r => r.roomId).includes(d)).toBeTruthy();
[orphan1, orphan2].forEach((d) => {
expect(
store
.getNotificationState(MetaSpace.Home)
.rooms.map((r) => r.roomId)
.includes(d),
).toBeTruthy();
});
[space1, space2, space3].forEach(s => {
[orphan1, orphan2].forEach(d => {
expect(store.getNotificationState(s).rooms.map(r => r.roomId).includes(d)).toBeFalsy();
[space1, space2, space3].forEach((s) => {
[orphan1, orphan2].forEach((d) => {
expect(
store
.getNotificationState(s)
.rooms.map((r) => r.roomId)
.includes(d),
).toBeFalsy();
});
});
});
@ -569,23 +580,83 @@ describe("SpaceStore", () => {
// [fav1, fav2, fav3].forEach(d => {
// expect(store.getNotificationState(HOME_SPACE).rooms.map(r => r.roomId).includes(d)).toBeTruthy();
// });
expect(store.getNotificationState(space1).rooms.map(r => r.roomId).includes(fav1)).toBeTruthy();
expect(store.getNotificationState(space1).rooms.map(r => r.roomId).includes(fav2)).toBeFalsy();
expect(store.getNotificationState(space1).rooms.map(r => r.roomId).includes(fav3)).toBeFalsy();
expect(store.getNotificationState(space2).rooms.map(r => r.roomId).includes(fav1)).toBeTruthy();
expect(store.getNotificationState(space2).rooms.map(r => r.roomId).includes(fav2)).toBeTruthy();
expect(store.getNotificationState(space2).rooms.map(r => r.roomId).includes(fav3)).toBeTruthy();
expect(store.getNotificationState(space3).rooms.map(r => r.roomId).includes(fav1)).toBeFalsy();
expect(store.getNotificationState(space3).rooms.map(r => r.roomId).includes(fav2)).toBeFalsy();
expect(store.getNotificationState(space3).rooms.map(r => r.roomId).includes(fav3)).toBeFalsy();
expect(
store
.getNotificationState(space1)
.rooms.map((r) => r.roomId)
.includes(fav1),
).toBeTruthy();
expect(
store
.getNotificationState(space1)
.rooms.map((r) => r.roomId)
.includes(fav2),
).toBeFalsy();
expect(
store
.getNotificationState(space1)
.rooms.map((r) => r.roomId)
.includes(fav3),
).toBeFalsy();
expect(
store
.getNotificationState(space2)
.rooms.map((r) => r.roomId)
.includes(fav1),
).toBeTruthy();
expect(
store
.getNotificationState(space2)
.rooms.map((r) => r.roomId)
.includes(fav2),
).toBeTruthy();
expect(
store
.getNotificationState(space2)
.rooms.map((r) => r.roomId)
.includes(fav3),
).toBeTruthy();
expect(
store
.getNotificationState(space3)
.rooms.map((r) => r.roomId)
.includes(fav1),
).toBeFalsy();
expect(
store
.getNotificationState(space3)
.rooms.map((r) => r.roomId)
.includes(fav2),
).toBeFalsy();
expect(
store
.getNotificationState(space3)
.rooms.map((r) => r.roomId)
.includes(fav3),
).toBeFalsy();
});
it("other rooms are added to Notification States for all spaces containing the room exc Home", () => {
// XXX: All rooms space is forcibly enabled, as part of a future PR test Home space better
// expect(store.getNotificationState(HOME_SPACE).rooms.map(r => r.roomId).includes(room1)).toBeFalsy();
expect(store.getNotificationState(space1).rooms.map(r => r.roomId).includes(room1)).toBeTruthy();
expect(store.getNotificationState(space2).rooms.map(r => r.roomId).includes(room1)).toBeTruthy();
expect(store.getNotificationState(space3).rooms.map(r => r.roomId).includes(room1)).toBeFalsy();
expect(
store
.getNotificationState(space1)
.rooms.map((r) => r.roomId)
.includes(room1),
).toBeTruthy();
expect(
store
.getNotificationState(space2)
.rooms.map((r) => r.roomId)
.includes(room1),
).toBeTruthy();
expect(
store
.getNotificationState(space3)
.rooms.map((r) => r.roomId)
.includes(room1),
).toBeFalsy();
});
it("honours m.space.parent if sender has permission in parent space", () => {
@ -690,10 +761,24 @@ describe("SpaceStore", () => {
expect(store.isRoomInSpace(MetaSpace.Home, invite1)).toBeTruthy();
});
describe('onRoomsUpdate()', () => {
describe("onRoomsUpdate()", () => {
beforeEach(() => {
[fav1, fav2, fav3, dm1, dm2, dm3, orphan1, orphan2, invite1, invite2, room1, room2, room3, room4]
.forEach(mkRoom);
[
fav1,
fav2,
fav3,
dm1,
dm2,
dm3,
orphan1,
orphan2,
invite1,
invite2,
room1,
room2,
room3,
room4,
].forEach(mkRoom);
mkSpace(space2, [fav1, fav2, fav3, room1]);
mkSpace(space3, [invite2]);
mkSpace(space4, [room4, fav2, space2, space3]);
@ -725,7 +810,7 @@ describe("SpaceStore", () => {
room: spaceId,
user: client.getUserId(),
skey: user.userId,
content: { membership: 'join' },
content: { membership: "join" },
ts: Date.now(),
});
const spaceRoom = client.getRoom(spaceId);
@ -737,11 +822,11 @@ describe("SpaceStore", () => {
client.emit(RoomStateEvent.Members, memberEvent, spaceRoom.currentState, user);
};
it('emits events for parent spaces when child room is added', async () => {
it("emits events for parent spaces when child room is added", async () => {
await run();
const room5 = mkRoom('!room5:server');
const emitSpy = jest.spyOn(store, 'emit').mockClear();
const room5 = mkRoom("!room5:server");
const emitSpy = jest.spyOn(store, "emit").mockClear();
// add room5 into space2
addChildRoom(space2, room5.roomId);
@ -753,9 +838,9 @@ describe("SpaceStore", () => {
expect(emitSpy).not.toHaveBeenCalledWith(space3);
});
it('updates rooms state when a child room is added', async () => {
it("updates rooms state when a child room is added", async () => {
await run();
const room5 = mkRoom('!room5:server');
const room5 = mkRoom("!room5:server");
expect(store.isRoomInSpace(space2, room5.roomId)).toBeFalsy();
expect(store.isRoomInSpace(space4, room5.roomId)).toBeFalsy();
@ -770,10 +855,10 @@ describe("SpaceStore", () => {
expect(store.isRoomInSpace(space1, room5.roomId)).toBeTruthy();
});
it('emits events for parent spaces when a member is added', async () => {
it("emits events for parent spaces when a member is added", async () => {
await run();
const emitSpy = jest.spyOn(store, 'emit').mockClear();
const emitSpy = jest.spyOn(store, "emit").mockClear();
// add into space2
addMember(space2, dm1Partner);
@ -785,7 +870,7 @@ describe("SpaceStore", () => {
expect(emitSpy).not.toHaveBeenCalledWith(space3);
});
it('updates users state when a member is added', async () => {
it("updates users state when a member is added", async () => {
await run();
expect(store.getSpaceFilteredUserIds(space2)).toEqual(new Set([]));
@ -805,9 +890,7 @@ describe("SpaceStore", () => {
beforeEach(async () => {
mkRoom(room1); // not a space
mkSpace(space1, [
mkSpace(space2).roomId,
]);
mkSpace(space1, [mkSpace(space2).roomId]);
mkSpace(space3).getMyMembership.mockReturnValue("invite");
await run();
store.setActiveSpace(MetaSpace.Home);
@ -873,7 +956,7 @@ describe("SpaceStore", () => {
user: dm1Partner.userId,
room: space1,
});
space.getMember.mockImplementation(userId => {
space.getMember.mockImplementation((userId) => {
if (userId === dm1Partner.userId) {
const member = new RoomMember(space1, dm1Partner.userId);
member.membership = "join";
@ -924,7 +1007,7 @@ describe("SpaceStore", () => {
mkSpace(space2, [room2]);
await run();
dispatcherRef = defaultDispatcher.register(payload => {
dispatcherRef = defaultDispatcher.register((payload) => {
if (payload.action === Action.ViewRoom || payload.action === Action.ViewHomePage) {
currentRoom = payload.room_id || null;
}
@ -1006,17 +1089,19 @@ describe("SpaceStore", () => {
mkSpace(space2, [room1, room2]);
const cliRoom2 = client.getRoom(room2);
mocked(cliRoom2.currentState).getStateEvents.mockImplementation(testUtils.mockStateEventImplementation([
mkEvent({
event: true,
type: EventType.SpaceParent,
room: room2,
user: testUserId,
skey: space2,
content: { via: [], canonical: true },
ts: Date.now(),
}),
]));
mocked(cliRoom2.currentState).getStateEvents.mockImplementation(
testUtils.mockStateEventImplementation([
mkEvent({
event: true,
type: EventType.SpaceParent,
room: room2,
user: testUserId,
skey: space2,
content: { via: [], canonical: true },
ts: Date.now(),
}),
]),
);
await run();
});
@ -1174,11 +1259,8 @@ describe("SpaceStore", () => {
myRootSpaceMember.membership = "join";
const rootSpaceFriend = new RoomMember(space1, dm1Partner.userId);
rootSpaceFriend.membership = "join";
rootSpace.getMembers.mockReturnValue([
myRootSpaceMember,
rootSpaceFriend,
]);
rootSpace.getMember.mockImplementation(userId => {
rootSpace.getMembers.mockReturnValue([myRootSpaceMember, rootSpaceFriend]);
rootSpace.getMember.mockImplementation((userId) => {
switch (userId) {
case testUserId:
return myRootSpaceMember;
@ -1219,7 +1301,7 @@ describe("SpaceStore", () => {
client.emit(ClientEvent.Room, subspace);
jest.runOnlyPendingTimers();
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
expect(SpaceStore.instance.spacePanelSpaces.map(r => r.roomId)).toStrictEqual([rootSpace.roomId]);
expect(SpaceStore.instance.spacePanelSpaces.map((r) => r.roomId)).toStrictEqual([rootSpace.roomId]);
await prom;
});