import { INestApplication } from "@nestjs/common"; import { Test, TestingModule } from "@nestjs/testing"; import * as request from "supertest"; import { dataSource } from "../config/dataSource"; import { AppModule } from "../src/app.module"; import { CarbonEmissionFactor } from "../src/carbonEmissionFactor/carbonEmissionFactor.entity"; import { getTestEmissionFactor } from "../src/seed-dev-data"; beforeAll(async () => { await dataSource.initialize(); }); afterAll(async () => { await dataSource.destroy(); }); describe("CarbonEmissionFactorsController", () => { let app: INestApplication; let defaultCarbonEmissionFactors: CarbonEmissionFactor[]; beforeEach(async () => { const moduleFixture: TestingModule = await Test.createTestingModule({ imports: [AppModule], }).compile(); app = moduleFixture.createNestApplication(); await app.init(); await dataSource .getRepository(CarbonEmissionFactor) .save([getTestEmissionFactor("ham"), getTestEmissionFactor("beef")]); defaultCarbonEmissionFactors = await dataSource .getRepository(CarbonEmissionFactor) .find(); }); it("GET /carbon-emission-factors", async () => { return request(app.getHttpServer()) .get("/carbon-emission-factors") .expect(200) .expect(({ body }) => { expect(body).toEqual(defaultCarbonEmissionFactors); }); }); it("POST /carbon-emission-factors", async () => { const carbonEmissionFactorArgs = { name: "Test Carbon Emission Factor", unit: "kg", emissionCO2eInKgPerUnit: 12, source: "Test Source", }; return request(app.getHttpServer()) .post("/carbon-emission-factors") .send([carbonEmissionFactorArgs]) .expect(201) .expect(({ body }) => { expect(body.length).toEqual(1); expect(body[0]).toMatchObject(carbonEmissionFactorArgs); }); }); });