import React from 'react'; import { describe, it, expect, vi } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/react'; import { ConfirmDialog } from '@/components/ui/ConfirmDialog'; describe('ConfirmDialog', () => { it('renders nothing when open=false', () => { render( {}} onCancel={() => {}} />); expect(screen.queryByText('Wirklich löschen?')).not.toBeInTheDocument(); }); it('renders message when open=true', () => { render( {}} onCancel={() => {}} />); expect(screen.getByText('Wirklich löschen?')).toBeInTheDocument(); }); it('calls onConfirm when confirm button clicked', () => { const onConfirm = vi.fn(); render( {}} />); fireEvent.click(screen.getByRole('button', { name: 'Bestätigen' })); expect(onConfirm).toHaveBeenCalledTimes(1); }); it('calls onCancel when cancel button clicked', () => { const onCancel = vi.fn(); render( {}} onCancel={onCancel} />); fireEvent.click(screen.getByRole('button', { name: 'Abbrechen' })); expect(onCancel).toHaveBeenCalledTimes(1); }); it('renders default title', () => { render( {}} onCancel={() => {}} />); expect(screen.getByText('Bestätigung erforderlich')).toBeInTheDocument(); }); it('renders custom title', () => { render( {}} onCancel={() => {}} />); expect(screen.getByText('Löschen bestätigen')).toBeInTheDocument(); }); it('uses danger variant button when variant=danger', () => { render( {}} onCancel={() => {}} />); const confirmBtn = screen.getByRole('button', { name: 'Bestätigen' }); expect(confirmBtn.className).toContain('bg-danger-600'); }); });