Dealer_Onboarding_Backend/scripts/verify-standardized-offboarding.ts

57 lines
3.3 KiB
TypeScript

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.');