import { describe, expect, it } from "vitest";
import {
  openclawProviderPresets,
  rebaseOpenClawSuggestedDefaults,
} from "@/config/openclawProviderPresets";

describe("Xiaomi MiMo Token Plan presets", () => {
  it("uses a separate OpenClaw provider namespace from pay-as-you-go MiMo", () => {
    const payAsYouGo = openclawProviderPresets.find(
      (item) => item.name === "Xiaomi MiMo",
    );
    const tokenPlan = openclawProviderPresets.find(
      (item) => item.name === "Xiaomi MiMo Token Plan (China)",
    );

    expect(payAsYouGo?.suggestedDefaults?.model?.primary).toBe(
      "xiaomimimo/mimo-v2.5-pro",
    );
    expect(tokenPlan?.suggestedDefaults?.model?.primary).toBe(
      "xiaomi-mimo-token-plan/mimo-v2.5-pro",
    );
    expect(tokenPlan?.suggestedDefaults?.modelCatalog).toHaveProperty(
      "xiaomi-mimo-token-plan/mimo-v2.5-pro",
    );
    expect(tokenPlan?.suggestedDefaults?.modelCatalog).toHaveProperty(
      "xiaomi-mimo-token-plan/mimo-v2.5",
    );
  });

  it("rebases OpenClaw defaults to the submitted provider key", () => {
    const tokenPlan = openclawProviderPresets.find(
      (item) => item.name === "Xiaomi MiMo Token Plan (China)",
    );

    expect(tokenPlan?.suggestedDefaults).toBeDefined();

    const rebased = rebaseOpenClawSuggestedDefaults(
      tokenPlan!.suggestedDefaults!,
      "my-mimo-plan",
    );

    expect(rebased.model?.primary).toBe("my-mimo-plan/mimo-v2.5-pro");
    expect(rebased.modelCatalog).toHaveProperty(
      "my-mimo-plan/mimo-v2.5-pro",
    );
    expect(rebased.modelCatalog).toHaveProperty("my-mimo-plan/mimo-v2.5");
    expect(rebased.modelCatalog).not.toHaveProperty(
      "xiaomi-mimo-token-plan/mimo-v2.5-pro",
    );
  });
});
