diff options
Diffstat (limited to 'src/utils/datetime.test.ts')
-rw-r--r-- | src/utils/datetime.test.ts | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/src/utils/datetime.test.ts b/src/utils/datetime.test.ts index 5f0749d..03e2771 100644 --- a/src/utils/datetime.test.ts +++ b/src/utils/datetime.test.ts @@ -1,6 +1,10 @@ import { assertEquals, assertMatch } from "@std/assert"; import { describe, it } from "@std/testing/bdd"; -import { toIso8601Full, toIso8601FullUTC } from "./datetime.ts"; +import { + getRelativeTimeUnit, + toIso8601Full, + toIso8601FullUTC, +} from "./datetime.ts"; describe("toIso8601Full", () => { it("formats current local time with offset", () => { @@ -60,3 +64,71 @@ describe("toIso8601FullUTC", () => { assertMatch(result, /^-\d{6}-03-15T12:00:00\.000Z$/); }); }); + +describe("getRelativeTimeUnit", () => { + const now = new Date(); + + it("returns seconds for differences under a minute", () => { + const future = new Date(now.getTime() + 45 * 1000); + const [value, unit] = getRelativeTimeUnit(future); + + assertEquals(unit, "second"); + assertEquals(value, 1); + }); + + it("returns minutes for differences under an hour but over a minute", () => { + const future = new Date(now.getTime() + 15 * 60 * 1000); + const [value, unit] = getRelativeTimeUnit(future); + + assertEquals(unit, "minute"); + assertEquals(value, 15); + }); + + it("returns hours for differences under a day but over an hour", () => { + const past = new Date(now.getTime() - 3.2 * 60 * 60 * 1000); + const [value, unit] = getRelativeTimeUnit(past); + + assertEquals(unit, "hour"); + assertEquals(value, -3); + }); + + it("returns days for differences under a week but over a day", () => { + const past = new Date(now.getTime() - 2.5 * 24 * 60 * 60 * 1000); + const [value, unit] = getRelativeTimeUnit(past); + + assertEquals(unit, "day"); + assertEquals(value, -3); + }); + + it("returns weeks for differences under a month but over a week", () => { + const future = new Date(now.getTime() + 2.3 * 7 * 24 * 60 * 60 * 1000); + const [value, unit] = getRelativeTimeUnit(future); + + assertEquals(unit, "week"); + assertEquals(value, 2); + }); + + it("returns months for differences under a quarter but over a month", () => { + const past = new Date(now.getTime() - 1.5 * 30 * 24 * 60 * 60 * 1000); + const [value, unit] = getRelativeTimeUnit(past); + + assertEquals(unit, "month"); + assertEquals(value, -2); + }); + + it("returns quarters for differences under a year but over a quarter", () => { + const future = new Date(now.getTime() + 5 * 30 * 24 * 60 * 60 * 1000); + const [value, unit] = getRelativeTimeUnit(future); + + assertEquals(unit, "quarter"); + assertEquals(value, 2); + }); + + it("returns years for differences over a year", () => { + const past = new Date(now.getTime() - 3.4 * 365 * 24 * 60 * 60 * 1000); + const [value, unit] = getRelativeTimeUnit(past); + + assertEquals(unit, "year"); + assertEquals(value, -3); + }); +}); |