const request = require('supertest');
const express = require('express');
const helmet = require('helmet');
// --- Mock axios before requiring the router ---
jest.mock('axios');
const axios = require('axios');
const MOCK_SVG = ``;
beforeEach(() => {
axios.get.mockResolvedValue({ status: 200, data: MOCK_SVG });
});
afterEach(() => {
jest.restoreAllMocks();
});
// Fresh app for each test to avoid middleware leakage
function createApp() {
const badgeRouter = require('../src/api/badge');
const app = express();
app.use(helmet({ crossOriginResourcePolicy: false }));
app.use(badgeRouter);
return app;
}
describe('GET /badge', () => {
// --- Basic happy-path tests ---
it('should return SVG with default params', async () => {
const res = await request(createApp()).get('/badge');
const body = Buffer.from(res.body).toString();
expect(res.statusCode).toBe(200);
expect(res.headers['content-type']).toMatch(/image\/svg\+xml/);
expect(body).toContain('