34 lines
1.5 KiB
TypeScript
34 lines
1.5 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import {
|
|
dateRangeModeLabel,
|
|
getQuickDateRange,
|
|
inferDateRangeMode,
|
|
normalizeDateRange,
|
|
} from './date-range.js';
|
|
|
|
const FRIDAY = new Date(2026, 7, 7, 16, 30, 0);
|
|
|
|
test('builds shared quick date ranges from local calendar days', () => {
|
|
assert.deepEqual(getQuickDateRange('thisWeek', FRIDAY), { start: '2026-08-03', end: '2026-08-07' });
|
|
assert.deepEqual(getQuickDateRange('thisMonth', FRIDAY), { start: '2026-08-01', end: '2026-08-07' });
|
|
assert.deepEqual(getQuickDateRange('last15', FRIDAY), { start: '2026-07-24', end: '2026-08-07' });
|
|
});
|
|
|
|
test('normalizes date order and publishes consistent labels', () => {
|
|
assert.deepEqual(normalizeDateRange('2026-08-07', '2026-08-01'), { start: '2026-08-01', end: '2026-08-07' });
|
|
assert.equal(dateRangeModeLabel('thisMonth'), '本月');
|
|
assert.equal(dateRangeModeLabel('custom'), '自定义区间');
|
|
});
|
|
|
|
test('restores a quick mode only while URL dates still match that calendar range', () => {
|
|
assert.equal(inferDateRangeMode('2026-08-03', '2026-08-07', FRIDAY), 'thisWeek');
|
|
assert.equal(inferDateRangeMode('2026-08-01', '2026-08-07', FRIDAY), 'thisMonth');
|
|
assert.equal(inferDateRangeMode('2026-08-07', '2026-07-24', FRIDAY), 'last15');
|
|
assert.equal(inferDateRangeMode('2026-08-01', '2026-08-06', FRIDAY), 'custom');
|
|
assert.equal(
|
|
inferDateRangeMode('2026-08-01', '2026-08-07', new Date(2026, 7, 8, 9, 0, 0)),
|
|
'custom',
|
|
);
|
|
});
|