You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gristlabs_grist-core/test/common/ColumnFilterFunc.ts

45 lines
1.5 KiB

import { makeFilterFunc } from "app/common/ColumnFilterFunc";
import { FilterState } from "app/common/FilterState";
import moment from "moment-timezone";
import { assert } from 'chai';
const format = "YYYY-MM-DD HH:mm:ss";
const timezone = 'Europe/Paris';
const parseDateTime = (dateStr: string) => moment.tz(dateStr, format, true, timezone).valueOf() / 1000;
const columnType = `DateTime:${timezone}`;
describe('ColumnFilterFunc', function() {
[
{date: '2023-01-01 23:59:59', expected: false},
{date: '2023-01-02 00:00:00', expected: true},
{date: '2023-01-02 00:00:01', expected: true},
{date: '2023-01-02 01:00:01', expected: true},
].forEach(({date, expected}) => {
const minStr = '2023-01-02';
const state: FilterState = { min: moment.utc(minStr).valueOf() / 1000 };
const filterFunc = makeFilterFunc(state, columnType);
it(`${minStr} <= ${date} should be ${expected}`, function() {
assert.equal(filterFunc(parseDateTime(date)), expected);
});
});
[
{date: '2023-01-11 00:00:00', expected: true},
{date: '2023-01-11 23:59:59', expected: true},
{date: '2023-01-12 00:00:01', expected: false},
].forEach(({date, expected}) => {
const maxStr = '2023-01-11';
const state: FilterState = { max: moment.utc(maxStr).valueOf() / 1000 };
const filterFunc = makeFilterFunc(state, columnType);
it(`${maxStr} >= ${date} should be ${expected}`, function() {
assert.equal(filterFunc(parseDateTime(date)), expected);
});
});
});