Create effects concept #402
3 changed files with 72 additions and 9 deletions
|
@ -1,3 +1,4 @@
|
||||||
jest.setTimeout(1 * 1000); // 1 second
|
jest.setTimeout(1 * 1000); // 1 second
|
||||||
jest.resetModules();
|
jest.resetModules();
|
||||||
jest.resetAllMocks();
|
jest.resetAllMocks();
|
||||||
|
jest.useFakeTimers("modern");
|
|
@ -1,4 +1,3 @@
|
||||||
import AppDataSource from "../../../../src/database/dataSources/appDataSource";
|
|
||||||
import UserEffect from "../../../../src/database/entities/app/UserEffect";
|
import UserEffect from "../../../../src/database/entities/app/UserEffect";
|
||||||
|
|
||||||
let userEffect: UserEffect;
|
let userEffect: UserEffect;
|
||||||
|
|
|
@ -31,23 +31,86 @@ describe("AddEffectToUserInventory", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("GIVEN effect is not in database", () => {
|
describe("GIVEN effect is not in database", () => {
|
||||||
test.todo("EXPECT effect to be created");
|
beforeAll(async () => {
|
||||||
|
UserEffect.FetchOneByUserIdAndName = jest.fn().mockResolvedValue(null);
|
||||||
|
UserEffect.prototype.Save = jest.fn();
|
||||||
|
|
||||||
test.todo("EXPECT effect to be saved");
|
await EffectHelper.AddEffectToUserInventory("userId", "name", 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("EXPECT effect to be saved", () => {
|
||||||
|
expect(UserEffect.prototype.Save).toHaveBeenCalledTimes(1);
|
||||||
|
expect(UserEffect.prototype.Save).toHaveBeenCalledWith(UserEffect, expect.any(UserEffect));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("UseEffect", () => {
|
describe("UseEffect", () => {
|
||||||
describe("GIVEN effect is in database", () => {
|
describe("GIVEN effect is in database", () => {
|
||||||
describe("GIVEN effect.WhenExpires is undefined", () => {
|
describe("GIVEN now is before effect.WhenExpires", () => {
|
||||||
test.todo("EXPECT false returned");
|
let result: boolean | undefined;
|
||||||
|
|
||||||
|
// nowMock < whenExpires
|
||||||
|
const nowMock = new Date(2024, 11, 3, 13, 30);
|
||||||
|
const whenExpires = new Date(2024, 11, 3, 14, 0);
|
||||||
|
|
||||||
|
const userEffect = {
|
||||||
|
Unused: 1,
|
||||||
|
WhenExpires: whenExpires,
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
jest.setSystemTime(nowMock);
|
||||||
|
|
||||||
|
UserEffect.FetchOneByUserIdAndName = jest.fn().mockResolvedValue(userEffect);
|
||||||
|
|
||||||
|
result = await EffectHelper.UseEffect("userId", "name", new Date());
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("GIVEN now is before effect.WhenExpires", () => {
|
test("EXPECT false returned", () => {
|
||||||
test.todo("EXPECT false returned");
|
expect(result).toBe(false);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("GIVEN currently used effect is inactive", () => {
|
describe("GIVEN currently used effect is inactive", () => {
|
||||||
|
let result: boolean | undefined;
|
||||||
|
|
||||||
|
// nowMock > whenExpires
|
||||||
|
const nowMock = new Date(2024, 11, 3, 13, 30);
|
||||||
|
const whenExpires = new Date(2024, 11, 3, 13, 0);
|
||||||
|
const whenExpiresNew = new Date(2024, 11, 3, 15, 0);
|
||||||
|
|
||||||
|
const userEffect = {
|
||||||
|
Unused: 1,
|
||||||
|
WhenExpires: whenExpires,
|
||||||
|
UseEffect: jest.fn(),
|
||||||
|
Save: jest.fn(),
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
jest.setSystemTime(nowMock);
|
||||||
|
|
||||||
|
UserEffect.FetchOneByUserIdAndName = jest.fn().mockResolvedValue(userEffect);
|
||||||
|
|
||||||
|
result = await EffectHelper.UseEffect("userId", "name", whenExpiresNew);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("EXPECT UseEffect to be called", () => {
|
||||||
|
expect(userEffect.UseEffect).toHaveReturnedTimes(1);
|
||||||
|
expect(userEffect.UseEffect).toHaveBeenCalledWith(whenExpiresNew);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("EXPECT effect to be saved", () => {
|
||||||
|
expect(userEffect.Save).toHaveBeenCalledTimes(1);
|
||||||
|
expect(userEffect.Save).toHaveBeenCalledWith(UserEffect, userEffect);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("EXPECT true returned", () => {
|
||||||
|
expect(result).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("GIVEN effect.WhenExpires is null", () => {
|
||||||
test.todo("EXPECT UseEffect to be called");
|
test.todo("EXPECT UseEffect to be called");
|
||||||
|
|
||||||
test.todo("EXPECT effect to be saved");
|
test.todo("EXPECT effect to be saved");
|
||||||
|
|
Loading…
Reference in a new issue