format.test.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { describe, expect, test } from "bun:test"
  2. import { formatDuration } from "../../src/util/format"
  3. describe("util.format", () => {
  4. describe("formatDuration", () => {
  5. test("returns empty string for zero or negative values", () => {
  6. expect(formatDuration(0)).toBe("")
  7. expect(formatDuration(-1)).toBe("")
  8. expect(formatDuration(-100)).toBe("")
  9. })
  10. test("formats seconds under a minute", () => {
  11. expect(formatDuration(1)).toBe("1s")
  12. expect(formatDuration(30)).toBe("30s")
  13. expect(formatDuration(59)).toBe("59s")
  14. })
  15. test("formats minutes under an hour", () => {
  16. expect(formatDuration(60)).toBe("1m")
  17. expect(formatDuration(61)).toBe("1m 1s")
  18. expect(formatDuration(90)).toBe("1m 30s")
  19. expect(formatDuration(120)).toBe("2m")
  20. expect(formatDuration(330)).toBe("5m 30s")
  21. expect(formatDuration(3599)).toBe("59m 59s")
  22. })
  23. test("formats hours under a day", () => {
  24. expect(formatDuration(3600)).toBe("1h")
  25. expect(formatDuration(3660)).toBe("1h 1m")
  26. expect(formatDuration(7200)).toBe("2h")
  27. expect(formatDuration(8100)).toBe("2h 15m")
  28. expect(formatDuration(86399)).toBe("23h 59m")
  29. })
  30. test("formats days under a week", () => {
  31. expect(formatDuration(86400)).toBe("~1 day")
  32. expect(formatDuration(172800)).toBe("~2 days")
  33. expect(formatDuration(259200)).toBe("~3 days")
  34. expect(formatDuration(604799)).toBe("~6 days")
  35. })
  36. test("formats weeks", () => {
  37. expect(formatDuration(604800)).toBe("~1 week")
  38. expect(formatDuration(1209600)).toBe("~2 weeks")
  39. expect(formatDuration(1609200)).toBe("~2 weeks")
  40. })
  41. test("handles boundary values correctly", () => {
  42. expect(formatDuration(59)).toBe("59s")
  43. expect(formatDuration(60)).toBe("1m")
  44. expect(formatDuration(3599)).toBe("59m 59s")
  45. expect(formatDuration(3600)).toBe("1h")
  46. expect(formatDuration(86399)).toBe("23h 59m")
  47. expect(formatDuration(86400)).toBe("~1 day")
  48. expect(formatDuration(604799)).toBe("~6 days")
  49. expect(formatDuration(604800)).toBe("~1 week")
  50. })
  51. })
  52. })