49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
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"
|
|
}
|
|
]);
|
|
});
|
|
});
|