// AttentionDayService.spec.ts
import { AttentionDayService } from "./AttentionDayService";
import { TestWiring } from "../../wiring/TestWiring";
import { IAttentionDayRepository } from "../ports/secondary/IAttentionDayRepository";
import { IAttentionDay, KindOfAttentionDay } from "../models/IAttentionDay";
import { ValidationError } from "../models/ErrorTypes/ValidationError";
describe("AttentionDayService", () => {
let attentionDayRepository: IAttentionDayRepository;
let attentionDayService: AttentionDayService;
beforeAll(() => {
const wiring = new TestWiring();
const resolver = wiring.portResolver;
attentionDayRepository = {} as IAttentionDayRepository;
resolver.registerInstance("IAttentionDayRepository", () => attentionDayRepository);
attentionDayService = new AttentionDayService()
});
it("should call getById() from requestById()", async () => {
const attentionDay = {} as IAttentionDay;
attentionDayRepository.getById = jest.fn(_ => Promise.resolve(attentionDay));
const result = attentionDayService.requestById("abc");
expect(attentionDayRepository.getById).toHaveBeenCalledTimes(1);
expect(attentionDayRepository.getById).toHaveBeenCalledWith("abc");
await expect(result).resolves.toBe(attentionDay);
})
it("should call updateAttentionDay() from requestUpdateAttentionDay()", async () => {
const attentionDay = {
id: 12,
name: "Fake",
start: new Date(2011, 1, 1),
end: new Date(2011, 1, 1),
kind: KindOfAttentionDay.AttentionDay
} as IAttentionDay;
attentionDayRepository.updateAttentionDay = jest.fn(_ => Promise.resolve(attentionDay));
const result = attentionDayService.requestUpdateAttentionDay(attentionDay);
expect(attentionDayRepository.updateAttentionDay).toHaveBeenCalledTimes(1);
expect(attentionDayRepository.updateAttentionDay).toHaveBeenCalledWith(attentionDay);
await expect(result).resolves.toBe(attentionDay);
})
it("should call updateAttentionDay() from requestUpdateAttentionDay()", async () => {
const attentionDay = {
id: 12,
name: "InvalidAttentionDay",
start: new Date(2011, 2, 1),
end: new Date(2011, 1, 1),
kind: KindOfAttentionDay.AttentionDay
} as IAttentionDay;
attentionDayRepository.updateAttentionDay = jest.fn(_ => Promise.resolve(attentionDay));
await expect(attentionDayService.requestUpdateAttentionDay(attentionDay)).rejects.toThrow(ValidationError);
expect(attentionDayRepository.updateAttentionDay).toHaveBeenCalledTimes(0);
})
});
export {};
257000cookie-checkTypescript Jest Unit Test Example