/** * Component: Toast Tests * Documentation: documentation/frontend/components.md */ // @vitest-environment jsdom import React from 'react'; import { act, fireEvent, render, screen } from '@testing-library/react'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { ToastProvider, useToast } from '@/components/ui/Toast'; const ToastHarness = () => { const { success, error } = useToast(); return (
); }; describe('ToastProvider', () => { beforeEach(() => { vi.useFakeTimers(); }); afterEach(() => { vi.useRealTimers(); }); it('adds and auto-removes toasts after the duration', async () => { render( ); fireEvent.click(screen.getByRole('button', { name: 'Add Success' })); expect(screen.getByText('Saved')).toBeInTheDocument(); await act(async () => { vi.advanceTimersByTime(1000); }); expect(screen.queryByText('Saved')).toBeNull(); }); it('removes a toast when the close button is clicked', () => { render( ); fireEvent.click(screen.getByRole('button', { name: 'Add Error' })); expect(screen.getByText('Failed')).toBeInTheDocument(); fireEvent.click(screen.getByRole('button', { name: 'Close' })); expect(screen.queryByText('Failed')).toBeNull(); }); });