import React from 'react';
import ReactDOM from 'react-dom';
import ReactTestRenderer from 'react-test-renderer';
import ReactTestUtils from 'react-dom/test-utils';
import PropertiesForm from 'settings/components/form/PropertiesForm'
describe("settings/form/PropertiesForm", () => {
describe('render', () => {
it('renders PropertiesForm', () => {
const types = {
mystr: 'string',
mynum: 'number',
mybool: 'boolean',
empty: 'string',
}
const values = {
mystr: 'abc',
mynum: 123,
mybool: true,
};
const root = ReactTestRenderer.create(
,
).root
let input = root.findByProps({ name: 'mystr' });
expect(input.props.type).to.equals('text');
expect(input.props.value).to.equal('abc');
input = root.findByProps({ name: 'mynum' });
expect(input.props.type).to.equals('number');
expect(input.props.value).to.equal(123);
input = root.findByProps({ name: 'mybool' });
expect(input.props.type).to.equals('checkbox');
expect(input.props.value).to.equal(true);
});
});
describe('onChange', () => {
let container;
beforeEach(() => {
container = document.createElement('div');
document.body.appendChild(container);
});
afterEach(() => {
document.body.removeChild(container);
container = null;
});
it('invokes onChange event on text changed', (done) => {
ReactTestUtils.act(() => {
ReactDOM.render( {
expect(value).to.have.property('myvalue', 'abcd');
done();
}}
/>, container);
});
const input = document.querySelector('input[name=myvalue]');
input.value = 'abcd'
ReactTestUtils.Simulate.change(input);
});
it('invokes onChange event on number changeed', (done) => {
ReactTestUtils.act(() => {
ReactDOM.render( {
expect(value).to.have.property('myvalue', 1234);
done();
}}
/>, container);
});
const input = document.querySelector('input[name=myvalue]');
input.value = '1234'
ReactTestUtils.Simulate.change(input);
});
it('invokes onChange event on checkbox changed', (done) => {
ReactTestUtils.act(() => {
ReactDOM.render( {
expect(value).to.have.property('myvalue', true);
done();
}}
/>, container);
});
const input = document.querySelector('input[name=myvalue]');
input.checked = true;
ReactTestUtils.Simulate.change(input);
});
});
});