Skip to content

Commit b186d79

Browse files
authored
Fix jest/valid-expects lints (#3586)
1 parent e82b5fe commit b186d79

11 files changed

+66
-49
lines changed

.eslintrc.js

-3
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,6 @@ module.exports = {
6666
// Disabled tests are a reality for now but as soon as all of the xits are
6767
// eliminated, we should enforce this.
6868
"jest/no-disabled-tests": "off",
69-
// TODO: There are many tests with invalid expects that should be fixed,
70-
// https://github.com/matrix-org/matrix-js-sdk/issues/2976
71-
"jest/valid-expect": "off",
7269
// Also treat "oldBackendOnly" as a test function.
7370
// Used in some crypto tests.
7471
"jest/no-standalone-expect": [

spec/integ/matrix-client-event-timeline.spec.ts

+26-4
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ describe("getEventTimeline support", function () {
248248
return startClient(httpBackend, client).then(function () {
249249
const room = client.getRoom(roomId)!;
250250
const timelineSet = room!.getTimelineSets()[0];
251-
expect(client.getEventTimeline(timelineSet, "event")).rejects.toBeTruthy();
251+
return expect(client.getEventTimeline(timelineSet, "event")).rejects.toBeTruthy();
252252
});
253253
});
254254

@@ -260,7 +260,18 @@ describe("getEventTimeline support", function () {
260260
return startClient(httpBackend, client).then(() => {
261261
const room = client.getRoom(roomId)!;
262262
const timelineSet = room!.getTimelineSets()[0];
263-
expect(client.getEventTimeline(timelineSet, "event")).rejects.toBeFalsy();
263+
httpBackend.when("GET", `/rooms/${encodeURIComponent(roomId)}/context/event`).respond(200, () => ({
264+
event: {
265+
event_id: "event",
266+
},
267+
events_after: [],
268+
events_before: [],
269+
state: [],
270+
}));
271+
return Promise.all([
272+
expect(client.getEventTimeline(timelineSet, "event")).resolves.toBeTruthy(),
273+
httpBackend.flushAllExpected(),
274+
]);
264275
});
265276
});
266277

@@ -271,7 +282,7 @@ describe("getEventTimeline support", function () {
271282

272283
return startClient(httpBackend, client).then(function () {
273284
const timelineSet = new EventTimelineSet(undefined);
274-
expect(client.getEventTimeline(timelineSet, "event")).rejects.toBeTruthy();
285+
return expect(client.getEventTimeline(timelineSet, "event")).rejects.toBeTruthy();
275286
});
276287
});
277288

@@ -778,7 +789,18 @@ describe("MatrixClient event timelines", function () {
778789
return startClient(httpBackend, client).then(() => {
779790
const room = client.getRoom(roomId)!;
780791
const timelineSet = room.getTimelineSets()[0];
781-
expect(client.getLatestTimeline(timelineSet)).rejects.toBeFalsy();
792+
httpBackend.when("GET", `/rooms/${encodeURIComponent(roomId)}/context/event`).respond(200, () => ({
793+
event: {
794+
event_id: "event",
795+
},
796+
events_after: [],
797+
events_before: [],
798+
state: [],
799+
}));
800+
return Promise.all([
801+
expect(client.getEventTimeline(timelineSet, "event")).resolves.toBeTruthy(),
802+
httpBackend.flushAllExpected(),
803+
]);
782804
});
783805
});
784806

spec/integ/sliding-sync.spec.ts

+12-11
Original file line numberDiff line numberDiff line change
@@ -1161,11 +1161,6 @@ describe("SlidingSync", () => {
11611161
httpBackend!.when("POST", syncUrl).check(pushTxn).respond(200, { pos: "f" }); // missing txn_id
11621162
await httpBackend!.flushAllExpected();
11631163

1164-
// attach rejection handlers now else if we do it later Jest treats that as an unhandled rejection
1165-
// which is a fail.
1166-
expect(failPromise).rejects.toEqual(gotTxnIds[0]);
1167-
expect(failPromise2).rejects.toEqual(gotTxnIds[1]);
1168-
11691164
const okPromise = slidingSync.setListRanges("a", [[0, 20]]);
11701165
let txnId: string | undefined;
11711166
httpBackend!
@@ -1180,8 +1175,12 @@ describe("SlidingSync", () => {
11801175
txn_id: txnId,
11811176
};
11821177
});
1183-
await httpBackend!.flushAllExpected();
1184-
await okPromise;
1178+
await Promise.all([
1179+
expect(failPromise).rejects.toEqual(gotTxnIds[0]),
1180+
expect(failPromise2).rejects.toEqual(gotTxnIds[1]),
1181+
httpBackend!.flushAllExpected(),
1182+
okPromise,
1183+
]);
11851184

11861185
expect(txnId).toBeDefined();
11871186
});
@@ -1200,7 +1199,6 @@ describe("SlidingSync", () => {
12001199

12011200
// attach rejection handlers now else if we do it later Jest treats that as an unhandled rejection
12021201
// which is a fail.
1203-
expect(A).rejects.toEqual(gotTxnIds[0]);
12041202

12051203
const C = slidingSync.setListRanges("a", [[0, 20]]);
12061204
let pendingC = true;
@@ -1217,9 +1215,12 @@ describe("SlidingSync", () => {
12171215
txn_id: gotTxnIds[1],
12181216
};
12191217
});
1220-
await httpBackend!.flushAllExpected();
1221-
// A is rejected, see above
1222-
expect(B).resolves.toEqual(gotTxnIds[1]); // B is resolved
1218+
await Promise.all([
1219+
expect(A).rejects.toEqual(gotTxnIds[0]),
1220+
httpBackend!.flushAllExpected(),
1221+
// A is rejected, see above
1222+
expect(B).resolves.toEqual(gotTxnIds[1]), // B is resolved
1223+
]);
12231224
expect(pendingC).toBe(true); // C is pending still
12241225
});
12251226
it("should do nothing for unknown txn_ids", async () => {

spec/unit/login.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ describe("refreshToken", () => {
121121
body: { errcode: "M_UNRECOGNIZED" },
122122
});
123123

124-
expect(client.refreshToken("initial_refresh_token")).rejects.toMatchObject({ errcode: "M_UNRECOGNIZED" });
124+
await expect(client.refreshToken("initial_refresh_token")).rejects.toMatchObject({ errcode: "M_UNRECOGNIZED" });
125125
});
126126

127127
it("re-raises non-M_UNRECOGNIZED exceptions from /v3", async () => {
@@ -132,7 +132,7 @@ describe("refreshToken", () => {
132132
throw new Error("/v1/refresh unexpectedly called");
133133
});
134134

135-
expect(client.refreshToken("initial_refresh_token")).rejects.toMatchObject({ httpStatus: 429 });
135+
await expect(client.refreshToken("initial_refresh_token")).rejects.toMatchObject({ httpStatus: 429 });
136136
});
137137

138138
it("re-raises non-M_UNRECOGNIZED exceptions from /v1", async () => {
@@ -144,6 +144,6 @@ describe("refreshToken", () => {
144144
});
145145
fetchMock.postOnce(client.http.getUrl("/refresh", undefined, ClientPrefix.V1).toString(), 429);
146146

147-
expect(client.refreshToken("initial_refresh_token")).rejects.toMatchObject({ httpStatus: 429 });
147+
await expect(client.refreshToken("initial_refresh_token")).rejects.toMatchObject({ httpStatus: 429 });
148148
});
149149
});

spec/unit/oidc/register.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ describe("registerOidcClient()", () => {
6666
fetchMockJest.post(registrationEndpoint, {
6767
status: 500,
6868
});
69-
expect(() => registerOidcClient(delegatedAuthConfig, clientName, baseUrl)).rejects.toThrow(
69+
await expect(() => registerOidcClient(delegatedAuthConfig, clientName, baseUrl)).rejects.toThrow(
7070
OidcError.DynamicRegistrationFailed,
7171
);
7272
});
@@ -77,7 +77,7 @@ describe("registerOidcClient()", () => {
7777
// no clientId in response
7878
body: "{}",
7979
});
80-
expect(() => registerOidcClient(delegatedAuthConfig, clientName, baseUrl)).rejects.toThrow(
80+
await expect(() => registerOidcClient(delegatedAuthConfig, clientName, baseUrl)).rejects.toThrow(
8181
OidcError.DynamicRegistrationInvalid,
8282
);
8383
});

spec/unit/rendezvous/ecdhv2.spec.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ describe("ECDHv2", function () {
9696

9797
expect(aliceChecksum).toEqual(bobChecksum);
9898

99-
expect(alice.connect()).rejects.toThrow();
99+
await expect(alice.connect()).rejects.toThrow();
100100

101101
await alice.cancel(RendezvousFailureReason.Unknown);
102102
await bob.cancel(RendezvousFailureReason.Unknown);
@@ -120,9 +120,9 @@ describe("ECDHv2", function () {
120120

121121
alice.close();
122122

123-
expect(alice.connect()).rejects.toThrow();
124-
expect(alice.send({})).rejects.toThrow();
125-
expect(alice.receive()).rejects.toThrow();
123+
await expect(alice.connect()).rejects.toThrow();
124+
await expect(alice.send({})).rejects.toThrow();
125+
await expect(alice.receive()).rejects.toThrow();
126126

127127
await alice.cancel(RendezvousFailureReason.Unknown);
128128
await bob.cancel(RendezvousFailureReason.Unknown);
@@ -146,10 +146,10 @@ describe("ECDHv2", function () {
146146

147147
// send a message without encryption
148148
await aliceTransport.send({ iv: "dummy", ciphertext: "dummy" });
149-
expect(bob.receive()).rejects.toThrow();
150149

151150
await alice.cancel(RendezvousFailureReason.Unknown);
152151
await bob.cancel(RendezvousFailureReason.Unknown);
152+
await expect(bob.receive()).rejects.toThrow();
153153
});
154154

155155
it("ciphertext before set up", async function () {
@@ -164,9 +164,8 @@ describe("ECDHv2", function () {
164164

165165
await bobTransport.send({ iv: "dummy", ciphertext: "dummy" });
166166

167-
expect(alice.receive()).rejects.toThrow();
168-
169167
await alice.cancel(RendezvousFailureReason.Unknown);
168+
await expect(alice.receive()).rejects.toThrow();
170169
});
171170
});
172171
});

spec/unit/rendezvous/rendezvous.spec.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ describe("Rendezvous", function () {
172172

173173
const cancelPromise = aliceRz.cancel(RendezvousFailureReason.UserDeclined);
174174
await httpBackend.flush("");
175-
expect(cancelPromise).resolves.toBeUndefined();
175+
await expect(cancelPromise).resolves.toBeUndefined();
176176
httpBackend.verifyNoOutstandingExpectation();
177177
httpBackend.verifyNoOutstandingRequests();
178178

@@ -603,7 +603,7 @@ describe("Rendezvous", function () {
603603

604604
it("device not online within timeout", async function () {
605605
const { aliceRz } = await completeLogin({});
606-
expect(aliceRz.verifyNewDeviceOnExistingDevice(1000)).rejects.toThrow();
606+
await expect(aliceRz.verifyNewDeviceOnExistingDevice(1000)).rejects.toThrow();
607607
});
608608

609609
it("device appears online within timeout", async function () {
@@ -627,7 +627,7 @@ describe("Rendezvous", function () {
627627
getFingerprint: () => "bbbb",
628628
};
629629
}, 1500);
630-
expect(aliceRz.verifyNewDeviceOnExistingDevice(1000)).rejects.toThrow();
630+
await expect(aliceRz.verifyNewDeviceOnExistingDevice(1000)).rejects.toThrow();
631631
});
632632

633633
it("mismatched device key", async function () {
@@ -636,6 +636,6 @@ describe("Rendezvous", function () {
636636
getFingerprint: () => "XXXX",
637637
},
638638
});
639-
expect(aliceRz.verifyNewDeviceOnExistingDevice(1000)).rejects.toThrow(/different key/);
639+
await expect(aliceRz.verifyNewDeviceOnExistingDevice(1000)).rejects.toThrow(/different key/);
640640
});
641641
});

spec/unit/rendezvous/simpleHttpTransport.spec.ts

+11-11
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ describe("SimpleHttpRendezvousTransport", function () {
9595
httpBackend.verifyNoOutstandingExpectation();
9696
}
9797
}
98-
it("should throw an error when no server available", function () {
98+
it("should throw an error when no server available", async function () {
9999
const client = makeMockClient({ userId: "@alice:example.com", deviceId: "DEVICEID", msc3886Enabled: false });
100100
const simpleHttpTransport = new MSC3886SimpleHttpRendezvousTransport({ client, fetchFn });
101-
expect(simpleHttpTransport.send({})).rejects.toThrow("Invalid rendezvous URI");
101+
await expect(simpleHttpTransport.send({})).rejects.toThrow("Invalid rendezvous URI");
102102
});
103103

104104
it("POST to fallback server", async function () {
@@ -130,15 +130,14 @@ describe("SimpleHttpRendezvousTransport", function () {
130130
fetchFn,
131131
});
132132
const prom = simpleHttpTransport.send({});
133-
expect(prom).rejects.toThrow();
134133
httpBackend.when("POST", "https://fallbackserver/rz").response = {
135134
body: null,
136135
response: {
137136
statusCode: 201,
138137
headers: {},
139138
},
140139
};
141-
await httpBackend.flush("");
140+
await Promise.all([expect(prom).rejects.toThrow(), httpBackend.flush("")]);
142141
});
143142

144143
it("POST with absolute path response", async function () {
@@ -364,7 +363,7 @@ describe("SimpleHttpRendezvousTransport", function () {
364363
fallbackRzServer: "https://fallbackserver/rz",
365364
fetchFn,
366365
});
367-
expect(simpleHttpTransport.details()).rejects.toThrow();
366+
await expect(simpleHttpTransport.details()).rejects.toThrow();
368367
});
369368

370369
it("send after cancelled", async function () {
@@ -375,7 +374,7 @@ describe("SimpleHttpRendezvousTransport", function () {
375374
fetchFn,
376375
});
377376
await simpleHttpTransport.cancel(RendezvousFailureReason.UserDeclined);
378-
expect(simpleHttpTransport.send({})).resolves.toBeUndefined();
377+
await expect(simpleHttpTransport.send({})).resolves.toBeUndefined();
379378
});
380379

381380
it("receive before ready", async function () {
@@ -385,7 +384,7 @@ describe("SimpleHttpRendezvousTransport", function () {
385384
fallbackRzServer: "https://fallbackserver/rz",
386385
fetchFn,
387386
});
388-
expect(simpleHttpTransport.receive()).rejects.toThrow();
387+
await expect(simpleHttpTransport.receive()).rejects.toThrow();
389388
});
390389

391390
it("404 failure callback", async function () {
@@ -398,15 +397,17 @@ describe("SimpleHttpRendezvousTransport", function () {
398397
onFailure,
399398
});
400399

401-
expect(simpleHttpTransport.send({ foo: "baa" })).resolves.toBeUndefined();
402400
httpBackend.when("POST", "https://fallbackserver/rz").response = {
403401
body: null,
404402
response: {
405403
statusCode: 404,
406404
headers: {},
407405
},
408406
};
409-
await httpBackend.flush("", 1);
407+
await Promise.all([
408+
expect(simpleHttpTransport.send({ foo: "baa" })).resolves.toBeUndefined(),
409+
httpBackend.flush("", 1),
410+
]);
410411
expect(onFailure).toHaveBeenCalledWith(RendezvousFailureReason.Unknown);
411412
});
412413

@@ -438,15 +439,14 @@ describe("SimpleHttpRendezvousTransport", function () {
438439
}
439440
{
440441
// GET with 404 to simulate expiry
441-
expect(simpleHttpTransport.receive()).resolves.toBeUndefined();
442442
httpBackend.when("GET", "https://fallbackserver/rz/123").response = {
443443
body: { foo: "baa" },
444444
response: {
445445
statusCode: 404,
446446
headers: {},
447447
},
448448
};
449-
await httpBackend.flush("");
449+
await Promise.all([expect(simpleHttpTransport.receive()).resolves.toBeUndefined(), httpBackend.flush("")]);
450450
expect(onFailure).toHaveBeenCalledWith(RendezvousFailureReason.Expired);
451451
}
452452
});

spec/unit/stores/indexeddb.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ describe("IndexedDBStore", () => {
278278
workerFactory: () => worker,
279279
});
280280
await store.startup();
281-
await expect(store.destroy()).resolves;
281+
await store.destroy();
282282
expect(terminate).toHaveBeenCalled();
283283
});
284284
});

spec/unit/utils.spec.ts

-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ import { mkMessage } from "../test-utils/test-utils";
3838
import { makeBeaconEvent } from "../test-utils/beacon";
3939
import { ReceiptType } from "../../src/@types/read_receipts";
4040

41-
// TODO: Fix types throughout
42-
4341
describe("utils", function () {
4442
describe("encodeParams", function () {
4543
it("should url encode and concat with &s", function () {

spec/unit/webrtc/call.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1607,7 +1607,7 @@ describe("Call", function () {
16071607
it("throws when there is no error listener", async () => {
16081608
call.off(CallEvent.Error, errorListener);
16091609

1610-
expect(call.placeVoiceCall()).rejects.toThrow();
1610+
await expect(call.placeVoiceCall()).rejects.toThrow();
16111611
});
16121612

16131613
describe("hasPeerConnection()", () => {

0 commit comments

Comments
 (0)