/* eslint-disable import-x/order */ import { render, screen, fireEvent } from '@testing-library/react'; import { describe, it, expect, beforeEach, vi } from 'vitest'; // ─── Mock preferences-store before module load ─────────────────────────────── const toggleDensityMock = vi.fn(); const setDensityMock = vi.fn(); let mockDensity: 'compact' | 'regular' = 'regular'; vi.mock('@/lib/preferences-store', () => ({ usePreferencesStore: () => ({ density: mockDensity, toggleDensity: toggleDensityMock, setDensity: setDensityMock, }), })); import { DensityToggle } from '../density-toggle'; describe('DensityToggle', () => { beforeEach(() => { mockDensity = 'regular'; toggleDensityMock.mockReset(); toggleDensityMock.mockImplementation(() => { mockDensity = mockDensity === 'compact' ? 'regular' : 'compact'; }); }); it('renders a button with role switch', () => { render(); expect(screen.getByRole('switch')).toBeInTheDocument(); }); it('aria-checked=false when density is regular', () => { render(); expect(screen.getByRole('switch')).toHaveAttribute('aria-checked', 'false'); }); it('aria-checked=true when density is compact', () => { mockDensity = 'compact'; render(); expect(screen.getByRole('switch')).toHaveAttribute('aria-checked', 'true'); }); it('calls toggleDensity on click', () => { render(); fireEvent.click(screen.getByRole('switch')); expect(toggleDensityMock).toHaveBeenCalledOnce(); }); it('shows custom aria-label when provided', () => { render(); expect(screen.getByLabelText('Custom label')).toBeInTheDocument(); }); });