import { configure, shallow } from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; import * as React from 'react'; import { View } from 'react-native'; import renderer from 'react-test-renderer'; import MDCodeBox from '../index'; configure({ adapter: new Adapter() }); it('renders correctly with defaults', () => { const component = renderer.create().toJSON(); expect(component).toMatchSnapshot(); }); it('renders correctly with maxlength equal to 6', () => { const component = shallow(); const input = component.find('MDTextInput'); expect(input).toHaveLength(1); const text = component.find('Text'); expect(text).toHaveLength(6); }); it('renders correctly with infinite length', () => { const component = shallow(); const input = component.find('MDTextInput'); expect(input).toHaveLength(1); expect(input.first().props().maxLength).toEqual(-1); const text = component.find('Text'); expect(text).toHaveLength(0); }); it('renders correctly with security', () => { const component = shallow(); const security = component .find('MDTextInput') .first() .prop('secureTextEntry'); expect(security).toEqual(true); }); it('renders codebox correctly with system keyboard', () => { const component = shallow(); const keyboard = component.find('MDNumberKeyboard'); expect(keyboard).toHaveLength(0); }); it('test focus and blur event', () => { const mockFocus = jest.fn(); const mockBlur = jest.fn(); const component = shallow( ); const input = component.find('MDTextInput'); input.simulate('focus'); expect(mockFocus.mock.calls.length).toEqual(1); expect(component.state('focused')).toEqual(true); input.simulate('blur'); expect(mockBlur.mock.calls.length).toEqual(1); expect(component.state('focused')).toEqual(false); }); it('test change text event', () => { const mockCallBack = jest.fn(); const component = shallow( ); component.find('MDTextInput').simulate('changeText', '0123'); expect(mockCallBack.mock.calls[0][0]).toEqual('0123'); }); it('test cursor blink when maxlength equal to -1', () => { const mockCallBack = jest.fn(); const component = shallow( ); const input = component.find('MDTextInput'); input.simulate('focus'); input.simulate('changeText', '0123'); expect(mockCallBack.mock.calls[0][0]).toEqual('0123'); input.simulate('blur'); }); it('test security dot', (done) => { const component = shallow(); const input = component.find('MDTextInput'); input.simulate('changeText', '0123'); setTimeout(() => { const dot = component.findWhere((w) => { return ( w.type() === View && w.prop('style').width === 6 && w.prop('style').height === 6 ); }); expect(dot).toHaveLength(4); done(); }, 300); });