forked from jordanlambrecht/tracker-tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpause-state.test.ts
More file actions
36 lines (30 loc) · 1.37 KB
/
Copy pathpause-state.test.ts
File metadata and controls
36 lines (30 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// src/lib/__tests__/pause-state.test.ts
import { describe, expect, it } from "vitest"
import { getPauseState } from "@/lib/tracker-status"
describe("getPauseState", () => {
it("returns not paused when both null", () => {
expect(getPauseState({ pausedAt: null, userPausedAt: null })).toEqual({ isPaused: false })
})
it("returns user pause when only userPausedAt is set", () => {
const result = getPauseState({ pausedAt: null, userPausedAt: "2026-03-21T12:00:00Z" })
expect(result).toEqual({ isPaused: true, reason: "user", since: expect.any(Date) })
})
it("returns failure pause when only pausedAt is set", () => {
const result = getPauseState({ pausedAt: "2026-03-20T10:00:00Z", userPausedAt: null })
expect(result).toEqual({ isPaused: true, reason: "failure", since: expect.any(Date) })
})
it("returns user pause (priority) when both are set", () => {
const result = getPauseState({
pausedAt: "2026-03-20T10:00:00Z",
userPausedAt: "2026-03-21T12:00:00Z",
})
expect(result).toEqual({ isPaused: true, reason: "user", since: expect.any(Date) })
})
it("accepts Date objects (server-side)", () => {
const result = getPauseState({ pausedAt: null, userPausedAt: new Date("2026-03-21") })
expect(result.isPaused).toBe(true)
})
it("handles undefined fields", () => {
expect(getPauseState({})).toEqual({ isPaused: false })
})
})