Create effects concept #402

Merged
Vylpes merged 9 commits from feature/378-effects-concept into develop 2024-11-09 21:31:11 +00:00
3 changed files with 72 additions and 9 deletions
Showing only changes of commit e28618d7a0 - Show all commits

View file

@ -1,3 +1,4 @@
jest.setTimeout(1 * 1000); // 1 second
jest.resetModules();
jest.resetAllMocks();
jest.useFakeTimers("modern");

View file

@ -1,4 +1,3 @@
import AppDataSource from "../../../../src/database/dataSources/appDataSource";
import UserEffect from "../../../../src/database/entities/app/UserEffect";
let userEffect: UserEffect;

View file

@ -31,23 +31,86 @@ describe("AddEffectToUserInventory", () => {
});
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("GIVEN effect is in database", () => {
describe("GIVEN effect.WhenExpires is undefined", () => {
test.todo("EXPECT false returned");
describe("GIVEN now is before effect.WhenExpires", () => {
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.todo("EXPECT false returned");
test("EXPECT false returned", () => {
expect(result).toBe(false);
});
});
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 effect to be saved");