|
|
@ -42,6 +42,8 @@ import { |
|
|
createCandidateFeedback, |
|
|
createCandidateFeedback, |
|
|
deleteCandidateFeedback, |
|
|
deleteCandidateFeedback, |
|
|
fetchCandidateFeedback, |
|
|
fetchCandidateFeedback, |
|
|
|
|
|
fetchApplicationMatch, |
|
|
|
|
|
fetchApplicationTimeline, |
|
|
fetchCompanyApplicationDetail, |
|
|
fetchCompanyApplicationDetail, |
|
|
fetchCompanyApplications, |
|
|
fetchCompanyApplications, |
|
|
toBackendApplicationStatus, |
|
|
toBackendApplicationStatus, |
|
|
@ -227,4 +229,42 @@ describe('企业端投递 / 反馈(真实模式)', () => { |
|
|
await updateCandidateFeedback('app-1001', { rating: 4, content: '改', tags: [] }); |
|
|
await updateCandidateFeedback('app-1001', { rating: 4, content: '改', tags: [] }); |
|
|
expect(seenMethod).toBe('PUT'); |
|
|
expect(seenMethod).toBe('PUT'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
it('时间线把后端 toStatus/reason/createdAt 映射成 status/note/time', async () => { |
|
|
|
|
|
setMockMode(false); |
|
|
|
|
|
responder = (url) => { |
|
|
|
|
|
expect(url).toBe(`${API_BASE_URL}/applications/app-1001/timeline`); |
|
|
|
|
|
return okData([ |
|
|
|
|
|
{ id: 1, operatorUserId: 4, toStatus: 'SUBMITTED', reason: 'Student applied', createdAt: '2026-09-30T01:57:26' }, |
|
|
|
|
|
]); |
|
|
|
|
|
}; |
|
|
|
|
|
const timeline = await fetchApplicationTimeline('app-1001'); |
|
|
|
|
|
expect(timeline).toEqual([ |
|
|
|
|
|
{ status: 'submitted', note: 'Student applied', time: '2026-09-30T01:57:26' }, |
|
|
|
|
|
]); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
it('匹配状态打 /applications/{id}/match 并透传结构', async () => { |
|
|
|
|
|
setMockMode(false); |
|
|
|
|
|
responder = (url) => { |
|
|
|
|
|
expect(url).toBe(`${API_BASE_URL}/applications/1/match`); |
|
|
|
|
|
return okData({ |
|
|
|
|
|
status: 'PENDING_BOTH', |
|
|
|
|
|
matchVersion: 'RULE_THRESHOLD_V1', |
|
|
|
|
|
candidateScoreSource: 'MANUAL_INTEREST', |
|
|
|
|
|
hrScoreSource: 'HR_MANUAL', |
|
|
|
|
|
companyRequiredCandidateScore: 60, |
|
|
|
|
|
studentRequiredHrScore: 60, |
|
|
|
|
|
applicationId: 1, |
|
|
|
|
|
jobId: 166, |
|
|
|
|
|
companyId: 48, |
|
|
|
|
|
candidateId: 4, |
|
|
|
|
|
}); |
|
|
|
|
|
}; |
|
|
|
|
|
const match = await fetchApplicationMatch('1'); |
|
|
|
|
|
expect(match.status).toBe('PENDING_BOTH'); |
|
|
|
|
|
expect(match.companyRequiredCandidateScore).toBe(60); |
|
|
|
|
|
expect(match.studentRequiredHrScore).toBe(60); |
|
|
|
|
|
expect(match.jobId).toBe(166); |
|
|
|
|
|
}); |
|
|
}); |
|
|
}); |
|
|
|