48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import { test } from 'node:test'
|
|
import { buildTrendData, getTrendRangeQuery, TREND_RANGE_OPTIONS } from '../src/utils/dashboardTrend.js'
|
|
|
|
const referenceDate = new Date(2026, 8, 26, 12)
|
|
|
|
test('趋势下拉提供 7 天、14 天和 1 个月三个选项', () => {
|
|
assert.deepEqual(TREND_RANGE_OPTIONS, [
|
|
{ value: 7, label: '近 7 天' },
|
|
{ value: 14, label: '近 14 天' },
|
|
{ value: 30, label: '近 1 个月' }
|
|
])
|
|
})
|
|
|
|
test('趋势范围为近 14 天时,查询从 13 天前开始并包含今天', () => {
|
|
assert.deepEqual(getTrendRangeQuery(14, referenceDate), {
|
|
beginTime: '2026-09-13',
|
|
endTime: '2026-09-26'
|
|
})
|
|
})
|
|
|
|
test('趋势范围为近 1 个月时最多查询 30 天', () => {
|
|
assert.deepEqual(getTrendRangeQuery(30, referenceDate), {
|
|
beginTime: '2026-08-28',
|
|
endTime: '2026-09-26'
|
|
})
|
|
})
|
|
|
|
test('趋势数据按选择的天数生成日期轴并聚合入库单与出库包数', () => {
|
|
const result = buildTrendData(
|
|
[
|
|
{ createTime: '2026-09-20T08:00:00+08:00' },
|
|
{ createTime: '2026-09-24T09:00:00+08:00' },
|
|
{ createTime: '2026-09-24T10:00:00+08:00' }
|
|
],
|
|
[
|
|
{ confirmedAt: '2026-09-20T11:00:00+08:00', packageQty: 4 },
|
|
{ confirmedAt: '2026-09-24T13:00:00+08:00', packageQty: 7 }
|
|
],
|
|
7,
|
|
referenceDate
|
|
)
|
|
|
|
assert.deepEqual(result.labels, ['9/20', '9/21', '9/22', '9/23', '9/24', '9/25', '9/26'])
|
|
assert.deepEqual(result.inbound, [1, 0, 0, 0, 2, 0, 0])
|
|
assert.deepEqual(result.outbound, [4, 0, 0, 0, 7, 0, 0])
|
|
})
|