import { act, cleanup, fireEvent, render, screen, waitFor } from "@testing-library/react"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { SettingsSaveContributor } from "../settings-save-provider"; import type { MessageQueueSettingsResponse } from "@/lib/types/system"; const fetchSettingsMock = vi.fn(); const updateSettingsMock = vi.fn(); let saveContributor: SettingsSaveContributor | null = null; let currentRole: "admin" | "member" | undefined; const MAXIMUM_LABEL = "Maximum messages per session"; const MERGE_TOGGLE_LABEL = "Enable queued message merging"; const AUTO_MERGE_TOGGLE_LABEL = "Automatically merge consecutive messages"; const EFFECTIVE_VALUE_ID = "message-queue-effective-value"; const ARIA_PRESSED = "aria-pressed"; const SAVE_FAILED = "save failed"; vi.mock("@/lib/api/domains/settings-api", () => ({ fetchMessageQueueSettings: (...args: unknown[]) => fetchSettingsMock(...args), updateMessageQueueSettings: (...args: unknown[]) => updateSettingsMock(...args), })); vi.mock("@/components/state-provider", () => ({ useAppStore: (selector: (state: { auth: { user?: { role: string } } }) => unknown) => selector({ auth: { user: currentRole ? { role: currentRole } : undefined } }), })); vi.mock("../settings-save-provider", () => ({ useSettingsSaveContributor: (contributor: SettingsSaveContributor) => { saveContributor = contributor; }, })); vi.mock("@kandev/ui/switch", () => ({ Switch: ({ checked, disabled, "aria-label": ariaLabel, onCheckedChange, }: { checked: boolean; disabled: boolean; "aria-label": string; onCheckedChange: (checked: boolean) => void; }) => (