import { fireEvent, render, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it, vi } from 'vitest'; // quick-260930: Stammt die Anordnung von einem neueren Programmstand, ist der // Stift gesperrt und bittet ums Neuladen. vi.mock('next-intl', () => ({ useTranslations: () => (key: string) => key, })); const storeState = vi.hoisted(() => ({ layoutFromNewerVersion: false })); vi.mock('@/lib/stores/dashboard-store', () => ({ useDashboardStore: (selector: (state: typeof storeState) => unknown) => selector(storeState), })); import { EditModeToggle } from './edit-mode-toggle'; beforeEach(() => { storeState.layoutFromNewerVersion = false; }); describe('EditModeToggle (quick-260930)', () => { it('normal: Stift ist bedienbar', () => { const onToggle = vi.fn(); render(); const button = screen.getByRole('button', { name: 'editShort' }); expect(button).toBeEnabled(); fireEvent.click(button); expect(onToggle).toHaveBeenCalledTimes(1); }); it('Anordnung eines neueren Programmstands: gesperrt, Hinweis „neu laden“ als Beschreibung und Tooltip', () => { storeState.layoutFromNewerVersion = true; const onToggle = vi.fn(); render(); const button = screen.getByRole('button', { name: 'editShort' }); expect(button).toBeDisabled(); expect(button).toHaveAttribute('title', 'reloadRequired'); expect(button).toHaveAccessibleDescription('reloadRequired'); fireEvent.click(button); expect(onToggle).not.toHaveBeenCalled(); }); });