63 lines
2.0 KiB
TypeScript
63 lines
2.0 KiB
TypeScript
import { beforeAll, beforeEach, describe, expect, it } from "vitest";
|
|
import { setDefaultChannelPluginRegistryForTests } from "./channel-test-helpers.js";
|
|
import { configMocks, offsetMocks } from "./channels.mock-harness.js";
|
|
import { baseConfigSnapshot, createTestRuntime } from "./test-runtime-config-helpers.js";
|
|
|
|
const runtime = createTestRuntime();
|
|
let channelsAddCommand: typeof import("./channels.js").channelsAddCommand;
|
|
|
|
describe("channelsAddCommand", () => {
|
|
beforeAll(async () => {
|
|
({ channelsAddCommand } = await import("./channels.js"));
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
configMocks.readConfigFileSnapshot.mockClear();
|
|
configMocks.writeConfigFile.mockClear();
|
|
offsetMocks.deleteTelegramUpdateOffset.mockClear();
|
|
runtime.log.mockClear();
|
|
runtime.error.mockClear();
|
|
runtime.exit.mockClear();
|
|
setDefaultChannelPluginRegistryForTests();
|
|
});
|
|
|
|
it("clears telegram update offsets when the token changes", async () => {
|
|
configMocks.readConfigFileSnapshot.mockResolvedValue({
|
|
...baseConfigSnapshot,
|
|
config: {
|
|
channels: {
|
|
telegram: { botToken: "old-token", enabled: true },
|
|
},
|
|
},
|
|
});
|
|
|
|
await channelsAddCommand(
|
|
{ channel: "telegram", account: "default", token: "new-token" },
|
|
runtime,
|
|
{ hasFlags: true },
|
|
);
|
|
|
|
expect(offsetMocks.deleteTelegramUpdateOffset).toHaveBeenCalledTimes(1);
|
|
expect(offsetMocks.deleteTelegramUpdateOffset).toHaveBeenCalledWith({ accountId: "default" });
|
|
});
|
|
|
|
it("does not clear telegram update offsets when the token is unchanged", async () => {
|
|
configMocks.readConfigFileSnapshot.mockResolvedValue({
|
|
...baseConfigSnapshot,
|
|
config: {
|
|
channels: {
|
|
telegram: { botToken: "same-token", enabled: true },
|
|
},
|
|
},
|
|
});
|
|
|
|
await channelsAddCommand(
|
|
{ channel: "telegram", account: "default", token: "same-token" },
|
|
runtime,
|
|
{ hasFlags: true },
|
|
);
|
|
|
|
expect(offsetMocks.deleteTelegramUpdateOffset).not.toHaveBeenCalled();
|
|
});
|
|
});
|