painless-ui
Version:
72 lines (71 loc) • 3.03 kB
JavaScript
import React from 'react';
import ShallowRenderer from 'react-test-renderer/shallow';
import InputBox from './InputBox';
import ReactDOM from 'react-dom';
import ReactTestUtils from 'react-dom/test-utils';
describe('test input behaviour', () => {
it('should render', () => {
let shallowRenderer = ShallowRenderer;
const renderer = new shallowRenderer();
expect(() => renderer.render(React.createElement(InputBox, { type: 'text' }))).not.toThrowError();
});
});
describe('test input type', () => {
var div = document.createElement('div');
document.body.appendChild(div);
it('test checkbox', () => {
ReactDOM.render(React.createElement(InputBox, { type: 'checkbox' }), div);
const checkbox = div.querySelector('[type=checkbox]');
expect(checkbox).not.toBeNull();
});
it('test radio', () => {
ReactDOM.render(React.createElement(InputBox, { type: 'radio' }), div);
const checkbox = div.querySelector('[type=radio]');
expect(checkbox).not.toBeNull();
});
it('test submit', () => {
ReactDOM.render(React.createElement(InputBox, { type: 'submit' }), div);
const checkbox = div.querySelector('button[type=submit]');
expect(checkbox).not.toBeNull();
});
it('test reset', () => {
ReactDOM.render(React.createElement(InputBox, { type: 'reset' }), div);
const checkbox = div.querySelector('button[type=reset]');
expect(checkbox).not.toBeNull();
});
});
describe('test validation ', () => {
const div = document.createElement('div');
document.body.appendChild(div);
let validationResult;
const validationCallBack = (res, e) => {
validationResult = res;
};
afterEach(() => {
validationResult = undefined;
});
it('check email validation', () => {
const validationOptions = {
event: 'onClick',
rules: 'required|email',
validationCallback: validationCallBack
};
ReactDOM.render(React.createElement(InputBox, { type: 'email', validation: true, validationOptions: validationOptions, value: 'shunramit', onChange: () => { } }), div);
const inputBox = div.querySelector('input[type=email]');
ReactTestUtils.Simulate.click(inputBox);
expect(validationResult).not.toBeUndefined();
expect(validationResult.isValidate).toBeFalsy();
});
it('check min validation', () => {
const validationOptions = {
event: 'onClick',
rules: 'required|min:10',
validationCallback: validationCallBack
};
ReactDOM.render(React.createElement(InputBox, { type: 'text', validation: true, validationOptions: validationOptions, value: '12', onChange: () => { } }), div);
const inputBox = div.querySelector('input[type=text]');
ReactTestUtils.Simulate.click(inputBox);
expect(validationResult).not.toBeUndefined();
expect(validationResult.isValidate).toBeFalsy();
});
});