const request = require("supertest"); const app = require("../src/app"); describe("GET /search", () => { afterEach(() => { jest.restoreAllMocks(); }); test("returns 400 when query is missing", async () => { const response = await request(app).get("/search"); expect(response.status).toBe(400); expect(response.text).toBe("Missing search query"); }); test("returns filtered search results", async () => { global.fetch = jest.fn().mockResolvedValue({ json: jest.fn().mockResolvedValue({ results: [ { url: "https://example.com", title: "Example", content: "Content", irrelevant: "removed" } ] }) }); const response = await request(app) .get("/search") .query({ query: "nodejs" }); expect(response.status).toBe(200); expect(response.headers["content-type"]).toMatch(/application\/json/); expect(response.headers["content-disposition"]).toContain( 'attachment; filename="output.json"' ); expect(response.body).toEqual([ { url: "https://example.com", title: "Example", content: "Content" } ]); }); });