import assert from 'node:assert/strict'; import { validateOffboardingAction, getPreviousStage, getOffboardingAuditAction } from '../src/common/utils/offboardingWorkflow.utils.js'; import { OFFBOARDING_ACTIONS, REQUEST_TYPES, TERMINATION_STAGES, RESIGNATION_STAGES, CONSTITUTIONAL_STAGES, AUDIT_ACTIONS } from '../src/common/config/constants.js'; console.log('--- Testing Standardized Offboarding Utilities ---'); // 1. Test validateOffboardingAction console.log('Testing validateOffboardingAction...'); assert.deepEqual(validateOffboardingAction(OFFBOARDING_ACTIONS.APPROVE, ''), { valid: true }); assert.deepEqual(validateOffboardingAction(OFFBOARDING_ACTIONS.SEND_BACK, 'Short'), { valid: true }); // 'Short' is 5 chars assert.equal(validateOffboardingAction(OFFBOARDING_ACTIONS.SEND_BACK, 'No').valid, false); assert.equal(validateOffboardingAction(OFFBOARDING_ACTIONS.REVOKE, '').valid, false); assert.equal(validateOffboardingAction(OFFBOARDING_ACTIONS.REJECT, '').valid, true); // Remarks not mandatory for reject in current util choice console.log('✓ validateOffboardingAction passed.'); // 2. Test getPreviousStage - Termination console.log('Testing getPreviousStage (Termination)...'); assert.equal(getPreviousStage(REQUEST_TYPES.TERMINATION, TERMINATION_STAGES.RBM_REVIEW), TERMINATION_STAGES.SUBMITTED); assert.equal(getPreviousStage(REQUEST_TYPES.TERMINATION, TERMINATION_STAGES.ZBH_REVIEW), TERMINATION_STAGES.RBM_REVIEW); assert.equal(getPreviousStage(REQUEST_TYPES.TERMINATION, TERMINATION_STAGES.TERMINATED), TERMINATION_STAGES.LEGAL_LETTER); console.log('✓ Termination stage resolution passed.'); // 3. Test getPreviousStage - Resignation console.log('Testing getPreviousStage (Resignation)...'); assert.equal(getPreviousStage(REQUEST_TYPES.RESIGNATION, RESIGNATION_STAGES.RBM), RESIGNATION_STAGES.ASM); assert.equal(getPreviousStage(REQUEST_TYPES.RESIGNATION, RESIGNATION_STAGES.ZBH), RESIGNATION_STAGES.RBM); assert.equal(getPreviousStage(REQUEST_TYPES.RESIGNATION, RESIGNATION_STAGES.COMPLETED), RESIGNATION_STAGES.FNF_INITIATED); console.log('✓ Resignation stage resolution passed.'); // 4. Test getPreviousStage - Constitutional console.log('Testing getPreviousStage (Constitutional)...'); assert.equal(getPreviousStage(REQUEST_TYPES.CONSTITUTIONAL, CONSTITUTIONAL_STAGES.ASM_REVIEW), CONSTITUTIONAL_STAGES.SUBMITTED); assert.equal(getPreviousStage(REQUEST_TYPES.CONSTITUTIONAL, CONSTITUTIONAL_STAGES.ZM_RBM_REVIEW), CONSTITUTIONAL_STAGES.ASM_REVIEW); assert.equal(getPreviousStage(REQUEST_TYPES.CONSTITUTIONAL, CONSTITUTIONAL_STAGES.COMPLETED), CONSTITUTIONAL_STAGES.LEGAL_REVIEW); console.log('✓ Constitutional stage resolution passed.'); // 5. Test getOffboardingAuditAction mapping console.log('Testing getOffboardingAuditAction...'); assert.equal(getOffboardingAuditAction('Sent Back', REQUEST_TYPES.TERMINATION), AUDIT_ACTIONS.UPDATED); assert.equal(getOffboardingAuditAction('Revoke', REQUEST_TYPES.RESIGNATION), AUDIT_ACTIONS.UPDATED); assert.equal(getOffboardingAuditAction('Approve', REQUEST_TYPES.CONSTITUTIONAL), AUDIT_ACTIONS.APPROVED); assert.equal(getOffboardingAuditAction('REJECT', REQUEST_TYPES.TERMINATION), AUDIT_ACTIONS.REJECTED); console.log('✓ Audit action mapping passed.'); console.log('\nALL STANDARDIZATION UTILITY CHECKS PASSED SUCCESSFULLY.');