import assert from 'node:assert/strict'; import test from 'node:test'; import type { ElectricMonthGroup } from '../types'; import { summarizeElectricMonths } from './model'; test('electric daily summary preserves totals, active-day and 30 percent boundaries', () => { const months: ElectricMonthGroup[] = [ { month: '2026-08', kwh: 150, fee: 75, rows: [ { date: '2026-08-01', kwh: 100, fee: 50, chainPct: 0.3 }, { date: '2026-08-02', kwh: 50, fee: 25, chainPct: -0.29 }, { date: '2026-08-03', kwh: 0, fee: 0, chainPct: -1 }, ], }, ]; assert.deepEqual(summarizeElectricMonths(months), { totalKwh: 150, totalFee: 75, activeDays: 2, abnormalDays: 2, avgKwh: 75, avgPrice: 0.5, hasFeeDetail: true, }); }); test('electric daily summary preserves empty and missing-fee fallbacks', () => { assert.deepEqual(summarizeElectricMonths(null), { totalKwh: 0, totalFee: 0, activeDays: 0, abnormalDays: 0, avgKwh: 0, avgPrice: 0, hasFeeDetail: false, }); });