2019-04-05 02:23:40 +07:00
|
|
|
/**
|
|
|
|
* @prettier
|
|
|
|
* @flow
|
|
|
|
*/
|
|
|
|
|
|
|
|
import React from 'react';
|
|
|
|
import { shallow } from 'enzyme';
|
|
|
|
|
2019-05-02 02:02:46 +07:00
|
|
|
import CopyToClipBoard from '../../../src/webui/components/CopyToClipBoard/index';
|
|
|
|
import { CopyIcon } from '../../../src/webui/components/CopyToClipBoard/styles';
|
2019-04-05 02:23:40 +07:00
|
|
|
|
|
|
|
describe('<CopyToClipBoard /> component', () => {
|
|
|
|
let wrapper;
|
|
|
|
let props;
|
|
|
|
|
|
|
|
beforeEach(() => {
|
|
|
|
props = {
|
|
|
|
text: 'copy text',
|
|
|
|
};
|
|
|
|
wrapper = shallow(<CopyToClipBoard {...props} />);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('render the component', () => {
|
|
|
|
expect(wrapper.html()).toMatchSnapshot();
|
|
|
|
});
|
|
|
|
|
|
|
|
test('should call the DOM APIs for copy to clipboard utility', () => {
|
|
|
|
const event = {
|
|
|
|
preventDefault: jest.fn(),
|
|
|
|
};
|
|
|
|
|
|
|
|
global.getSelection = jest.fn(() => ({
|
|
|
|
removeAllRanges: () => {},
|
|
|
|
addRange: () => {},
|
|
|
|
}));
|
|
|
|
|
|
|
|
const { document, getSelection } = global;
|
|
|
|
|
|
|
|
wrapper.find(CopyIcon).simulate('click', event);
|
|
|
|
expect(event.preventDefault).toHaveBeenCalled();
|
|
|
|
expect(document.createRange).toHaveBeenCalled();
|
|
|
|
expect(getSelection).toHaveBeenCalled();
|
|
|
|
expect(document.execCommand).toHaveBeenCalledWith('copy');
|
|
|
|
});
|
|
|
|
});
|