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 ,
});
});
});
Messung V0.5 in Prozent C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland