openskynet / src /infra /channel-activity.test.ts
Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified
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,
});
});
});