import TextArea from '../textarea';
import Icon from '../../icons/index';
import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants';
import GraphemeSplitter from 'grapheme-splitter';
import { isString } from 'lodash';
function getValueLength(str) {
if (isString(str)) {
const splitter = new GraphemeSplitter();
return splitter.countGraphemes(str);
} else {
return -1;
}
}
describe('TextArea', () => {
it('TextArea with custom className & style', () => {
const wrapper = mount();
expect(wrapper.hasClass('test')).toEqual(true);
expect(wrapper.find('div.test')).toHaveStyle('color', 'red');
});
it('TextArea defaultValue', () => {
let defaultValue = 'semi';
const textAreaWithDefaultValue = mount();
const textareaDom = textAreaWithDefaultValue.find('textarea');
expect(textareaDom.instance().value).toEqual(defaultValue);
});
it('TextArea onChange trigger when value change', () => {
let textAreaValue = 'semi';
let event = { target: { value: textAreaValue } };
let onChange = value => {
console.log(value);
};
let spyOnChange = sinon.spy(onChange);
const textArea = mount();
textArea.find('textarea').simulate('change', event);
expect(spyOnChange.calledOnce).toBe(true);
expect(spyOnChange.calledWithMatch(textAreaValue)).toBe(true);
})
it('TextArea show maxCount', () => {
const textarea = mount();
const counter = textarea.find(`.${BASE_CLASS_PREFIX}-input-textarea-counter`);
expect(counter.instance().textContent).toEqual('0/10');
textarea.setProps({ value: 'semi' });
expect(counter.instance().textContent).toEqual('4/10');
});
it('TextArea with placeholder', () => {
let placeholderText = 'semi placeholder';
const textarea = mount();
let textareaDom = textarea.find('textarea');
expect(textareaDom.props().placeholder).toEqual(placeholderText);
})
it('TextArea disabled', () => {
const textarea = mount();
let textareaDom = textarea.find(`textarea.${BASE_CLASS_PREFIX}-input-textarea-disabled`);
expect(textareaDom.props().disabled).toEqual(true);
})
it('TextArea showClear / onClear', () => {
const spyOnClear = sinon.spy(()=>{});
const textarea = mount(