'use strict'; const test = require('node:test'); const assert = require('node:assert/strict'); const { calculateEnrollmentPricing, calculateClassRequestPricing, calculateMidpointDueDate } = require('./registrationPricing'); test('full payment applies 500k discount', () => { const result = calculateEnrollmentPricing( { tuitionFee: 5_000_000, hasDiscount: false }, { sectionCount: 16 }, 'full' ); assert.equal(result.totalAmount, 4_500_000); assert.equal(result.paymentDiscount, 500_000); assert.equal(result.amountDueNow, 4_500_000); }); test('installments charge full tuition with half due now', () => { const result = calculateEnrollmentPricing( { tuitionFee: 4_000_000, hasDiscount: false, startDate: '2026-09-01', days: [2, 4] }, { sectionCount: 16 }, 'installments' ); assert.equal(result.totalAmount, 4_000_000); assert.equal(result.amountDueNow, 2_000_000); assert.equal(result.secondInstallmentAmount, 2_000_000); assert.ok(result.secondInstallmentDueDate); }); test('class request deposit is 10 percent', () => { const result = calculateClassRequestPricing({ tuitionFee: 3_000_000, hasDiscount: false }); assert.equal(result.amountDueNow, 300_000); assert.equal(result.paymentPlan, 'deposit'); }); test('midpoint due date is halfway through course duration', () => { const due = calculateMidpointDueDate( { startDate: '2026-01-01', days: [2, 4] }, { sectionCount: 16 } ); assert.equal(due.toISOString().slice(0, 10), '2026-01-29'); });