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);
});
});