import { beforeEach, describe, expect, it, vi } from "vitest";
import { renderWithProviders } from "test-utils";
import { createRoutesStub } from "react-router";
import { fireEvent, screen, waitFor } from "@testing-library/react";
import SettingsService from "#/api/settings-service/settings-service.api";
import { SettingsForm } from "#/components/shared/modals/settings/settings-form";
import { DEFAULT_SETTINGS } from "#/services/settings";
import { getAgentSettingValue } from "#/utils/sdk-settings-schema";
describe("SettingsForm", () => {
const onCloseMock = vi.fn();
const saveSettingsSpy = vi.spyOn(SettingsService, "saveSettings");
const RouteStub = createRoutesStub([
{
Component: () => (
),
path: "/",
},
]);
beforeEach(() => {
vi.clearAllMocks();
saveSettingsSpy.mockResolvedValue(true);
});
it("should save the user settings and close the modal when the form is submitted", async () => {
renderWithProviders();
await waitFor(() =>
expect(screen.getByTestId("llm-model-input")).toHaveValue(
"claude-opus-4-5-20251101",
),
);
fireEvent.submit(screen.getByTestId("settings-form"));
await waitFor(() =>
expect(saveSettingsSpy).toHaveBeenCalledWith(
expect.objectContaining({
agent_settings_diff: expect.objectContaining({
llm: expect.objectContaining({
model: getAgentSettingValue(DEFAULT_SETTINGS, "llm.model"),
}),
}),
}),
),
);
await waitFor(() => expect(onCloseMock).toHaveBeenCalled());
});
});