refactor: modularize application domains
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import {
|
||||
customerClause,
|
||||
dateRangeClause,
|
||||
enumerateDateRange,
|
||||
resolveDateRange,
|
||||
} from './query-model.js';
|
||||
|
||||
test('客户范围继续让外部车辆返回空数据', () => {
|
||||
assert.equal(customerClause('external'), '1=0');
|
||||
assert.equal(customerClause('lingniu'), '1=1');
|
||||
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)',
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user