// PricingCoverageBanner: amber warning only when coverage is incomplete;
// silent (null) when everything is covered. Fabricated PricingCoverageResult.

import { describe, expect, it } from "vitest";
import { render, screen } from "@testing-library/react";
import { PricingCoverageBanner } from "@/components/regions/PricingCoverageBanner";
import type { PricingCoverageResult } from "@/engine/pricing";

const covered: PricingCoverageResult = {
  allCovered: true,
  missingCompute: [],
  missingStorageRate: null,
  coveredCompute: ["m6a.large"],
  computeSpec: {},
};

const missing: PricingCoverageResult = {
  allCovered: false,
  missingCompute: ["m6a.xlarge", "r5a.large"],
  missingStorageRate: "gp3",
  coveredCompute: ["m6a.large"],
  computeSpec: {},
};

describe("PricingCoverageBanner", () => {
  it("renders nothing when pricing is fully covered", () => {
    const { container } = render(<PricingCoverageBanner coverage={covered} />);
    expect(container).toBeEmptyDOMElement();
  });

  it("warns and counts missing compute and storage rates", () => {
    render(<PricingCoverageBanner coverage={missing} />);
    expect(screen.getByText(/Pricing incomplete/)).toBeTruthy();
    expect(screen.getByText("3 missing rate(s)")).toBeTruthy();
    expect(screen.getByText("3 missing rate(s)").title).toContain("m6a.xlarge");
    expect(screen.getByText("3 missing rate(s)").title).toContain("gp3");
  });
});
