import { beforeEach, describe, expect, it, vi } from "vitest";
let API_CONSTANTS: typeof import("grammy").API_CONSTANTS;
let DEFAULT_TELEGRAM_UPDATE_TYPES: typeof import("./allowed-updates.js").DEFAULT_TELEGRAM_UPDATE_TYPES;
let resolveTelegramAllowedUpdates: typeof import("./allowed-updates.js").resolveTelegramAllowedUpdates;

beforeEach(async () => {
  vi.resetModules();
  ({ API_CONSTANTS } = await import("grammy"));
  ({ DEFAULT_TELEGRAM_UPDATE_TYPES, resolveTelegramAllowedUpdates } =
    await import("./allowed-updates.js"));
});

describe("resolveTelegramAllowedUpdates", () => {
  it("includes the default update types plus reaction and channel post support", () => {
    const updates = resolveTelegramAllowedUpdates();

    expect(updates).toEqual(
      expect.arrayContaining([
        ...DEFAULT_TELEGRAM_UPDATE_TYPES,
        ...(API_CONSTANTS?.DEFAULT_UPDATE_TYPES ?? []),
      ]),
    );
    expect(updates).toContain("message_reaction");
    expect(updates).toContain("channel_post");
    expect(new Set(updates).size).toBe(updates.length);
  });
});
