2025-02-03 18:24:27 +00:00
|
|
|
import EffectHelper from "../../src/helpers/EffectHelper";
|
|
|
|
import UserEffect from "../../src/database/entities/app/UserEffect";
|
|
|
|
|
|
|
|
jest.mock("../../src/database/entities/app/UserEffect");
|
|
|
|
|
2025-02-08 18:45:39 +00:00
|
|
|
describe("GenerateEffectListEmbed", () => {
|
2025-02-03 18:24:27 +00:00
|
|
|
test("GIVEN user has an effect, EXPECT detailed embed to be returned", async () => {
|
|
|
|
// Arrange
|
|
|
|
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
|
|
|
|
[
|
|
|
|
{
|
|
|
|
Name: "unclaimed",
|
|
|
|
Unused: 1,
|
|
|
|
}
|
|
|
|
],
|
|
|
|
1,
|
|
|
|
]);
|
|
|
|
|
|
|
|
// Act
|
2025-02-08 18:45:39 +00:00
|
|
|
const result = await EffectHelper.GenerateEffectListEmbed("userId", 1);
|
2025-02-03 18:24:27 +00:00
|
|
|
|
|
|
|
// Assert
|
|
|
|
expect(result).toMatchSnapshot();
|
|
|
|
});
|
|
|
|
|
|
|
|
test("GIVEN user has more than 1 page of effects, EXPECT pagination enabled", async () => {
|
|
|
|
const effects: {
|
|
|
|
Name: string,
|
|
|
|
Unused: number,
|
|
|
|
}[] = [];
|
|
|
|
|
|
|
|
for (let i = 0; i < 15; i++) {
|
|
|
|
effects.push({
|
|
|
|
Name: "unclaimed",
|
|
|
|
Unused: 1,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
|
|
|
|
effects,
|
|
|
|
15,
|
|
|
|
]);
|
|
|
|
|
|
|
|
// Act
|
2025-02-08 18:45:39 +00:00
|
|
|
const result = await EffectHelper.GenerateEffectListEmbed("userId", 1);
|
2025-02-03 18:24:27 +00:00
|
|
|
|
|
|
|
// Assert
|
|
|
|
expect(result).toMatchSnapshot();
|
|
|
|
});
|
|
|
|
|
|
|
|
test("GIVEN user is on a page other than 1, EXPECT pagination enabled", async () => {
|
|
|
|
const effects: {
|
|
|
|
Name: string,
|
|
|
|
Unused: number,
|
|
|
|
}[] = [];
|
|
|
|
|
|
|
|
for (let i = 0; i < 15; i++) {
|
|
|
|
effects.push({
|
|
|
|
Name: "unclaimed",
|
|
|
|
Unused: 1,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
|
|
|
|
effects,
|
|
|
|
15,
|
|
|
|
]);
|
|
|
|
|
|
|
|
// Act
|
2025-02-08 18:45:39 +00:00
|
|
|
const result = await EffectHelper.GenerateEffectListEmbed("userId", 2);
|
2025-02-03 18:24:27 +00:00
|
|
|
|
|
|
|
// Assert
|
|
|
|
expect(result).toMatchSnapshot();
|
|
|
|
});
|
|
|
|
|
|
|
|
test("GIVEN user does NOT have an effect, EXPECT empty embed to be returned", async () => {
|
|
|
|
// Arrange
|
|
|
|
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
|
|
|
|
[],
|
|
|
|
0,
|
|
|
|
]);
|
|
|
|
|
|
|
|
// Act
|
2025-02-08 18:45:39 +00:00
|
|
|
const result = await EffectHelper.GenerateEffectListEmbed("userId", 1);
|
2025-02-03 18:24:27 +00:00
|
|
|
|
|
|
|
// Assert
|
|
|
|
expect(result).toMatchSnapshot();
|
|
|
|
});
|
|
|
|
|
|
|
|
test("GIVEN there is an active effect, EXPECT field added", async () => {
|
|
|
|
// Arrange
|
|
|
|
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
|
|
|
|
[
|
|
|
|
{
|
|
|
|
Name: "unclaimed",
|
|
|
|
Unused: 1,
|
|
|
|
}
|
|
|
|
],
|
|
|
|
1,
|
|
|
|
]);
|
|
|
|
|
|
|
|
(UserEffect.FetchActiveEffectByUserId as jest.Mock).mockResolvedValue({
|
|
|
|
Name: "unclaimed",
|
|
|
|
WhenExpires: new Date(1738174052),
|
|
|
|
});
|
|
|
|
|
|
|
|
// Act
|
2025-02-08 18:45:39 +00:00
|
|
|
const result = await EffectHelper.GenerateEffectListEmbed("userId", 1);
|
2025-02-03 18:24:27 +00:00
|
|
|
|
|
|
|
// Assert
|
|
|
|
expect(result).toMatchSnapshot();
|
|
|
|
});
|
2025-02-08 18:45:39 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
describe("GenerateEffectBuyEmbed", () => {
|
|
|
|
test.todo("GIVEN Effect Details are not found, EXPECT error");
|
|
|
|
|
|
|
|
test.todo("GIVEN user is not in database, EXPECT blank user created");
|
|
|
|
|
|
|
|
test.todo("GIVEN user does not have enough currency, EXPECT error");
|
|
|
|
|
|
|
|
test.todo("GIVEN user does have enough currency, EXPECT embed returned");
|
|
|
|
|
|
|
|
test.todo("GIVEN disabled boolean is true, EXPECT buttons to be disabled");
|
2025-02-03 18:24:27 +00:00
|
|
|
});
|