SymphonyElectron/spec/screenSharingIndicator.spec.ts
2021-01-29 11:55:40 +05:30

72 lines
2.4 KiB
TypeScript

import { shallow } from 'enzyme';
import * as React from 'react';
import ScreenSharingIndicator from '../src/renderer/components/screen-sharing-indicator';
import { ipcRenderer } from './__mocks__/electron';
jest.mock('../src/common/env', () => {
return {
isWindowsOS: false,
isMac: true,
isLinux: false,
};
});
describe('screen sharing indicator', () => {
// events
const onEventLabel = 'on';
const removeListenerEventLabel = 'removeListener';
const sendEventLabel = 'send';
const screenSharingIndicatorDataEventLabel = 'screen-sharing-indicator-data';
// state moked
const screenSharingIndicatorStateMock = { id: 10 };
it('should render correctly', () => {
const wrapper = shallow(React.createElement(ScreenSharingIndicator));
expect(wrapper).toMatchSnapshot();
});
it('should call `stopScreenShare` correctly', () => {
const customSelector = 'button.stop-sharing-button';
const stopScreenSharingEventLabel = 'stop-screen-sharing';
const spy = jest.spyOn(ipcRenderer, sendEventLabel);
const wrapper = shallow(React.createElement(ScreenSharingIndicator));
wrapper.setState(screenSharingIndicatorStateMock);
wrapper.find(customSelector).simulate('click');
expect(spy).lastCalledWith(stopScreenSharingEventLabel, 10);
});
it('should call `updateState` correctly', () => {
const setStateEventLabel = 'setState';
const spy = jest.spyOn(
ScreenSharingIndicator.prototype,
setStateEventLabel,
);
shallow(React.createElement(ScreenSharingIndicator));
ipcRenderer.send(
screenSharingIndicatorDataEventLabel,
screenSharingIndicatorStateMock,
);
expect(spy).lastCalledWith({ id: 10 });
});
describe('`screen-sharing-indicator-data` event', () => {
it('should call `screen-sharing-indicator-data` when component is mounted', () => {
const spy = jest.spyOn(ipcRenderer, onEventLabel);
shallow(React.createElement(ScreenSharingIndicator));
expect(spy).lastCalledWith(
screenSharingIndicatorDataEventLabel,
expect.any(Function),
);
});
it('should call `screen-sharing-indicator-data` when component is unmounted', () => {
const spy = jest.spyOn(ipcRenderer, removeListenerEventLabel);
shallow(React.createElement(ScreenSharingIndicator)).unmount();
expect(spy).toBeCalledWith(
screenSharingIndicatorDataEventLabel,
expect.any(Function),
);
});
});
});