From 8c39255ccb0a6c5eb2f81126b0c3bb40d3ec7290 Mon Sep 17 00:00:00 2001 From: GaelFerrand Date: Thu, 6 Feb 2025 15:44:07 +0100 Subject: [PATCH] fix: fixing tests --- .../__tests__/bulk-create.integration.ts | 116 ++++++++++++------ 1 file changed, 77 insertions(+), 39 deletions(-) diff --git a/back/src/users/bulk-creation/__tests__/bulk-create.integration.ts b/back/src/users/bulk-creation/__tests__/bulk-create.integration.ts index aba5205e86..952d515df4 100644 --- a/back/src/users/bulk-creation/__tests__/bulk-create.integration.ts +++ b/back/src/users/bulk-creation/__tests__/bulk-create.integration.ts @@ -7,22 +7,40 @@ import { sendMail } from "../../../mailer/mailing"; import { sirenify } from "../sirene"; import { companyFactory, userFactory } from "../../../__tests__/factories"; import { bulkCreate, Opts } from "../index"; +import { searchCompany } from "../../../companies/search"; // No mails jest.mock("../../../mailer/mailing"); (sendMail as jest.Mock).mockImplementation(() => Promise.resolve()); jest.mock("../sirene"); -(sirenify as jest.Mock).mockImplementation(company => - Promise.resolve({ - ...company, - name: "NAME FROM SIRENE", - address: "40 boulevard Voltaire 13001 Marseille", - codeNaf: "62.01Z", - latitude: 1, - longitude: 1 - }) -); +(sirenify as jest.Mock).mockImplementation(company => { + if (company.siret === "85001946400021") { + return { + ...company, + name: "NAME FROM SIRENE", + address: "40 boulevard Voltaire 13001 Marseille", + codeNaf: "62.01Z", + latitude: 1, + longitude: 1 + }; + } + + if (company.siret === "81343950200028") { + return { + ...company, + name: "NAME FROM SIRENE", + address: "4 boulevard Pasteur 44100 Nantes", + codeNaf: "62.01Z", + latitude: 1, + longitude: 1 + }; + } +}); + +jest.mock("../../../companies/search", () => ({ + searchCompany: jest.fn().mockResolvedValue({ etatAdministratif: "A" }) +})); export interface CompanyInfo { etablissement: { @@ -34,21 +52,35 @@ export interface CompanyInfo { } describe("bulk create users and companies from csv files", () => { - const { searchCompany } = require("../../../companies/search"); - jest.mock("../../../companies/search"); - (searchCompany as jest.Mock) - .mockResolvedValue({ - siret: "85001946400021", - name: "Code en stock", - statutDiffusionEtablissement: "O", - etatAdministratif: "A" - }) - .mockResolvedValue({ - siret: "81343950200028", - name: "Frontier SAS", - statutDiffusionEtablissement: "O", - etatAdministratif: "A" - }); + (searchCompany as jest.Mock).mockImplementation((cue: string) => { + console.log("!!! APPELLE !!!"); + + if (cue === "85001946400021") { + return { + siret: "85001946400021", + name: "Code en stock", + statutDiffusionEtablissement: "O", + etatAdministratif: "A", + addressVoie: "40 boulevard Voltaire", + addressPostalCode: "13001", + addressCity: "Marseille", + codePaysEtrangerEtablissement: "" + }; + } + if (cue === "81343950200028") { + return { + siret: "81343950200028", + name: "Frontier SAS", + statutDiffusionEtablissement: "O", + etatAdministratif: "A", + addressVoie: "4 boulevard Pasteur", + addressPostalCode: "44100", + addressCity: "Nantes", + codePaysEtrangerEtablissement: "" + }; + } + }); + // CSV files are read from __tests__/csv folder // // In the test data we have @@ -294,26 +326,32 @@ describe("bulk create users and companies from csv files", () => { }, 10000); test("should fill company's splitted address", async () => { - await bulkCreateIdempotent(); - - await expectNumberOfRecords(2, 3, 4); + // Given - // check fields are OK for first user - const john = await prisma.user.findUniqueOrThrow({ - where: { email: "john.snow@trackdechets.fr" } - }); - expect(john.name).toEqual("john.snow@trackdechets.fr"); - expect(john.isActive).toEqual(true); - expect(john.activatedAt).toBeTruthy(); - expect(john.firstAssociationDate).toBeTruthy(); + // When + await bulkCreateIdempotent(); - // check fields are OK for first company + // Then + // Check fields are OK for first company const codeEnStock = await prisma.company.findUniqueOrThrow({ where: { siret: "85001946400021" } }); - expect(codeEnStock.street).toEqual("40 BOULEVARD VOLTAIRE BAT G"); + expect(codeEnStock.address).toEqual( + "40 boulevard Voltaire 13001 Marseille" + ); + expect(codeEnStock.street).toEqual("40 boulevard Voltaire"); expect(codeEnStock.postalCode).toEqual("13001"); - expect(codeEnStock.city).toEqual("MARSEILLE"); + expect(codeEnStock.city).toEqual("Marseille"); expect(codeEnStock.country).toEqual("FR"); + + // Check fields are OK for second company + const frontierSAS = await prisma.company.findUniqueOrThrow({ + where: { siret: "81343950200028" } + }); + expect(frontierSAS.address).toEqual("4 boulevard Pasteur 44100 Nantes"); + expect(frontierSAS.street).toEqual("4 boulevard Pasteur"); + expect(frontierSAS.postalCode).toEqual("44100"); + expect(frontierSAS.city).toEqual("Nantes"); + expect(frontierSAS.country).toEqual("FR"); }, 10000); });