| import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; |
| import { |
| getChannelActivity, |
| recordChannelActivity, |
| resetChannelActivityForTest, |
| } from "./channel-activity.js"; |
|
|
| describe("channel activity", () => { |
| beforeEach(() => { |
| resetChannelActivityForTest(); |
| vi.useFakeTimers(); |
| vi.setSystemTime(new Date("2026-01-08T00:00:00Z")); |
| }); |
|
|
| afterEach(() => { |
| vi.useRealTimers(); |
| }); |
|
|
| it("uses the default account for blank inputs and falls back to null timestamps", () => { |
| expect(getChannelActivity({ channel: "telegram" })).toEqual({ |
| inboundAt: null, |
| outboundAt: null, |
| }); |
|
|
| recordChannelActivity({ |
| channel: "telegram", |
| accountId: " ", |
| direction: "inbound", |
| }); |
|
|
| expect(getChannelActivity({ channel: "telegram", accountId: null })).toEqual({ |
| inboundAt: 1767830400000, |
| outboundAt: null, |
| }); |
| }); |
|
|
| it("keeps inbound and outbound timestamps independent and trims account ids", () => { |
| recordChannelActivity({ |
| channel: "whatsapp", |
| accountId: " team-a ", |
| direction: "inbound", |
| at: 10, |
| }); |
| recordChannelActivity({ |
| channel: "whatsapp", |
| accountId: "team-a", |
| direction: "outbound", |
| at: 20, |
| }); |
| recordChannelActivity({ |
| channel: "whatsapp", |
| accountId: "team-a", |
| direction: "inbound", |
| at: 30, |
| }); |
|
|
| expect(getChannelActivity({ channel: "whatsapp", accountId: " team-a " })).toEqual({ |
| inboundAt: 30, |
| outboundAt: 20, |
| }); |
| }); |
|
|
| it("keeps activity isolated per account on the same channel", () => { |
| recordChannelActivity({ |
| channel: "telegram", |
| accountId: "team-a", |
| direction: "inbound", |
| at: 10, |
| }); |
| recordChannelActivity({ |
| channel: "telegram", |
| accountId: "team-b", |
| direction: "outbound", |
| at: 20, |
| }); |
|
|
| expect(getChannelActivity({ channel: "telegram", accountId: "team-a" })).toEqual({ |
| inboundAt: 10, |
| outboundAt: null, |
| }); |
| expect(getChannelActivity({ channel: "telegram", accountId: " team-b " })).toEqual({ |
| inboundAt: null, |
| outboundAt: 20, |
| }); |
| }); |
|
|
| it("reset clears previously recorded activity", () => { |
| recordChannelActivity({ channel: "line", direction: "outbound", at: 7 }); |
| resetChannelActivityForTest(); |
|
|
| expect(getChannelActivity({ channel: "line" })).toEqual({ |
| inboundAt: null, |
| outboundAt: null, |
| }); |
| }); |
| }); |
|
|