Created ImportServersBtn test

This commit is contained in:
Alejandro Celaya 2018-08-23 16:26:42 +02:00
parent da1616542d
commit ff28169c74
2 changed files with 62 additions and 1 deletions

View file

@ -9,17 +9,19 @@ import PropTypes from 'prop-types';
const defaultProps = {
serversImporter,
onImport: () => {},
};
const propTypes = {
onImport: PropTypes.func,
serversImporter: serversImporterType,
createServers: PropTypes.func,
fileRef: PropTypes.oneOfType([PropTypes.object, PropTypes.node]),
};
export class ImportServersBtn extends React.Component {
constructor(props) {
super(props);
this.fileRef = React.createRef();
this.fileRef = props.fileRef || React.createRef();
}
render() {

View file

@ -0,0 +1,59 @@
import React from 'react';
import { ImportServersBtn } from '../../../src/servers/helpers/ImportServersBtn';
import sinon from 'sinon';
import { shallow } from 'enzyme';
import { UncontrolledTooltip } from 'reactstrap';
describe('<ImportServersBtn />', () => {
let wrapper;
const onImportMock = sinon.fake();
const createServersMock = sinon.fake();
const serversImporterMock = {
importServersFromFile: sinon.fake.returns(Promise.resolve([])),
};
const fileRef = {
current: { click: sinon.fake() }
};
beforeEach(() => {
onImportMock.resetHistory();
createServersMock.resetHistory();
serversImporterMock.importServersFromFile.resetHistory();
fileRef.current.click.resetHistory();
wrapper = shallow(
<ImportServersBtn
onImport={onImportMock}
createServers={createServersMock}
serversImporter={serversImporterMock}
fileRef={fileRef}
/>
);
});
afterEach(() => wrapper.unmount());
it('renders a button, a tooltip and a file input', () => {
expect(wrapper.find('#importBtn')).toHaveLength(1);
expect(wrapper.find(UncontrolledTooltip)).toHaveLength(1);
expect(wrapper.find('.create-server__csv-select')).toHaveLength(1);
});
it('triggers click on file ref when button is clicked', () => {
const btn = wrapper.find('#importBtn');
btn.simulate('click');
expect(fileRef.current.click.callCount).toEqual(1);
});
it('imports servers when file input changes', done => {
const file = wrapper.find('.create-server__csv-select');
file.simulate('change', { target: { files: [''] } });
setImmediate(() => {
expect(serversImporterMock.importServersFromFile.callCount).toEqual(1);
expect(createServersMock.callCount).toEqual(1);
expect(onImportMock.callCount).toEqual(1);
done();
});
});
});