后台
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
||||
import request from 'supertest';
|
||||
import { setupApp, resetDb, teardown } from './setup.js';
|
||||
import { makePayload } from './fixtures.js';
|
||||
|
||||
let app: any;
|
||||
beforeAll(async () => {
|
||||
({ app } = await setupApp());
|
||||
}, 90000);
|
||||
afterAll(async () => {
|
||||
await teardown();
|
||||
});
|
||||
|
||||
async function login() {
|
||||
return (
|
||||
await request(app)
|
||||
.post('/api/auth/login')
|
||||
.send({ username: 'admin', password: 'admin-password-1234' })
|
||||
).body.token;
|
||||
}
|
||||
|
||||
async function pushInquiry(p: any) {
|
||||
await request(app)
|
||||
.post('/api/ingest')
|
||||
.set('Authorization', 'Bearer dev-ingest-token-1234')
|
||||
.send(p);
|
||||
}
|
||||
|
||||
describe('stats overview', () => {
|
||||
it('returns total / countryTop10 / byManager / monthly', async () => {
|
||||
await resetDb();
|
||||
await pushInquiry(makePayload({ customer: { country: 'PE', name: 'A' } }));
|
||||
await pushInquiry(
|
||||
makePayload({
|
||||
inquiry: { inquiryId: 'X2' },
|
||||
customer: { customerId: 'c2', country: 'US', name: 'B' },
|
||||
}),
|
||||
);
|
||||
const token = await login();
|
||||
const res = await request(app)
|
||||
.get('/api/stats/overview')
|
||||
.set('Authorization', 'Bearer ' + token);
|
||||
expect(res.status).toBe(200);
|
||||
expect(res.body.total).toBe(2);
|
||||
expect(Array.isArray(res.body.countryTop10)).toBe(true);
|
||||
expect(res.body.countryTop10.some((c: any) => c.country === 'PE')).toBe(true);
|
||||
expect(Array.isArray(res.body.byManager)).toBe(true);
|
||||
expect(Array.isArray(res.body.monthly)).toBe(true);
|
||||
// 确认 _count 已重命名为 count(前端友好)
|
||||
expect(res.body.countryTop10[0]).toHaveProperty('count');
|
||||
expect(res.body.countryTop10[0].count).not.toBeUndefined();
|
||||
});
|
||||
|
||||
it('401 without jwt', async () => {
|
||||
const res = await request(app).get('/api/stats/overview');
|
||||
expect(res.status).toBe(401);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user