迁移 108-111:快照业务时间与预估转实际、销售事实表、系统成本项、公司人工支出登记。接单平台按工单实际 reward 入账;人工支出支持登记/审批/驳回/报销并写 actual 快照。新增销售毛利页、人工支出页与订单入口。
28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
|
|
import { diffDays, resolveFinanceDateRange, shiftDate } from './finance-date-range.js'
|
|
|
|
test('resolveFinanceDateRange uses the requested date range', () => {
|
|
const range = resolveFinanceDateRange({ dateFrom: '2026-10-01', dateTo: '2026-10-14' })
|
|
assert.deepEqual(range, { fromDate: '2026-10-01', toDate: '2026-10-14' })
|
|
})
|
|
|
|
test('resolveFinanceDateRange rejects reversed and oversized ranges', () => {
|
|
assert.throws(() => resolveFinanceDateRange({ dateFrom: '2026-10-14', dateTo: '2026-10-01' }))
|
|
assert.throws(() =>
|
|
resolveFinanceDateRange({ dateFrom: '2025-01-01', dateTo: '2026-10-01' }, { maxDays: 400 }),
|
|
)
|
|
})
|
|
|
|
test('resolveFinanceDateRange defaults to the recent N calendar days', () => {
|
|
const range = resolveFinanceDateRange({ dateTo: '2026-10-22' }, { defaultDays: 7 })
|
|
assert.deepEqual(range, { fromDate: '2026-10-16', toDate: '2026-10-22' })
|
|
assert.equal(diffDays(range.fromDate, range.toDate) + 1, 7)
|
|
})
|
|
|
|
test('shiftDate crosses months without timezone drift', () => {
|
|
assert.equal(shiftDate('2026-03-01', -1), '2026-02-28')
|
|
assert.equal(shiftDate('2026-12-31', 1), '2027-01-01')
|
|
})
|