import assert from 'node:assert/strict'; import test from 'node:test'; import { customerClause, dateRangeClause, enumerateDateRange, resolveDateRange, } from './query-model.js'; test('车辆归属按账本 vehicle_id 区分羚牛和外部车辆', () => { assert.equal(customerClause('external'), 'vehicle_id IS NULL'); assert.equal(customerClause('lingniu'), 'vehicle_id IS NOT NULL'); assert.equal(customerClause('all'), '1=1'); }); test('能源日期快捷区间继续按本地自然日计算', () => { const now = new Date(2026, 7, 12, 23, 30); assert.deepEqual(resolveDateRange('thisWeek', undefined, undefined, now), { start: '2026-08-10', end: '2026-08-12', }); assert.deepEqual(resolveDateRange('thisMonth', undefined, undefined, now), { start: '2026-08-01', end: '2026-08-12', }); assert.deepEqual(resolveDateRange('last15', undefined, undefined, now), { start: '2026-07-29', end: '2026-08-12', }); }); test('合法自定义日期优先并在倒置时交换边界', () => { assert.deepEqual(resolveDateRange('last15', '2026-08-12', '2026-08-01'), { start: '2026-08-01', end: '2026-08-12', }); assert.deepEqual(resolveDateRange('last15', 'invalid', '2026-08-01', new Date(2026, 7, 12)), { start: '2026-07-29', end: '2026-08-12', }); }); test('补零日期序列包含首尾且 SQL 日期上界保持开区间', () => { assert.deepEqual(enumerateDateRange('2026-08-10', '2026-08-12'), [ '2026-08-10', '2026-08-11', '2026-08-12', ]); assert.equal( dateRangeClause('b.refuel_time'), 'b.refuel_time >= ? AND b.refuel_time < DATE_ADD(?, INTERVAL 1 DAY)', ); });