fe-middleware/test/ImageController/ImageController.test.ts

41 lines
1.4 KiB
TypeScript

import { afterEach, describe, expect, it, mock, jest } from "bun:test";
import Image from "src/types/Image";
import ImageService from "src/services/ImageService";
import GelbooruApiResponse from "src/types/GelbooruServiceResponse";
import { BotApiResponse } from "src/types/BotApiResponse";
import fs from "node:fs";
import ImageController from "src/controllers/ImageController";
import app from "src/app";
import request from "supertest";
const imageServiceOriginal = ImageService;
afterEach(() => {
mock.restore();
mock.module("src/services/ImageService", () => ({
default: imageServiceOriginal,
}));
})
describe("endpoint returns the correct status codes", () => {
it("should return 200 if successful", async () => {
// Can't mock ImageService partially because of bun incomplete implementation of testing :(
// It goes to the network directly to test
const res = await request(app).get("/image");
expect(res.status).toBe(200);
});
it("should return 500 if any error happens", async () => {
mock.module("src/services/ImageService", () => {
return {
default: {
get: () => {
throw new Error("Controlled error");
}
}
}
});
const res = await request(app).get("/image");
expect(res.status).toBe(500);
});
})