import React from 'react'
import { render, fireEvent, act, wait } from '@testing-library/react'
import { Togglable } from './Togglable'
import { BaseInput } from './Input'

test('Togglable enables and disables interior element', async () => {
  const { queryByTestId, getByLabelText } = render(
    <Togglable label='Enable' id='enable'>{
      (checked) => <BaseInput data-testid='input' required={checked}/>
    }</Togglable>
  )

  expect(queryByTestId('input')).toBeNull()

  act(() => {
    fireEvent.click(getByLabelText(/^Enable/))
  })

  await wait(() => expect(queryByTestId('input')).toBeTruthy())

  act(() => {
    fireEvent.click(getByLabelText(/^Enable/))
  })

  await wait(() => expect(queryByTestId('input')).toBeNull())
})