import { fireEvent, render, screen, waitFor } from "@testing-library/react";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { LlamaCppProviderCard } from "../LlamaCppProviderCard";
const fetchLlamaCppStatus = vi.fn();
const setLlamaCppEnabled = vi.fn();
vi.mock("../../api", () => ({
fetchLlamaCppStatus: (...args: unknown[]) => fetchLlamaCppStatus(...args),
setLlamaCppEnabled: (...args: unknown[]) => setLlamaCppEnabled(...args),
}));
describe("LlamaCppProviderCard", () => {
beforeEach(() => {
fetchLlamaCppStatus.mockResolvedValue({
enabled: false,
ready: false,
extension: { status: "ok" },
server: { available: true, url: "http://127.0.0.1:8080", hasApiKey: false },
});
setLlamaCppEnabled.mockResolvedValue({ enabled: true, restartRequired: false });
});
it("renders and enables provider", async () => {
render();
await waitFor(() => expect(fetchLlamaCppStatus).toHaveBeenCalled());
fireEvent.click(screen.getByRole("button", { name: "Enable" }));
await waitFor(() => expect(setLlamaCppEnabled).toHaveBeenCalledWith(true));
});
it("uses shared auth card layout in compact settings mode", async () => {
render();
const card = await screen.findByTestId("llama-cpp-provider-card");
expect(card.className).toContain("auth-provider-card");
expect(card.querySelector(".auth-provider-header")).toBeTruthy();
expect(card.querySelector(".auth-provider-info")).toBeTruthy();
expect(card.querySelector(".auth-provider-cli-actions")).toBeTruthy();
expect(card.querySelector(".auth-hint.llama-cpp-status")).toBeTruthy();
});
});