Merge pull request #56 from Tria-plc/fix/coc-exam-workflow-defects

Fix/coc exam workflow defects
This commit is contained in:
Mihretu Endeshaw
2026-09-01 10:38:23 +03:00
committed by GitHub
6 changed files with 12 additions and 10 deletions

View File

@@ -114,7 +114,7 @@ const STATUS_COLOR: Record<string, string> = {
* keys because this page states its statuses the same way.
*/
const EXAM_STAGE_LABELS: Record<string, string> = {
ELIGIBLE_TO_REGISTER: 'Eligible — Register for a Sitting',
EXAM_PAID: 'Exam Paid',
REGISTERED: 'Exam Scheduled',
ATTENDANCE_CONFIRMED: 'Exam Attendance Confirmed',
SITTING: 'Exam In Progress',

View File

@@ -29,8 +29,8 @@ describe('examStageFor', () => {
expect(examStageFor({ status: 'CERTIFICATE_ISSUED' })).toBeNull();
});
it('reads a paid application as eligible to register, not as waiting', () => {
expect(examStageFor({ status: 'EXAM_PAID' })).toBe('ELIGIBLE_TO_REGISTER');
it('reads a paid application as Exam Paid, not as awaiting a date', () => {
expect(examStageFor({ status: 'EXAM_PAID' })).toBe('EXAM_PAID');
});
it('reports a registration whose attendance has not been taken', () => {

View File

@@ -16,7 +16,7 @@ import type { MyRegistration } from '../exams/pages/ExamsPage';
* already recorded — this only names what the records add up to.
*/
export type ExamStage =
| 'ELIGIBLE_TO_REGISTER'
| 'EXAM_PAID'
| 'REGISTERED'
| 'ATTENDANCE_CONFIRMED'
| 'SITTING'
@@ -41,9 +41,11 @@ export function examStageFor(
if (app.status === 'EXAM_PASSED') return 'PASSED';
if (app.status === 'EXAM_FAILED') return 'FAILED';
// EXAM_PAID is "prerequisites done, sitting not yet chosen": the fee has
// cleared and nothing is left but for the candidate to pick a session.
if (app.status === 'EXAM_PAID') return 'ELIGIBLE_TO_REGISTER';
// The fee has cleared and nothing is left but for the candidate to pick a
// session. Named after the status rather than after what the candidate
// should do next: "Eligible to Register" read as a status of its own and
// said less than the plain one.
if (app.status === 'EXAM_PAID') return 'EXAM_PAID';
if (app.status !== 'EXAM_SCHEDULED') return null;

View File

@@ -244,7 +244,7 @@ export const am: Translations = {
empty: 'እስካሁን ምንም ፍቃድ አልተሰጥዎትም። ማመልከቻ ከተፈቀደና ከተከፈለ በኋላ እዚህ ይታያል።',
},
examStage: {
ELIGIBLE_TO_REGISTER: "ብቁ ነዎት — ለፈተና ይመዝገቡ",
EXAM_PAID: "የፈተና ክፍያ ተከፍሏል",
REGISTERED: "የፈተና ቀን፦ {{date}}",
ATTENDANCE_CONFIRMED: "መገኘት ተረጋግጧል",
SITTING: "ፈተና በመካሄድ ላይ",

View File

@@ -249,7 +249,7 @@ export const en = {
* from the application status alone — see exam-stage.ts.
*/
examStage: {
ELIGIBLE_TO_REGISTER: 'Eligible — register for a sitting',
EXAM_PAID: 'Exam Paid',
REGISTERED: 'Exam scheduled: {{date}}',
ATTENDANCE_CONFIRMED: 'Attendance confirmed',
SITTING: 'Exam in progress',

View File

@@ -88,7 +88,7 @@ export const STATUS_LABELS: Record<LicenseStatus, string> = {
EXAM_PAYMENT_PENDING: 'Exam Fee Due',
// Nobody assigns a date any more — the fee clearing is what makes the
// candidate eligible to register for a published sitting themselves.
EXAM_PAID: 'Eligible to Register',
EXAM_PAID: 'Exam Paid',
EXAM_SCHEDULED: 'Exam Scheduled',
EXAM_PASSED: 'Exam Passed',
EXAM_FAILED: 'Exam Not Passed',