Enable editing for draft exams
This commit is contained in:
@@ -59,6 +59,11 @@ try {
|
||||
|
||||
const sqliteFile = await readFile(testDb);
|
||||
assert.equal(sqliteFile.subarray(0, 16).toString(), 'SQLite format 3\0', '测试持久化文件必须是真实 SQLite 数据库');
|
||||
const appSource = await readFile(resolve(root, 'app.js'), 'utf8');
|
||||
assert.doesNotMatch(appSource, /onclick=["']event\.stopPropagation\(\)/, '弹窗不得截断内部按钮的委托点击事件');
|
||||
assert.match(appSource, /data-modal-backdrop/, '弹窗应仅在点击背景层本身时关闭');
|
||||
assert.match(appSource, /data-action="edit-exam"/, '考试草稿应提供编辑入口');
|
||||
|
||||
const { DatabaseSync } = await import('node:sqlite');
|
||||
const inspector = new DatabaseSync(testDb, { readOnly: true });
|
||||
const tableNames = inspector.prepare(`
|
||||
@@ -115,6 +120,27 @@ try {
|
||||
assert.equal(createExam.data.exam.subjects.length, 3, '管理员应可创建多科目考试');
|
||||
const exam = createExam.data.exam;
|
||||
|
||||
const draftResponse = await admin.request('/api/admin/exams', {
|
||||
method: 'POST',
|
||||
body: {
|
||||
name: '待完善考试草稿', code: 'EX-TEST-DRAFT', description: '等待管理员继续配置',
|
||||
registrationStart: new Date(now + 72 * hour).toISOString(), registrationEnd: new Date(now + 96 * hour).toISOString(),
|
||||
examStart: new Date(now + 120 * hour).toISOString(), examEnd: new Date(now + 132 * hour).toISOString(),
|
||||
admitDownloadStart: new Date(now + 100 * hour).toISOString(), admitDownloadEnd: new Date(now + 119 * hour).toISOString(),
|
||||
location: '待定考点', status: 'draft', subjects: ['待定科目']
|
||||
}
|
||||
});
|
||||
const editedDraft = await admin.request(`/api/admin/exams/${draftResponse.data.exam.id}`, {
|
||||
method: 'PATCH',
|
||||
body: { name: '已完善考试草稿', location: '测试中心', status: 'draft', subjects: ['语文', '数学'] }
|
||||
});
|
||||
assert.equal(editedDraft.response.status, 200, '管理员应可继续编辑考试草稿');
|
||||
assert.deepEqual(editedDraft.data.exam.subjects.map(subject => subject.name), ['语文', '数学'], '草稿编辑应保存科目配置');
|
||||
const refreshedAdminExams = await admin.request('/api/admin/exams');
|
||||
const persistedDraft = refreshedAdminExams.data.exams.find(item => item.id === draftResponse.data.exam.id);
|
||||
assert.equal(persistedDraft.name, '已完善考试草稿', '草稿修改应持久化');
|
||||
assert.equal(persistedDraft.subjects.length, 2, '草稿科目修改应持久化');
|
||||
|
||||
const beforeApproval = await candidate.request('/api/candidate/registrations', { method: 'POST', body: { examId: exam.id, subjectIds: [exam.subjects[0].id] } });
|
||||
assert.equal(beforeApproval.response.status, 403, '资料审核前不得报名考试');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user