45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "@jest/globals";
|
|
import { getDateForRange, getDateFormat } from "../../../src/utils/dataUtils.ts";
|
|
import { DateRanges, type DateRange } from "../../../src/types/query.ts";
|
|
|
|
describe("getDateForRange", () => {
|
|
it.each([
|
|
["recent", 2 * 60 * 60 * 1000],
|
|
["hour", 60 * 60 * 1000],
|
|
["day", 24 * 60 * 60 * 1000],
|
|
["week", 7 * 24 * 60 * 60 * 1000],
|
|
["month", 30 * 24 * 60 * 60 * 1000],
|
|
])("returns now minus the %s window", (range, offsetMs) => {
|
|
const before = Date.now();
|
|
const result = getDateForRange(range as DateRange);
|
|
const after = Date.now();
|
|
|
|
expect(result).toBeInstanceOf(Date);
|
|
expect(result.getTime()).toBeGreaterThanOrEqual(before - offsetMs);
|
|
expect(result.getTime()).toBeLessThanOrEqual(after - offsetMs);
|
|
});
|
|
|
|
it("returns the epoch for 'all'", () => {
|
|
expect(getDateForRange("all")).toEqual(new Date(0));
|
|
});
|
|
});
|
|
|
|
describe("getDateFormat", () => {
|
|
it.each([
|
|
["recent", "%Y-%m-%dT%H:%M:00Z"],
|
|
["hour", "%Y-%m-%dT%H:%M:00Z"],
|
|
["day", "%Y-%m-%dT%H:00:00Z"],
|
|
["week", "%Y-%m-%dT00:00:00Z"],
|
|
["month", "%Y-%m-%dT00:00:00Z"],
|
|
["all", "%Y-%m-%dT00:00:00Z"],
|
|
])("returns the %s bucket format", (range, format) => {
|
|
expect(getDateFormat(range as DateRange)).toBe(format);
|
|
});
|
|
|
|
it("has a format for every member of DateRanges", () => {
|
|
for (const range of DateRanges) {
|
|
expect(getDateFormat(range)).toMatch(/^%Y-%m-%d/);
|
|
}
|
|
});
|
|
});
|