Skip to content

Commit 865e79f

Browse files
authored
add retries to make unit tests a little less flaky (#1388)
* add retries to make unit tests a little less flaky * format
1 parent 99c463a commit 865e79f

File tree

3 files changed

+79
-69
lines changed

3 files changed

+79
-69
lines changed

server/tests/unit/api/user.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ describe("User API", () => {
5252
});
5353

5454
afterEach(async () => {
55-
await forcedUser.destroy();
56-
await testUser.destroy();
57-
await socialUser.destroy();
55+
await forcedUser?.destroy();
56+
await testUser?.destroy();
57+
await socialUser?.destroy();
5858
});
5959

6060
describe("GET /user", () => {

server/tests/unit/roommanager.spec.ts

+51-39
Original file line numberDiff line numberDiff line change
@@ -26,46 +26,58 @@ describe("Room manager", () => {
2626
});
2727

2828
describe("creating a room", () => {
29-
it("should never save null to permissions or user role columns", async () => {
30-
const roomName = "foo-76kdf943";
31-
await roommanager.createRoom({ name: roomName, isTemporary: false, title: "asdf1234" });
32-
const room = await DbRoom.findOne({ where: { name: roomName } });
33-
expect(room).not.toBeNull();
34-
expect(room?.permissions).not.toBeNull();
35-
expect(room?.permissions).toBeInstanceOf(Array);
36-
// eslint-disable-next-line vitest/no-conditional-in-test
37-
if (Array.isArray(room?.permissions)) {
38-
let roles = room?.permissions.map(p => p[0]);
39-
expect(roles).not.toContain(Role.Administrator);
40-
expect(roles).not.toContain(Role.Owner);
41-
}
42-
expect(room?.["role-admin"]).toBeInstanceOf(Array);
43-
expect(room?.["role-mod"]).toBeInstanceOf(Array);
44-
expect(room?.["role-trusted"]).toBeInstanceOf(Array);
45-
await room?.destroy();
46-
});
29+
it(
30+
"should never save null to permissions or user role columns",
31+
async () => {
32+
const roomName = "foo-76kdf943";
33+
await roommanager.createRoom({
34+
name: roomName,
35+
isTemporary: false,
36+
title: "asdf1234",
37+
});
38+
const room = await DbRoom.findOne({ where: { name: roomName } });
39+
expect(room).not.toBeNull();
40+
expect(room?.permissions).not.toBeNull();
41+
expect(room?.permissions).toBeInstanceOf(Array);
42+
// eslint-disable-next-line vitest/no-conditional-in-test
43+
if (Array.isArray(room?.permissions)) {
44+
let roles = room?.permissions.map(p => p[0]);
45+
expect(roles).not.toContain(Role.Administrator);
46+
expect(roles).not.toContain(Role.Owner);
47+
}
48+
expect(room?.["role-admin"]).toBeInstanceOf(Array);
49+
expect(room?.["role-mod"]).toBeInstanceOf(Array);
50+
expect(room?.["role-trusted"]).toBeInstanceOf(Array);
51+
await room?.destroy();
52+
},
53+
{ retry: 2 }
54+
);
4755

48-
it("should be able to load saved settings from database", async () => {
49-
const roomName = "foo-a3b5e323";
50-
await roommanager.createRoom({
51-
name: roomName,
52-
isTemporary: false,
53-
title: "asdf1234",
54-
description: "0987asdf",
55-
visibility: Visibility.Unlisted,
56-
queueMode: QueueMode.Vote,
57-
});
58-
const room = await DbRoom.findOne({ where: { name: roomName } });
59-
expect(room).not.toBeNull();
60-
expect(room).toMatchObject({
61-
name: roomName,
62-
title: "asdf1234",
63-
description: "0987asdf",
64-
visibility: Visibility.Unlisted,
65-
queueMode: QueueMode.Vote,
66-
});
67-
await room?.destroy();
68-
});
56+
it(
57+
"should be able to load saved settings from database",
58+
async () => {
59+
const roomName = "foo-a3b5e323";
60+
await roommanager.createRoom({
61+
name: roomName,
62+
isTemporary: false,
63+
title: "asdf1234",
64+
description: "0987asdf",
65+
visibility: Visibility.Unlisted,
66+
queueMode: QueueMode.Vote,
67+
});
68+
const room = await DbRoom.findOne({ where: { name: roomName } });
69+
expect(room).not.toBeNull();
70+
expect(room).toMatchObject({
71+
name: roomName,
72+
title: "asdf1234",
73+
description: "0987asdf",
74+
visibility: Visibility.Unlisted,
75+
queueMode: QueueMode.Vote,
76+
});
77+
await room?.destroy();
78+
},
79+
{ retry: 2 }
80+
);
6981
});
7082

7183
describe("loading from redis", () => {

server/tests/unit/storage.spec.ts

+25-27
Original file line numberDiff line numberDiff line change
@@ -204,33 +204,31 @@ describe("Storage: Room Spec", () => {
204204
expect(room?.grants).toEqual(new permissions.Grants());
205205
});
206206

207-
it("should save and load userRoles correctly", async () => {
208-
let userRoles = new Map([
209-
[2, new Set([1, 2, 3])],
210-
[3, new Set([4])],
211-
[4, new Set([8, 9])],
212-
]);
213-
await storage.saveRoom(new Room({ name: "example", userRoles }));
214-
215-
const wait = new Promise(resolve => setTimeout(resolve, 200));
216-
await wait;
217-
218-
let room = await storage.getRoomByName("example");
219-
expect(room?.userRoles).toEqual(userRoles);
220-
221-
userRoles = new Map([
222-
[2, new Set([1, 3])],
223-
[3, new Set([4, 7])],
224-
[4, new Set([8])],
225-
]);
226-
await storage.updateRoom({ name: "example", userRoles });
227-
228-
const wait2 = new Promise(resolve => setTimeout(resolve, 200));
229-
await wait2;
230-
231-
room = await storage.getRoomByName("example");
232-
expect(room?.userRoles).toEqual(userRoles);
233-
});
207+
it(
208+
"should save and load userRoles correctly",
209+
async () => {
210+
let userRoles = new Map([
211+
[2, new Set([1, 2, 3])],
212+
[3, new Set([4])],
213+
[4, new Set([8, 9])],
214+
]);
215+
await storage.saveRoom(new Room({ name: "example", userRoles }));
216+
217+
let room = await storage.getRoomByName("example");
218+
expect(room?.userRoles).toEqual(userRoles);
219+
220+
userRoles = new Map([
221+
[2, new Set([1, 3])],
222+
[3, new Set([4, 7])],
223+
[4, new Set([8])],
224+
]);
225+
await storage.updateRoom({ name: "example", userRoles });
226+
227+
room = await storage.getRoomByName("example");
228+
expect(room?.userRoles).toEqual(userRoles);
229+
},
230+
{ retry: 2 }
231+
);
234232
});
235233

236234
describe("Storage: CachedVideos Spec", () => {

0 commit comments

Comments
 (0)