Skip to content

Commit 218e838

Browse files
committed
test: fix flaky user tests (@fehmer)
1 parent adb5b2b commit 218e838

File tree

1 file changed

+37
-37
lines changed

1 file changed

+37
-37
lines changed

backend/__tests__/__integration__/dal/user.spec.ts

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -126,22 +126,24 @@ describe("UserDal", () => {
126126

127127
it("isNameAvailable should correctly check if a username is available", async () => {
128128
// given
129-
const { uid: user1 } = await UserTestData.createUser({ name: "user1" });
130-
await UserTestData.createUser({ name: "user2" });
129+
const name1 = "user" + new ObjectId().toHexString();
130+
const name2 = "user" + new ObjectId().toHexString();
131+
const { uid: user1 } = await UserTestData.createUser({ name: name1 });
132+
await UserTestData.createUser({ name: name2 });
131133

132134
const testCases = [
133135
{
134-
name: "user1",
136+
name: name1,
135137
whosChecking: user1,
136138
expected: true,
137139
},
138140
{
139-
name: "USER1",
141+
name: name1.toUpperCase(),
140142
whosChecking: user1,
141143
expected: true,
142144
},
143145
{
144-
name: "user2",
146+
name: name2,
145147
whosChecking: user1,
146148
expected: false,
147149
},
@@ -156,8 +158,10 @@ describe("UserDal", () => {
156158

157159
it("updatename should not allow unavailable usernames", async () => {
158160
// given
159-
const user1 = await UserTestData.createUser({ name: "bob" });
160-
const user2 = await UserTestData.createUser({ name: "kevin" });
161+
const name1 = "user" + new ObjectId().toHexString();
162+
const name2 = "user" + new ObjectId().toHexString();
163+
const user1 = await UserTestData.createUser({ name: name1 });
164+
const user2 = await UserTestData.createUser({ name: name2 });
161165
const _decoy = await UserTestData.createUser();
162166

163167
// when, then
@@ -167,36 +171,40 @@ describe("UserDal", () => {
167171
});
168172

169173
it("same usernames (different casing) should be available only for the same user", async () => {
170-
const user1 = await UserTestData.createUser({ name: "bob" });
171-
const user2 = await UserTestData.createUser({ name: "kevin" });
174+
const name1 = "user" + new ObjectId().toHexString();
175+
const name2 = "user" + new ObjectId().toHexString();
176+
const user1 = await UserTestData.createUser({ name: name1 });
177+
const user2 = await UserTestData.createUser({ name: name2 });
172178

173-
await UserDAL.updateName(user1.uid, "BOB", user1.name);
179+
await UserDAL.updateName(user1.uid, name1.toUpperCase(), user1.name);
174180

175181
const updatedUser1 = await UserDAL.getUser(user1.uid, "test");
176182

177183
// when, then
178-
expect(updatedUser1.name).toBe("BOB");
184+
expect(updatedUser1.name).toBe(name1.toUpperCase());
179185

180186
await expect(
181-
UserDAL.updateName(user2.uid, "bob", user2.name)
187+
UserDAL.updateName(user2.uid, name1, user2.name)
182188
).rejects.toThrow("Username already taken");
183189
});
184190

185191
it("UserDAL.updateName should change the name of a user", async () => {
186192
// given
187-
const testUser = await UserTestData.createUser({ name: "bob" });
193+
const name = "user" + new ObjectId().toHexString();
194+
const renamed = "renamed" + new ObjectId().toHexString();
195+
const testUser = await UserTestData.createUser({ name: name });
188196

189197
// when
190-
await UserDAL.updateName(testUser.uid, "renamedTestUser", testUser.name);
198+
await UserDAL.updateName(testUser.uid, renamed, testUser.name);
191199

192200
// then
193201
const updatedUser = await UserDAL.getUser(testUser.uid, "test");
194-
expect(updatedUser.name).toBe("renamedTestUser");
202+
expect(updatedUser.name).toBe(renamed);
195203
});
196204

197205
it("clearPb should clear the personalBests of a user", async () => {
198206
// given
199-
const testUser = await UserTestData.createUser({ name: "bob" });
207+
const testUser = await UserTestData.createUser();
200208
await UserDAL.getUsersCollection().updateOne(
201209
{ uid: testUser.uid },
202210
{
@@ -233,7 +241,7 @@ describe("UserDal", () => {
233241

234242
it("autoBan should automatically ban after configured anticheat triggers", async () => {
235243
// given
236-
const testUser = await UserTestData.createUser({ name: "bob" });
244+
const testUser = await UserTestData.createUser();
237245

238246
// when
239247
Date.now = vi.fn(() => 0);
@@ -249,7 +257,7 @@ describe("UserDal", () => {
249257

250258
it("autoBan should not ban ban if triggered once", async () => {
251259
// given
252-
const testUser = await UserTestData.createUser({ name: "bob" });
260+
const testUser = await UserTestData.createUser();
253261

254262
// when
255263
Date.now = vi.fn(() => 0);
@@ -263,7 +271,7 @@ describe("UserDal", () => {
263271

264272
it("autoBan should correctly remove old anticheat triggers", async () => {
265273
// given
266-
const testUser = await UserTestData.createUser({ name: "bob" });
274+
const testUser = await UserTestData.createUser();
267275

268276
// when
269277
Date.now = vi.fn(() => 0);
@@ -1240,7 +1248,6 @@ describe("UserDal", () => {
12401248
};
12411249

12421250
let user = await UserTestData.createUser({
1243-
name: "bob",
12441251
xp: 100,
12451252
inbox: [rewardOne, rewardTwo, rewardThree, rewardFour],
12461253
});
@@ -1473,17 +1480,21 @@ describe("UserDal", () => {
14731480
});
14741481
describe("isDiscordIdAvailable", () => {
14751482
it("should return true for available discordId", async () => {
1476-
await expect(UserDAL.isDiscordIdAvailable("myId")).resolves.toBe(true);
1483+
const discordId = new ObjectId().toHexString();
1484+
await expect(UserDAL.isDiscordIdAvailable(discordId)).resolves.toBe(true);
14771485
});
14781486

14791487
it("should return false if discordId is taken", async () => {
14801488
// given
1489+
const discordId = new ObjectId().toHexString();
14811490
await UserTestData.createUser({
1482-
discordId: "myId",
1491+
discordId: discordId,
14831492
});
14841493

14851494
// when, then
1486-
await expect(UserDAL.isDiscordIdAvailable("myId")).resolves.toBe(false);
1495+
await expect(UserDAL.isDiscordIdAvailable(discordId)).resolves.toBe(
1496+
false
1497+
);
14871498
});
14881499
});
14891500
describe("updateLbMemory", () => {
@@ -1566,8 +1577,9 @@ describe("UserDal", () => {
15661577

15671578
it("increments bananas", async () => {
15681579
//GIVEN
1580+
const name = "user" + new ObjectId().toHexString();
15691581
const { uid } = await UserTestData.createUser({
1570-
name: "bob",
1582+
name,
15711583
bananas: 1,
15721584
personalBests: {
15731585
time: {
@@ -1584,7 +1596,7 @@ describe("UserDal", () => {
15841596
await UserDAL.incrementBananas(uid, 75);
15851597
const read = await UserDAL.getUser(uid, "read");
15861598
expect(read.bananas).toEqual(2);
1587-
expect(read.name).toEqual("bob");
1599+
expect(read.name).toEqual(name);
15881600

15891601
//NOT within 25% of PB
15901602
await UserDAL.incrementBananas(uid, 74);
@@ -1594,7 +1606,6 @@ describe("UserDal", () => {
15941606
it("ignores missing personalBests", async () => {
15951607
//GIVEN
15961608
const { uid } = await UserTestData.createUser({
1597-
name: "bob",
15981609
bananas: 1,
15991610
});
16001611

@@ -1608,7 +1619,6 @@ describe("UserDal", () => {
16081619
it("ignores missing personalBests time", async () => {
16091620
//GIVEN
16101621
const { uid } = await UserTestData.createUser({
1611-
name: "bob",
16121622
bananas: 1,
16131623
personalBests: {} as any,
16141624
});
@@ -1622,7 +1632,6 @@ describe("UserDal", () => {
16221632
it("ignores missing personalBests time 60", async () => {
16231633
//GIVEN
16241634
const { uid } = await UserTestData.createUser({
1625-
name: "bob",
16261635
bananas: 1,
16271636
personalBests: { time: {} } as any,
16281637
});
@@ -1636,7 +1645,6 @@ describe("UserDal", () => {
16361645
it("ignores empty personalBests time 60", async () => {
16371646
//GIVEN
16381647
const { uid } = await UserTestData.createUser({
1639-
name: "bob",
16401648
bananas: 1,
16411649
personalBests: { time: { "60": [] } } as any,
16421650
});
@@ -1650,7 +1658,6 @@ describe("UserDal", () => {
16501658
it("should increment missing bananas", async () => {
16511659
//GIVEN
16521660
const { uid } = await UserTestData.createUser({
1653-
name: "bob",
16541661
personalBests: { time: { "60": [{ wpm: 100 }] } } as any,
16551662
});
16561663

@@ -1869,7 +1876,6 @@ describe("UserDal", () => {
18691876
it("addFavoriteQuote success", async () => {
18701877
// given
18711878
const { uid } = await UserTestData.createUser({
1872-
name: "bob",
18731879
favoriteQuotes: {
18741880
english: ["1"],
18751881
german: ["2"],
@@ -1882,9 +1888,6 @@ describe("UserDal", () => {
18821888

18831889
// then
18841890
const read = await UserDAL.getUser(uid, "read");
1885-
expect(read.name).toEqual("bob");
1886-
expect(read).not.toHaveProperty("tmp");
1887-
18881891
expect(read.favoriteQuotes).toStrictEqual({
18891892
english: ["1", "4"],
18901893
german: ["2"],
@@ -1895,7 +1898,6 @@ describe("UserDal", () => {
18951898
it("should not add a quote twice", async () => {
18961899
// given
18971900
const { uid } = await UserTestData.createUser({
1898-
name: "bob",
18991901
favoriteQuotes: {
19001902
english: ["1", "3", "4"],
19011903
german: ["2"],
@@ -1906,8 +1908,6 @@ describe("UserDal", () => {
19061908

19071909
// then
19081910
const read = await UserDAL.getUser(uid, "read");
1909-
expect(read.name).toEqual("bob");
1910-
expect(read).not.toHaveProperty("tmp");
19111911

19121912
expect(read.favoriteQuotes).toStrictEqual({
19131913
english: ["1", "3", "4"],

0 commit comments

Comments
 (0)