shlink-web-client/test/servers/helpers/ImportServersBtn.test.js

58 lines
1.8 KiB
JavaScript
Raw Normal View History

2018-08-23 17:26:42 +03:00
import React from 'react';
import { shallow } from 'enzyme';
import { UncontrolledTooltip } from 'reactstrap';
2018-12-18 00:32:51 +03:00
import importServersBtnConstruct from '../../../src/servers/helpers/ImportServersBtn';
2018-08-23 17:26:42 +03:00
describe('<ImportServersBtn />', () => {
let wrapper;
const onImportMock = jest.fn();
const createServersMock = jest.fn();
2018-08-23 17:26:42 +03:00
const serversImporterMock = {
importServersFromFile: jest.fn().mockResolvedValue([]),
2018-08-23 17:26:42 +03:00
};
const fileRef = {
current: { click: jest.fn() },
2018-08-23 17:26:42 +03:00
};
beforeEach(() => {
onImportMock.mockReset();
createServersMock.mockReset();
serversImporterMock.importServersFromFile.mockClear();
fileRef.current.click.mockReset();
2018-08-23 17:26:42 +03:00
2018-12-18 00:32:51 +03:00
const ImportServersBtn = importServersBtnConstruct(serversImporterMock);
2018-08-23 17:26:42 +03:00
wrapper = shallow(
2020-08-22 09:10:31 +03:00
<ImportServersBtn createServers={createServersMock} fileRef={fileRef} onImport={onImportMock} />,
2018-08-23 17:26:42 +03:00
);
});
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');
2018-08-23 17:26:42 +03:00
btn.simulate('click');
expect(fileRef.current.click).toHaveBeenCalledTimes(1);
2018-08-23 17:26:42 +03:00
});
it('imports servers when file input changes', (done) => {
2018-08-23 17:26:42 +03:00
const file = wrapper.find('.create-server__csv-select');
file.simulate('change', { target: { files: [ '' ] } });
2018-08-23 17:26:42 +03:00
setImmediate(() => {
expect(serversImporterMock.importServersFromFile).toHaveBeenCalledTimes(1);
expect(createServersMock).toHaveBeenCalledTimes(1);
expect(onImportMock).toHaveBeenCalledTimes(1);
2018-08-23 17:26:42 +03:00
done();
});
});
});