后台基本功能完成,待完善:普通用户前端页面
This commit is contained in:
@@ -260,3 +260,71 @@ test('前端文本解析支持 | 分隔格式', async () => {
|
||||
assert.equal(judgment.answer, '正确');
|
||||
assert.equal(judgment.analysis, '地球接近球体');
|
||||
});
|
||||
|
||||
test('题目类别列表应返回题库数量统计', async () => {
|
||||
const { initDatabase, run } = await import('../api/database');
|
||||
await initDatabase();
|
||||
|
||||
const { app } = await import('../api/server');
|
||||
const server = app.listen(0);
|
||||
|
||||
try {
|
||||
const addr = server.address();
|
||||
assert.ok(addr && typeof addr === 'object');
|
||||
const baseUrl = `http://127.0.0.1:${addr.port}`;
|
||||
|
||||
await run(`DELETE FROM quiz_answers`);
|
||||
await run(`DELETE FROM quiz_records`);
|
||||
await run(`DELETE FROM questions`);
|
||||
await run(`DELETE FROM question_categories`);
|
||||
|
||||
await run(`INSERT INTO question_categories (id, name) VALUES (?, ?)`, [randomUUID(), '空类别']);
|
||||
|
||||
const q1 = randomUUID();
|
||||
const q2 = randomUUID();
|
||||
const q3 = randomUUID();
|
||||
const q4 = randomUUID();
|
||||
const q5 = randomUUID();
|
||||
|
||||
await run(
|
||||
`INSERT INTO questions (id, content, type, options, answer, score, category)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)`,
|
||||
[q1, '数学题1', 'single', JSON.stringify(['A', 'B']), 'A', 5, '数学'],
|
||||
);
|
||||
await run(
|
||||
`INSERT INTO questions (id, content, type, options, answer, score, category)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)`,
|
||||
[q2, '数学题2', 'single', JSON.stringify(['A', 'B']), 'A', 5, '数学'],
|
||||
);
|
||||
await run(
|
||||
`INSERT INTO questions (id, content, type, options, answer, score, category)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)`,
|
||||
[q3, '英语题1', 'single', JSON.stringify(['A', 'B']), 'A', 5, '英语'],
|
||||
);
|
||||
await run(
|
||||
`INSERT INTO questions (id, content, type, options, answer, score, category)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)`,
|
||||
[q4, '通用题1', 'single', JSON.stringify(['A', 'B']), 'A', 5, '通用'],
|
||||
);
|
||||
await run(
|
||||
`INSERT INTO questions (id, content, type, options, answer, score, category)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)`,
|
||||
[q5, '空类别题(旧数据)', 'single', JSON.stringify(['A', 'B']), 'A', 5, ''],
|
||||
);
|
||||
|
||||
const res = await jsonFetch(baseUrl, '/api/question-categories');
|
||||
assert.equal(res.status, 200);
|
||||
assert.equal(res.json?.success, true);
|
||||
assert.equal(Array.isArray(res.json?.data), true);
|
||||
|
||||
const list = res.json?.data as any[];
|
||||
const findByName = (name: string) => list.find((c) => c?.name === name);
|
||||
|
||||
assert.equal(findByName('数学')?.questionCount, 2);
|
||||
assert.equal(findByName('英语')?.questionCount, 1);
|
||||
assert.equal(findByName('通用')?.questionCount, 2);
|
||||
assert.equal(findByName('空类别')?.questionCount, 0);
|
||||
} finally {
|
||||
await new Promise<void>((resolve) => server.close(() => resolve()));
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user