forked from wangziqi/gongxue-base
feat: add practice session resume
This commit is contained in:
@@ -1065,6 +1065,27 @@ async function testCatalogAndLearning() {
|
||||
});
|
||||
assert.equal(answer.item?.isCorrect, false, 'wrong answer should be judged false');
|
||||
|
||||
const freeSessionDetail = await request('/api/learning/practice-sessions/detail', {
|
||||
userId: false,
|
||||
headers: { authorization: `Bearer ${freeLogin.session.token}` },
|
||||
query: { practiceSessionId: freeSession.item.id },
|
||||
});
|
||||
assert.equal(freeSessionDetail.item?.id, freeSession.item.id, 'session detail should load own active practice session');
|
||||
assert.equal(freeSessionDetail.item?.status, 'active', 'session detail should expose active status');
|
||||
assert.deepEqual(freeSessionDetail.item?.questionIds, freeSession.item.questionIds, 'session detail should preserve backend question snapshot');
|
||||
assert.ok(freeSessionDetail.item?.questions?.some(item => item.id === ids.question), 'session detail should include snapshot questions');
|
||||
assert.equal(
|
||||
freeSessionDetail.item?.answersByQuestion?.[ids.question]?.isCorrect,
|
||||
false,
|
||||
'session detail should include latest answer records for resume',
|
||||
);
|
||||
|
||||
const crossUserSessionDetail = await request('/api/learning/practice-sessions/detail', {
|
||||
query: { practiceSessionId: freeSession.item.id },
|
||||
expectStatus: 404,
|
||||
});
|
||||
assert.equal(crossUserSessionDetail.code, 'PRACTICE_SESSION_NOT_FOUND', 'session detail must not expose another user session');
|
||||
|
||||
const selfJudgedObjective = await request('/api/learning/answers', {
|
||||
userId: false,
|
||||
headers: { authorization: `Bearer ${freeLogin.session.token}` },
|
||||
@@ -1195,6 +1216,13 @@ async function testCatalogAndLearning() {
|
||||
});
|
||||
assert.equal(fetchedReport.item?.id, mockReport.item.id, 'mock report should be queryable');
|
||||
|
||||
const finishedSessionDetail = await request('/api/learning/practice-sessions/detail', {
|
||||
userId: TENANT_ADMIN_USER_ID,
|
||||
query: { practiceSessionId: mockSession.item.id },
|
||||
});
|
||||
assert.equal(finishedSessionDetail.item?.status, 'finished', 'session detail should expose finished status after submit');
|
||||
assert.equal(finishedSessionDetail.item?.answersByQuestion?.[ids.questionThree]?.isCorrect, true, 'finished session detail should include subjective answer');
|
||||
|
||||
const reportList = await request('/api/learning/practice-reports', {
|
||||
userId: TENANT_ADMIN_USER_ID,
|
||||
query: { blueprintId: ids.practiceBlueprintMock },
|
||||
|
||||
Reference in New Issue
Block a user