import React from 'react';
import { mount } from 'enzyme';
// eslint-disable-next-line import/no-unresolved
import Input from '..';
import focusTest from '../../../tests/shared/focusTest';
import mountTest from '../../../tests/shared/mountTest';
import rtlTest from '../../../tests/shared/rtlTest';
describe('Input.Password', () => {
focusTest(Input.Password);
mountTest(Input.Password);
rtlTest(Input.Password);
it('should get input element from ref', () => {
const wrapper = mount();
expect(wrapper.instance().input instanceof HTMLInputElement).toBe(true);
expect(() => {
wrapper.instance().select();
}).not.toThrow();
});
it('should change type when click', () => {
const wrapper = mount();
wrapper.find('input').simulate('change', { target: { value: '111' } });
expect(wrapper).toMatchSnapshot();
wrapper
.find('.ant-input-password-icon')
.at(0)
.simulate('click');
expect(wrapper).toMatchSnapshot();
wrapper
.find('.ant-input-password-icon')
.at(0)
.simulate('click');
expect(wrapper).toMatchSnapshot();
});
it('visibilityToggle should work', () => {
const wrapper = mount();
expect(wrapper.find('.anticon-eye').length).toBe(0);
wrapper.setProps({ visibilityToggle: true });
expect(wrapper.find('.anticon-eye-invisible').length).toBe(1);
});
it('should not toggle visibility when disabled prop is true', () => {
const wrapper = mount();
expect(wrapper.find('.anticon-eye-invisible').length).toBe(1);
wrapper.find('.anticon-eye-invisible').simulate('click');
expect(wrapper.find('.anticon-eye').length).toBe(0);
});
it('should keep focus state', () => {
const wrapper = mount();
expect(document.activeElement).toBe(
wrapper
.find('input')
.at(0)
.getDOMNode(),
);
wrapper
.find('.ant-input-password-icon')
.at(0)
.simulate('mousedown');
wrapper
.find('.ant-input-password-icon')
.at(0)
.simulate('click');
expect(document.activeElement).toBe(
wrapper
.find('input')
.at(0)
.getDOMNode(),
);
});
});