返回 AiToEarn
hot-topic.e2e-spec.ts
根目录 / project / aitoearn-electron / server / test / hot-topic / hot-topic.e2e-spec.ts
1 import supertest from 'supertest';
2 import { Agent } from '../agent';
3 import { platform, platform2 } from '../mockData';
4
5 describe('HotTopicController (e2e)', () => {
6 let agent: supertest.Agent;
7
8 beforeAll(async () => {
9 agent = Agent.get();
10 });
11
12 describe('findAll', () => {
13 it('should return top 10 hot topics for each platform', async () => {
14 const result = await agent.get('/hot-topics/all').expect(200);
15
16 expect(Array.isArray(result.body.data)).toBe(true);
17
18 // 验证返回的数据结构
19 result.body.data.forEach(group => {
20 expect(group).toHaveProperty('platform');
21 expect(group).toHaveProperty('topics');
22 expect(Array.isArray(group.topics)).toBe(true);
23 expect(group.topics.length).toBeLessThanOrEqual(10);
24
25 // 验证每个平台的话题都正确分组
26 group.topics.forEach(topic => {
27 expect(topic.platformId._id.toString()).toBe(group.platform._id.toString());
28 });
29
30 // 验证每个平台内的话题按rank升序排序
31 const ranks = group.topics.map(topic => topic.rank);
32 expect(ranks).toEqual([...ranks].sort((a, b) => a - b));
33 });
34
35 // 验证包含所有有话题的平台
36 const platformIds = result.body.data.map(group => group.platform._id.toString());
37 expect(platformIds).toContain(platform._id.toString());
38 expect(platformIds).toContain(platform2._id.toString());
39 });
40 });
41 });
42
42 lines TYPESCRIPT