Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit df6c53f

Browse files
author
Kerry
authored
include /test/stores in tsconfig (#8026)
* fix space store emits Signed-off-by: Kerry Archibald <[email protected]> * fix spacestore-test imports * fix export-test.tsx Signed-off-by: Kerry Archibald <[email protected]> * include test/utils to tsconfig Signed-off-by: Kerry Archibald <[email protected]> * fix types in SpaceStore-test Signed-off-by: Kerry Archibald <[email protected]> * fix ts issues in rest of test/stores Signed-off-by: Kerry Archibald <[email protected]> * include test/stores in tsconfig Signed-off-by: Kerry Archibald <[email protected]>
1 parent ceb2281 commit df6c53f

File tree

7 files changed

+83
-67
lines changed

7 files changed

+83
-67
lines changed

test/stores/SpaceStore-test.ts

Lines changed: 61 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17+
import { mocked } from 'jest-mock';
1718
import { EventType } from "matrix-js-sdk/src/@types/event";
1819
import { RoomMember } from "matrix-js-sdk/src/models/room-member";
1920
import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state";
2021
import { defer } from "matrix-js-sdk/src/utils";
22+
import { ClientEvent, RoomEvent, MatrixEvent } from 'matrix-js-sdk/src/matrix';
2123

2224
import "../skinned-sdk"; // Must be first for skinning to work
2325
import SpaceStore from "../../src/stores/spaces/SpaceStore";
@@ -101,8 +103,8 @@ describe("SpaceStore", () => {
101103
const viewRoom = roomId => defaultDispatcher.dispatch({ action: Action.ViewRoom, room_id: roomId }, true);
102104

103105
const run = async () => {
104-
client.getRoom.mockImplementation(roomId => rooms.find(room => room.roomId === roomId));
105-
client.getRoomUpgradeHistory.mockImplementation(roomId => [rooms.find(room => room.roomId === roomId)]);
106+
mocked(client).getRoom.mockImplementation(roomId => rooms.find(room => room.roomId === roomId));
107+
mocked(client).getRoomUpgradeHistory.mockImplementation(roomId => [rooms.find(room => room.roomId === roomId)]);
106108
await testUtils.setupAsyncStoreWithClient(store, client);
107109
jest.runOnlyPendingTimers();
108110
};
@@ -117,7 +119,7 @@ describe("SpaceStore", () => {
117119

118120
beforeEach(async () => {
119121
jest.runOnlyPendingTimers(); // run async dispatch
120-
client.getVisibleRooms.mockReturnValue(rooms = []);
122+
mocked(client).getVisibleRooms.mockReturnValue(rooms = []);
121123

122124
await SettingsStore.setValue("Spaces.enabledMetaSpaces", null, SettingLevel.DEVICE, {
123125
[MetaSpace.Home]: true,
@@ -318,7 +320,7 @@ describe("SpaceStore", () => {
318320
mkSpace(space3, [invite2]);
319321
mkSpace(space4, [room4, fav2, space2, space3]);
320322

321-
client.getRoom.mockImplementation(roomId => rooms.find(room => room.roomId === roomId));
323+
mocked(client).getRoom.mockImplementation(roomId => rooms.find(room => room.roomId === roomId));
322324

323325
[fav1, fav2, fav3].forEach(roomId => {
324326
client.getRoom(roomId).tags = {
@@ -329,7 +331,7 @@ describe("SpaceStore", () => {
329331
});
330332

331333
[invite1, invite2].forEach(roomId => {
332-
client.getRoom(roomId).getMyMembership.mockReturnValue("invite");
334+
mocked(client.getRoom(roomId)).getMyMembership.mockReturnValue("invite");
333335
});
334336

335337
// have dmPartner1 be in space1 with you
@@ -350,7 +352,7 @@ describe("SpaceStore", () => {
350352

351353
// room 2 claims to be a child of space2 and is so via a valid m.space.parent
352354
const cliRoom2 = client.getRoom(room2);
353-
cliRoom2.currentState.getStateEvents.mockImplementation(testUtils.mockStateEventImplementation([
355+
const room2MockStateEvents = testUtils.mockStateEventImplementation([
354356
mkEvent({
355357
event: true,
356358
type: EventType.SpaceParent,
@@ -359,36 +361,40 @@ describe("SpaceStore", () => {
359361
skey: space2,
360362
content: { via: [], canonical: true },
361363
ts: Date.now(),
362-
}),
363-
]));
364+
}) as MatrixEvent,
365+
]);
366+
mocked(cliRoom2.currentState).getStateEvents.mockImplementation(room2MockStateEvents);
364367
const cliSpace2 = client.getRoom(space2);
365-
cliSpace2.currentState.maySendStateEvent.mockImplementation((evType: string, userId: string) => {
366-
if (evType === EventType.SpaceChild) {
367-
return userId === client.getUserId();
368-
}
369-
return true;
370-
});
368+
mocked(cliSpace2.currentState).maySendStateEvent.mockImplementation(
369+
(evType: string, userId: string) => {
370+
if (evType === EventType.SpaceChild) {
371+
return userId === client.getUserId();
372+
}
373+
return true;
374+
});
371375

372376
// room 3 claims to be a child of space3 but is not due to invalid m.space.parent (permissions)
373377
const cliRoom3 = client.getRoom(room3);
374-
cliRoom3.currentState.getStateEvents.mockImplementation(testUtils.mockStateEventImplementation([
375-
mkEvent({
376-
event: true,
377-
type: EventType.SpaceParent,
378-
room: room3,
379-
user: client.getUserId(),
380-
skey: space3,
381-
content: { via: [], canonical: true },
382-
ts: Date.now(),
383-
}),
384-
]));
378+
mocked(cliRoom3.currentState).getStateEvents.mockImplementation(
379+
testUtils.mockStateEventImplementation([
380+
mkEvent({
381+
event: true,
382+
type: EventType.SpaceParent,
383+
room: room3,
384+
user: client.getUserId(),
385+
skey: space3,
386+
content: { via: [], canonical: true },
387+
ts: Date.now(),
388+
}),
389+
]));
385390
const cliSpace3 = client.getRoom(space3);
386-
cliSpace3.currentState.maySendStateEvent.mockImplementation((evType: string, userId: string) => {
387-
if (evType === EventType.SpaceChild) {
388-
return false;
389-
}
390-
return true;
391-
});
391+
mocked(cliSpace3.currentState).maySendStateEvent.mockImplementation(
392+
(evType: string, userId: string) => {
393+
if (evType === EventType.SpaceChild) {
394+
return false;
395+
}
396+
return true;
397+
});
392398

393399
await run();
394400
});
@@ -598,7 +604,7 @@ describe("SpaceStore", () => {
598604
expect(store.spacePanelSpaces).toStrictEqual([]);
599605
const space = mkSpace(space1);
600606
const prom = testUtils.emitPromise(store, UPDATE_TOP_LEVEL_SPACES);
601-
client.emit("Room", space);
607+
client.emit(ClientEvent.Room, space);
602608
await prom;
603609
expect(store.spacePanelSpaces).toStrictEqual([space]);
604610
expect(store.invitedSpaces).toStrictEqual([]);
@@ -611,7 +617,7 @@ describe("SpaceStore", () => {
611617
expect(store.spacePanelSpaces).toStrictEqual([space]);
612618
space.getMyMembership.mockReturnValue("leave");
613619
const prom = testUtils.emitPromise(store, UPDATE_TOP_LEVEL_SPACES);
614-
client.emit("Room.myMembership", space, "leave", "join");
620+
client.emit(RoomEvent.MyMembership, space, "leave", "join");
615621
await prom;
616622
expect(store.spacePanelSpaces).toStrictEqual([]);
617623
});
@@ -623,7 +629,7 @@ describe("SpaceStore", () => {
623629
const space = mkSpace(space1);
624630
space.getMyMembership.mockReturnValue("invite");
625631
const prom = testUtils.emitPromise(store, UPDATE_INVITED_SPACES);
626-
client.emit("Room", space);
632+
client.emit(ClientEvent.Room, space);
627633
await prom;
628634
expect(store.spacePanelSpaces).toStrictEqual([]);
629635
expect(store.invitedSpaces).toStrictEqual([space]);
@@ -638,7 +644,7 @@ describe("SpaceStore", () => {
638644
expect(store.invitedSpaces).toStrictEqual([space]);
639645
space.getMyMembership.mockReturnValue("join");
640646
const prom = testUtils.emitPromise(store, UPDATE_TOP_LEVEL_SPACES);
641-
client.emit("Room.myMembership", space, "join", "invite");
647+
client.emit(RoomEvent.MyMembership, space, "join", "invite");
642648
await prom;
643649
expect(store.spacePanelSpaces).toStrictEqual([space]);
644650
expect(store.invitedSpaces).toStrictEqual([]);
@@ -653,7 +659,7 @@ describe("SpaceStore", () => {
653659
expect(store.invitedSpaces).toStrictEqual([space]);
654660
space.getMyMembership.mockReturnValue("leave");
655661
const prom = testUtils.emitPromise(store, UPDATE_INVITED_SPACES);
656-
client.emit("Room.myMembership", space, "leave", "invite");
662+
client.emit(RoomEvent.MyMembership, space, "leave", "invite");
657663
await prom;
658664
expect(store.spacePanelSpaces).toStrictEqual([]);
659665
expect(store.invitedSpaces).toStrictEqual([]);
@@ -673,7 +679,7 @@ describe("SpaceStore", () => {
673679
const invite = mkRoom(invite1);
674680
invite.getMyMembership.mockReturnValue("invite");
675681
const prom = testUtils.emitPromise(store, space1);
676-
client.emit("Room", space);
682+
client.emit(ClientEvent.Room, space);
677683
await prom;
678684

679685
expect(store.spacePanelSpaces).toStrictEqual([space]);
@@ -705,11 +711,11 @@ describe("SpaceStore", () => {
705711
ts: Date.now(),
706712
});
707713
const spaceRoom = client.getRoom(spaceId);
708-
spaceRoom.currentState.getStateEvents.mockImplementation(
714+
mocked(spaceRoom.currentState).getStateEvents.mockImplementation(
709715
testUtils.mockStateEventImplementation([childEvent]),
710716
);
711717

712-
client.emit("RoomState.events", childEvent);
718+
client.emit(RoomStateEvent.Events, childEvent, spaceRoom.currentState, undefined);
713719
};
714720

715721
const addMember = (spaceId, user: RoomMember) => {
@@ -723,12 +729,12 @@ describe("SpaceStore", () => {
723729
ts: Date.now(),
724730
});
725731
const spaceRoom = client.getRoom(spaceId);
726-
spaceRoom.currentState.getStateEvents.mockImplementation(
732+
mocked(spaceRoom.currentState).getStateEvents.mockImplementation(
727733
testUtils.mockStateEventImplementation([memberEvent]),
728734
);
729-
spaceRoom.getMember.mockReturnValue(user);
735+
mocked(spaceRoom).getMember.mockReturnValue(user);
730736

731-
client.emit("RoomState.members", memberEvent);
737+
client.emit(RoomStateEvent.Members, memberEvent, spaceRoom.currentState, user);
732738
};
733739

734740
it('emits events for parent spaces when child room is added', async () => {
@@ -857,8 +863,8 @@ describe("SpaceStore", () => {
857863

858864
await run();
859865

860-
const deferred = defer<void>();
861-
(space.loadMembersIfNeeded as jest.Mock).mockImplementation(() => {
866+
const deferred = defer<boolean>();
867+
space.loadMembersIfNeeded.mockImplementation(() => {
862868
const event = mkEvent({
863869
event: true,
864870
type: EventType.RoomMember,
@@ -876,7 +882,7 @@ describe("SpaceStore", () => {
876882
});
877883

878884
client.emit(RoomStateEvent.Members, event, null, null);
879-
deferred.resolve();
885+
return deferred.resolve(true) as unknown as Promise<boolean>;
880886
});
881887

882888
spyDispatcher.mockClear();
@@ -1000,7 +1006,7 @@ describe("SpaceStore", () => {
10001006
mkSpace(space2, [room1, room2]);
10011007

10021008
const cliRoom2 = client.getRoom(room2);
1003-
cliRoom2.currentState.getStateEvents.mockImplementation(testUtils.mockStateEventImplementation([
1009+
mocked(cliRoom2.currentState).getStateEvents.mockImplementation(testUtils.mockStateEventImplementation([
10041010
mkEvent({
10051011
event: true,
10061012
type: EventType.SpaceParent,
@@ -1123,14 +1129,14 @@ describe("SpaceStore", () => {
11231129
// receive invite to space
11241130
const rootSpace = mkSpace(space1, [room1, room2, space2]);
11251131
rootSpace.getMyMembership.mockReturnValue("invite");
1126-
client.emit("Room", rootSpace);
1132+
client.emit(ClientEvent.Room, rootSpace);
11271133
jest.runOnlyPendingTimers();
11281134
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([rootSpace]);
11291135
expect(SpaceStore.instance.spacePanelSpaces).toStrictEqual([]);
11301136

11311137
// accept invite to space
11321138
rootSpace.getMyMembership.mockReturnValue("join");
1133-
client.emit("Room.myMembership", rootSpace, "join", "invite");
1139+
client.emit(RoomEvent.MyMembership, rootSpace, "join", "invite");
11341140
jest.runOnlyPendingTimers();
11351141
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
11361142
expect(SpaceStore.instance.spacePanelSpaces).toStrictEqual([rootSpace]);
@@ -1139,7 +1145,7 @@ describe("SpaceStore", () => {
11391145
expect(SpaceStore.instance.isRoomInSpace(space1, room1)).toBeFalsy();
11401146
const rootSpaceRoom1 = mkRoom(room1);
11411147
rootSpaceRoom1.getMyMembership.mockReturnValue("join");
1142-
client.emit("Room", rootSpaceRoom1);
1148+
client.emit(ClientEvent.Room, rootSpaceRoom1);
11431149
jest.runOnlyPendingTimers();
11441150
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
11451151
expect(SpaceStore.instance.spacePanelSpaces).toStrictEqual([rootSpace]);
@@ -1153,7 +1159,7 @@ describe("SpaceStore", () => {
11531159
expect(SpaceStore.instance.isRoomInSpace(space1, room2)).toBeFalsy();
11541160
const rootSpaceRoom2 = mkRoom(room2);
11551161
rootSpaceRoom2.getMyMembership.mockReturnValue("invite");
1156-
client.emit("Room", rootSpaceRoom2);
1162+
client.emit(ClientEvent.Room, rootSpaceRoom2);
11571163
jest.runOnlyPendingTimers();
11581164
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
11591165
expect(SpaceStore.instance.spacePanelSpaces).toStrictEqual([rootSpace]);
@@ -1181,7 +1187,7 @@ describe("SpaceStore", () => {
11811187
}
11821188
});
11831189
expect(SpaceStore.instance.getSpaceFilteredUserIds(space1).has(dm1Partner.userId)).toBeFalsy();
1184-
client.emit("RoomState.members", mkEvent({
1190+
const memberEvent = mkEvent({
11851191
event: true,
11861192
type: EventType.RoomMember,
11871193
content: {
@@ -1190,12 +1196,13 @@ describe("SpaceStore", () => {
11901196
skey: dm1Partner.userId,
11911197
user: dm1Partner.userId,
11921198
room: space1,
1193-
}));
1199+
});
1200+
client.emit(RoomStateEvent.Members, memberEvent, undefined, undefined);
11941201
jest.runOnlyPendingTimers();
11951202
expect(SpaceStore.instance.getSpaceFilteredUserIds(space1).has(dm1Partner.userId)).toBeTruthy();
11961203
const dm1Room = mkRoom(dm1);
11971204
dm1Room.getMyMembership.mockReturnValue("join");
1198-
client.emit("Room", dm1Room);
1205+
client.emit(ClientEvent.Room, dm1Room);
11991206
jest.runOnlyPendingTimers();
12001207
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
12011208
expect(SpaceStore.instance.spacePanelSpaces).toStrictEqual([rootSpace]);
@@ -1209,7 +1216,7 @@ describe("SpaceStore", () => {
12091216
const subspace = mkSpace(space2);
12101217
subspace.getMyMembership.mockReturnValue("join");
12111218
const prom = testUtils.emitPromise(SpaceStore.instance, space1);
1212-
client.emit("Room", subspace);
1219+
client.emit(ClientEvent.Room, subspace);
12131220
jest.runOnlyPendingTimers();
12141221
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
12151222
expect(SpaceStore.instance.spacePanelSpaces.map(r => r.roomId)).toStrictEqual([rootSpace.roomId]);

test/stores/notifications/RoomNotificationState-test.ts

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

1717
import { Room } from "matrix-js-sdk/src/models/room";
18+
import { MatrixEventEvent, MatrixEvent } from "matrix-js-sdk/src/matrix";
1819

1920
import "../../skinned-sdk";
2021
import { stubClient } from "../../test-utils";
@@ -28,16 +29,16 @@ describe("RoomNotificationState", () => {
2829
const client = MatrixClientPeg.get();
2930

3031
it("Updates on event decryption", () => {
31-
const testRoom = testUtils.mkStubRoom(client, "$aroomid", "Test room");
32+
const testRoom = testUtils.mkStubRoom("$aroomid", "Test room", client);
3233

3334
const roomNotifState = new RoomNotificationState(testRoom as any as Room);
3435
const listener = jest.fn();
3536
roomNotifState.addListener(NotificationStateEvents.Update, listener);
3637
const testEvent = {
3738
getRoomId: () => testRoom.roomId,
38-
};
39+
} as unknown as MatrixEvent;
3940
testRoom.getUnreadNotificationCount = jest.fn().mockReturnValue(1);
40-
client.emit("Event.decrypted", testEvent);
41+
client.emit(MatrixEventEvent.Decrypted, testEvent);
4142
expect(listener).toHaveBeenCalled();
4243
});
4344
});

test/stores/room-list/SpaceWatcher-test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
16+
import { mocked } from 'jest-mock';
1617

1718
import "../../skinned-sdk"; // Must be first for skinning to work
1819
import { SpaceWatcher } from "../../../src/stores/room-list/SpaceWatcher";
@@ -49,7 +50,7 @@ const space2 = "!space2:server";
4950
describe("SpaceWatcher", () => {
5051
stubClient();
5152
const store = SpaceStore.instance;
52-
const client = MatrixClientPeg.get();
53+
const client = mocked(MatrixClientPeg.get());
5354

5455
let rooms = [];
5556
const mkSpaceForRooms = (spaceId: string, children: string[] = []) => mkSpace(client, spaceId, rooms, children);

test/stores/room-list/filters/SpaceFilterCondition-test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ limitations under the License.
1515
*/
1616

1717
import { mocked } from 'jest-mock';
18+
import { Room } from "matrix-js-sdk/src/matrix";
1819

1920
import SettingsStore from "../../../../src/settings/SettingsStore";
2021
import { FILTER_CHANGED } from "../../../../src/stores/room-list/filters/IFilterCondition";

test/stores/room-list/previews/PollStartEventPreview-test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
import { MatrixEvent } from "matrix-js-sdk/src/matrix";
17+
import { MatrixEvent, MatrixClient } from "matrix-js-sdk/src/matrix";
1818
import { POLL_ANSWER, M_TEXT, M_POLL_KIND_DISCLOSED, M_POLL_START } from "matrix-events-sdk";
1919

2020
import { PollStartEventPreview } from "../../../../src/stores/room-list/previews/PollStartEventPreview";
2121
import { MatrixClientPeg } from "../../../../src/MatrixClientPeg";
2222

23-
MatrixClientPeg.matrixClient = {
23+
jest.spyOn(MatrixClientPeg, 'get').mockReturnValue({
2424
getUserId: () => "@me:example.com",
25-
};
25+
} as unknown as MatrixClient);
2626

2727
describe("PollStartEventPreview", () => {
2828
it("shows the question for a poll I created", async () => {

0 commit comments

Comments
 (0)