import { render, screen, fireEvent } from '@testing-library/react' import { useAtom } from 'jotai' import '@testing-library/jest-dom' import CopyOverInstruction from './index' // Mock the `useAtom` hook from jotai jest.mock('jotai', () => ({ useAtom: jest.fn(), atom: jest.fn(), })) describe('CopyOverInstruction', () => { const setCopyOverInstructionEnabled = jest.fn() beforeEach(() => { ;(useAtom as jest.Mock).mockImplementation(() => [ false, setCopyOverInstructionEnabled, ]) }) afterEach(() => { jest.clearAllMocks() }) it('should render the component with the switch in the correct state', () => { render() // Assert the text is rendered expect( screen.getByText(/Save instructions for new threads/i) ).toBeInTheDocument() // Assert the switch is rendered and in the unchecked state const switchInput = screen.getByRole('checkbox') expect(switchInput).toBeInTheDocument() expect(switchInput).not.toBeChecked() }) it('should call setCopyOverInstructionEnabled when the switch is toggled', () => { render() const switchInput = screen.getByRole('checkbox') // Simulate toggling the switch fireEvent.click(switchInput) // Assert that the atom setter is called with true when checked expect(setCopyOverInstructionEnabled).toHaveBeenCalledWith(true) }) it('should reflect the updated state when the atom value changes', () => { // Mock the atom to return true (enabled state) ;(useAtom as jest.Mock).mockImplementation(() => [ true, setCopyOverInstructionEnabled, ]) render() const switchInput = screen.getByRole('checkbox') // The switch should now be checked expect(switchInput).toBeChecked() }) })