import React from 'react'; import { fireEvent, render } from '@testing-library/react-native'; import { NativeBaseProvider } from '../../../../core/NativeBaseProvider'; import { Checkbox } from '..'; import { Text } from '../..'; function CheckBoxGroup() { const [groupValue, setGroupValue] = React.useState(['Item 1 ', 'Item 3 ']); return ( { setGroupValue(values || []); }} > Item 1 Item 2 Item 3 Indeterminate Item ); } function CheckBox(group: any) { const [groupValues, setGroupValues] = React.useState>([]); return group ? ( One setGroupValues([...groupValues, 'two'])} > Two ) : ( <> { setGroupValues([...groupValues, 'one']); }} > One setGroupValues([...groupValues, 'two'])} > Two ); } describe('CheckBoxGroup', () => { it('handles defaults and onChange on checkBoxGroup', () => { const { getAllByRole } = render( ); const checkbox = getAllByRole('checkbox'); expect(checkbox.length).toBe(4); expect(checkbox[0].props.accessibilityState.checked).toBe(true); expect(checkbox[1].props.accessibilityState.checked).toBe(false); expect(checkbox[2].props.accessibilityState.checked).toBe(true); expect(checkbox[3].props.accessibilityState.checked).toBe(false); fireEvent.press(checkbox[1]); expect(checkbox[1].props.accessibilityState.checked).toBe(true); }); it('can be disabled on checkBox', () => { const { getAllByRole } = render( Item 1 Item 2 Item 3 Indeterminate Item ); const checkbox = getAllByRole('checkbox'); expect(checkbox.length).toBe(4); expect(checkbox[1].props.accessibilityState.disabled).toBe(true); }); it('is checked on checkBox', () => { const { getAllByRole } = render( Item 1 Item 2 Item 3 Indeterminate Item ); const checkbox = getAllByRole('checkbox'); expect(checkbox.length).toBe(4); expect(checkbox[0].props.accessibilityState.checked).toBe(true); }); /**** inDeterminant is not yet implemented in checkbox ****/ // it('inDeterminant on checkBoxGroup', () => { // const { getAllByRole } = render( // // // // ); // const checkbox = getAllByRole('checkbox'); // expect(checkbox.length).toBe(2); // expect(checkbox[1].props.accessibilityState.checked).toBe('mixed'); // }); // it('inDeterminant on checkBox', () => { // const { getAllByRole } = render( // // // // ); // const checkbox = getAllByRole('checkbox'); // expect(checkbox.length).toBe(2); // fireEvent.press(checkbox[1]); // expect(checkbox[1].props.accessibilityState.checked).toBe('mixed'); // }); it('onChange on checkBox', () => { const { getAllByRole } = render( ); const checkbox = getAllByRole('checkbox'); expect(checkbox.length).toBe(2); fireEvent.press(checkbox[0]); expect(checkbox[0].props.accessibilityState.checked).toBe(true); }); });