import { render, screen, fireEvent, renderHook, act } from '@testing-library/react'; import { describe, it, expect, vi, beforeEach } from 'vitest'; import { ThemeProvider, useTheme } from './ThemeContext'; import React from 'react'; describe('ThemeContext', () => { beforeEach(() => { localStorage.clear(); document.documentElement.classList.remove('dark'); }); it('provides default theme', () => { const wrapper = ({ children }: { children: React.ReactNode }) => ( {children} ); const { result } = renderHook(() => useTheme(), { wrapper }); expect(result.current.theme).toBe('light'); }); it('toggles theme', () => { const wrapper = ({ children }: { children: React.ReactNode }) => ( {children} ); const { result } = renderHook(() => useTheme(), { wrapper }); act(() => { result.current.setTheme('dark'); }); expect(result.current.theme).toBe('dark'); expect(localStorage.getItem('test-theme')).toBe('dark'); expect(document.documentElement.classList.contains('dark')).toBe(true); }); });