import { Test, TestingModule } from "@nestjs/testing"; import { ExperiencesService } from "./experiences.service"; import { SkillsService } from "@/skills/skills.service"; import experiencesDataset from "@/experiences/experiences.dataset"; import skillsDataset from "@/skills/skills.dataset"; describe("ExperiencesService", () => { let service: ExperiencesService; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ExperiencesService, SkillsService], }).compile(); jest.spyOn(experiencesDataset, "getData").mockImplementation(() => [ { name: "Employer A", city: "City A", url: "https://example.com/", jobTitle: "Tester", startDate: new Date(2023, 0), endDate: new Date(2023, 1), description: `Description of work`, skills: [ { category: "Testing", }, ], }, { name: "Employer B", city: "City B", url: "https://example.com/", jobTitle: "Developer", startDate: new Date(2023, 1), endDate: new Date(2023, 2), description: `Description of work`, skills: [ { category: "Programming", }, ], }, ]); jest.spyOn(skillsDataset, "getData").mockImplementation(() => [ { name: "Writing tests", description: "Writing tests", category: "Testing", }, { name: "TDD", description: "Test Driven Development", category: "Testing", }, { name: "OOP", description: "Object Orientated Programming", category: "Programming style", }, ]); service = module.get(ExperiencesService); }); it("should be defined", () => { expect(service).toBeDefined(); }); describe("getMany method", () => { it("should be defined", () => { expect(service.getMany).toBeDefined(); }); it("should return an array", () => { expect(Array.isArray(service.getMany())).toBe(true); }); it("should return 2 entries", () => { expect(service.getMany().length).toBe(2); }); it("should return 1 entries with 2 skills", () => { const experiences = service.getMany({ jobTitle: "Tester" }); expect(experiences.length).toBe(1); expect(experiences[0].skills.length).toBe(2); }); }); });