CV/src/experiences/experiences.service.spec.ts

90 lines
2.9 KiB
TypeScript

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>(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);
});
});
});