Files
lucia-frontend/tests/unit/module/abbreviateNumber.test.js
2026-03-08 12:11:57 +08:00

56 lines
1.5 KiB
JavaScript

// The Lucia project.
// Copyright 2026-2026 DSP, inc. All rights reserved.
// Authors:
// imacat.yang@dsp.im (imacat), 2026/03/05
import { describe, it, expect } from "vitest";
import abbreviateNumber from "@/module/abbreviateNumber.js";
describe("abbreviateNumber", () => {
it('returns "0" for 0 seconds', () => {
expect(abbreviateNumber(0)).toBe("0");
});
it("returns seconds only when < 60", () => {
expect(abbreviateNumber(45).trim()).toBe("45s");
});
it("returns minutes and seconds", () => {
// 2m 30s = 150s
expect(abbreviateNumber(150).trim()).toBe("2m 30s");
});
it("returns hours, minutes, and seconds", () => {
// 1h 1m 1s = 3661s
expect(abbreviateNumber(3661).trim()).toBe("1h 1m 1s");
});
it("returns days, hours, minutes, and seconds", () => {
// 1d 2h 3m 4s = 93784s
expect(abbreviateNumber(93784).trim()).toBe("1d 2h 3m 4s");
});
it("handles exact day boundary", () => {
// 1d = 86400s
expect(abbreviateNumber(86400).trim()).toBe("1d");
});
it("handles exact hour boundary", () => {
// 1h = 3600s
expect(abbreviateNumber(3600).trim()).toBe("1h");
});
it("handles string input by parsing as int", () => {
expect(abbreviateNumber("150").trim()).toBe("2m 30s");
});
it("handles NaN input", () => {
expect(abbreviateNumber("abc").trim()).toBe("");
});
it("does not have trailing whitespace", () => {
expect(abbreviateNumber(45)).toBe("45s");
expect(abbreviateNumber(3661)).toBe("1h 1m 1s");
});
});