import { cleanup, fireEvent, render, screen } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import DowngradeWarningModal from '../downgrade-warning' describe('DowngradeWarningModal', () => { const mockOnCancel = vi.fn() const mockOnJustDowngrade = vi.fn() const mockOnExcludeAndDowngrade = vi.fn() beforeEach(() => { vi.clearAllMocks() }) afterEach(() => { cleanup() }) it('renders title and description', () => { render( , ) expect(screen.getByText('plugin.autoUpdate.pluginDowngradeWarning.title')).toBeInTheDocument() expect(screen.getByText('plugin.autoUpdate.pluginDowngradeWarning.description')).toBeInTheDocument() }) it('renders three action buttons', () => { render( , ) expect(screen.getByText('app.newApp.Cancel')).toBeInTheDocument() expect(screen.getByText('plugin.autoUpdate.pluginDowngradeWarning.downgrade')).toBeInTheDocument() expect(screen.getByText('plugin.autoUpdate.pluginDowngradeWarning.exclude')).toBeInTheDocument() }) it('calls onCancel when Cancel is clicked', () => { render( , ) fireEvent.click(screen.getByText('app.newApp.Cancel')) expect(mockOnCancel).toHaveBeenCalledTimes(1) }) it('calls onJustDowngrade when downgrade button is clicked', () => { render( , ) fireEvent.click(screen.getByText('plugin.autoUpdate.pluginDowngradeWarning.downgrade')) expect(mockOnJustDowngrade).toHaveBeenCalledTimes(1) }) it('calls onExcludeAndDowngrade when exclude button is clicked', () => { render( , ) fireEvent.click(screen.getByText('plugin.autoUpdate.pluginDowngradeWarning.exclude')) expect(mockOnExcludeAndDowngrade).toHaveBeenCalledTimes(1) }) })