import { render, screen } from '@testing-library/react' import { useContextSelector } from 'use-context-selector' // context.spec.tsx import { describe, expect, it } from 'vitest' import RadioGroupContext from './index' function Consumer() { const value = useContextSelector(RadioGroupContext, v => v) return
{JSON.stringify(value)}
} describe('RadioGroupContext', () => { it('provides null as default value when no provider is used', () => { render() const node = screen.getByTestId('ctx-value') expect(node).toBeInTheDocument() expect(node).toHaveTextContent('null') }) it('provides value from provider when wrapped', () => { const providedValue = { value: 'radio', onChange: () => {} } render( , ) const node = screen.getByTestId('ctx-value') expect(node).toBeInTheDocument() expect(node).toHaveTextContent(JSON.stringify(providedValue)) }) it('updates when provider value changes', () => { const first = { value: 'first', onChange: () => {} } const second = { value: 'second', onChange: () => {} } const { rerender } = render( , ) expect(screen.getByTestId('ctx-value')).toHaveTextContent( JSON.stringify(first), ) rerender( , ) expect(screen.getByTestId('ctx-value')).toHaveTextContent( JSON.stringify(second), ) }) })