import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { cleanup, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import {
DEFAULT_MANUAL_CREATE_FIELDS,
DEFAULT_QUICK_CREATE_FIELDS,
useIssueCreateSettingsStore,
} from "@multica/core/issues/stores/issue-create-settings-store";
import { renderWithI18n } from "../../test/i18n";
import { IssueTab } from "./issue-tab";
function resetStore() {
useIssueCreateSettingsStore.setState({
quickCreateFields: DEFAULT_QUICK_CREATE_FIELDS,
manualCreateFields: DEFAULT_MANUAL_CREATE_FIELDS,
});
}
describe("IssueTab", () => {
beforeEach(resetStore);
afterEach(() => {
cleanup();
resetStore();
});
it("renders a switch per field with the persisted selection", () => {
renderWithI18n();
// 3 quick create fields + 7 manual create fields.
const switches = screen.getAllByRole("switch");
expect(switches).toHaveLength(10);
// Quick create defaults to project only.
const [quickProject, quickPriority, quickDueDate] = switches;
expect(quickProject).toBeChecked();
expect(quickPriority).not.toBeChecked();
expect(quickDueDate).not.toBeChecked();
// Manual create defaults to the classic toolbar; dates start hidden.
const manual = switches.slice(3);
for (const s of manual.slice(0, 5)) expect(s).toBeChecked();
expect(manual[5]).not.toBeChecked();
expect(manual[6]).not.toBeChecked();
});
it("persists enabling a quick create field", async () => {
const user = userEvent.setup();
renderWithI18n();
const [, quickPriority] = screen.getAllByRole("switch");
await user.click(quickPriority!);
expect(useIssueCreateSettingsStore.getState().quickCreateFields).toEqual([
"project",
"priority",
]);
});
it("persists hiding a manual create field without touching quick create", async () => {
const user = userEvent.setup();
renderWithI18n();
// Manual section starts at index 3; labels is its 4th row (index 6 overall).
const manualLabels = screen.getAllByRole("switch")[6];
await user.click(manualLabels!);
expect(useIssueCreateSettingsStore.getState().manualCreateFields).toEqual([
"status",
"priority",
"assignee",
"project",
]);
expect(useIssueCreateSettingsStore.getState().quickCreateFields).toEqual(["project"]);
});
});