card-drop/tests/helpers/EffectHelper.test.ts

85 lines
No EOL
2.3 KiB
TypeScript

import EffectHelper from "../../src/helpers/EffectHelper";
import UserEffect from "../../src/database/entities/app/UserEffect";
jest.mock("../../src/database/entities/app/UserEffect");
describe("GenerateEffectEmbed", () => {
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
const result = await EffectHelper.GenerateEffectEmbed("userId", 1);
// Assert
expect(result).toMatchSnapshot();
});
test("GIVEN user has more than 1 page of effects, EXPECT pagination enabled", async () => {
const effects: any[] = [];
for (let i = 0; i < 15; i++) {
effects.push({
Name: "unclaimed",
Unused: 1,
});
}
// Arrange
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
effects,
15,
])
// Act
const result = await EffectHelper.GenerateEffectEmbed("userId", 1);
// Assert
expect(result).toMatchSnapshot();
});
test("GIVEN user is on a page other than 1, EXPECT pagination enabled", async () => {
const effects: any[] = [];
for (let i = 0; i < 15; i++) {
effects.push({
Name: "unclaimed",
Unused: 1,
});
}
// Arrange
(UserEffect.FetchAllByUserIdPaginated as jest.Mock).mockResolvedValue([
effects,
15,
])
// Act
const result = await EffectHelper.GenerateEffectEmbed("userId", 2);
// 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
const result = await EffectHelper.GenerateEffectEmbed("userId", 1);
// Assert
expect(result).toMatchSnapshot();
});
});