import { describe, expect, it } from "vitest"; import { migrateTelegramGroupConfig } from "./group-migration.js"; describe("migrateTelegramGroupConfig", () => { it("migrates global group ids", () => { const cfg = { channels: { telegram: { groups: { "-123": { requireMention: false }, }, }, }, }; const result = migrateTelegramGroupConfig({ cfg, accountId: "default", oldChatId: "-123", newChatId: "-100123", }); expect(result.migrated).toBe(true); expect(cfg.channels.telegram.groups).toEqual({ "-100123": { requireMention: false }, }); }); it("migrates account-scoped groups", () => { const cfg = { channels: { telegram: { accounts: { primary: { groups: { "-123": { requireMention: true }, }, }, }, }, }, }; const result = migrateTelegramGroupConfig({ cfg, accountId: "primary", oldChatId: "-123", newChatId: "-100123", }); expect(result.migrated).toBe(true); expect(result.scopes).toEqual(["account"]); expect(cfg.channels.telegram.accounts.primary.groups).toEqual({ "-100123": { requireMention: true }, }); }); it("matches account ids case-insensitively", () => { const cfg = { channels: { telegram: { accounts: { Primary: { groups: { "-123": {}, }, }, }, }, }, }; const result = migrateTelegramGroupConfig({ cfg, accountId: "primary", oldChatId: "-123", newChatId: "-100123", }); expect(result.migrated).toBe(true); expect(cfg.channels.telegram.accounts.Primary.groups).toEqual({ "-100123": {}, }); }); it("skips migration when new id already exists", () => { const cfg = { channels: { telegram: { groups: { "-123": { requireMention: true }, "-100123": { requireMention: false }, }, }, }, }; const result = migrateTelegramGroupConfig({ cfg, accountId: "default", oldChatId: "-123", newChatId: "-100123", }); expect(result.migrated).toBe(false); expect(result.skippedExisting).toBe(true); expect(cfg.channels.telegram.groups).toEqual({ "-123": { requireMention: true }, "-100123": { requireMention: false }, }); }); });