SymphonyElectron/spec/welcome.spec.ts

124 lines
3.9 KiB
TypeScript
Raw Normal View History

import { shallow } from 'enzyme';
import * as React from 'react';
import Welcome from '../src/renderer/components/welcome';
import { ipcRenderer } from './__mocks__/electron';
describe('welcome', () => {
2021-01-29 00:25:40 -06:00
const welcomeLabel = 'welcome';
const welcomeMock = {
url: 'https://my.symphony.com',
message: '',
urlValid: true,
isPodConfigured: false,
isSeamlessLoginEnabled: true,
2021-01-29 00:25:40 -06:00
};
const onLabelEvent = 'on';
const removeListenerLabelEvent = 'removeListener';
it('should render correctly', () => {
const wrapper = shallow(React.createElement(Welcome));
expect(wrapper).toMatchSnapshot();
});
it('should call `welcome` event when component is mounted', () => {
const spy = jest.spyOn(ipcRenderer, onLabelEvent);
shallow(React.createElement(Welcome));
expect(spy).toBeCalledWith(welcomeLabel, expect.any(Function));
});
it('should remove listener `welcome` when component is unmounted', () => {
const spyMount = jest.spyOn(ipcRenderer, onLabelEvent);
const spyUnmount = jest.spyOn(ipcRenderer, removeListenerLabelEvent);
const wrapper = shallow(React.createElement(Welcome));
expect(spyMount).toBeCalledWith(welcomeLabel, expect.any(Function));
wrapper.unmount();
expect(spyUnmount).toBeCalledWith(welcomeLabel, expect.any(Function));
});
it('should call `updateState` when component is mounted', () => {
const spy = jest.spyOn(Welcome.prototype, 'setState');
shallow(React.createElement(Welcome));
ipcRenderer.send('welcome', welcomeMock);
expect(spy).toBeCalledWith(welcomeMock);
});
it('should change pod url in text box', () => {
const podUrlMock = {
url: 'https://corporate.symphony.com',
message: '',
urlValid: true,
};
2021-01-29 00:25:40 -06:00
const spy = jest.spyOn(Welcome.prototype, 'setState');
const updatePodUrlSpy = jest.spyOn(Welcome.prototype, 'updatePodUrl');
2021-01-29 00:25:40 -06:00
const wrapper = shallow(React.createElement(Welcome));
ipcRenderer.send('welcome', welcomeMock);
2021-01-29 00:25:40 -06:00
const welcomePodUrlBox = `input.Welcome-main-container-podurl-box`;
const input = wrapper.find(welcomePodUrlBox);
2021-01-29 00:25:40 -06:00
input.simulate('focus');
input.simulate('change', {
target: { value: 'https://corporate.symphony.com' },
});
2021-01-29 00:25:40 -06:00
expect(updatePodUrlSpy).toBeCalled();
expect(spy).toBeCalledWith(podUrlMock);
});
2021-01-29 00:25:40 -06:00
it('should show message for invalid pod url', () => {
const podUrlMock = {
url: 'abcdef',
message: 'Please enter a valid url',
urlValid: false,
};
2021-01-29 00:25:40 -06:00
const spy = jest.spyOn(Welcome.prototype, 'setState');
const updatePodUrlSpy = jest.spyOn(Welcome.prototype, 'updatePodUrl');
2021-01-29 00:25:40 -06:00
const wrapper = shallow(React.createElement(Welcome));
ipcRenderer.send('welcome', welcomeMock);
2021-01-29 00:25:40 -06:00
const welcomePodUrlBox = `input.Welcome-main-container-podurl-box`;
const input = wrapper.find(welcomePodUrlBox);
2021-01-29 00:25:40 -06:00
input.simulate('focus');
input.simulate('change', { target: { value: 'abcdef' } });
2021-01-29 00:25:40 -06:00
expect(updatePodUrlSpy).toBeCalled();
expect(spy).toBeCalledWith(podUrlMock);
});
2021-01-29 00:25:40 -06:00
it('should set pod url', () => {
const spy = jest.spyOn(Welcome.prototype, 'setState');
const setPodUrlSpy = jest.spyOn(Welcome.prototype, 'login');
2021-01-29 00:25:40 -06:00
const wrapper = shallow(React.createElement(Welcome));
ipcRenderer.send('welcome', welcomeMock);
const welcomeContinueButton = `button.Welcome-continue-button`;
wrapper.find(welcomeContinueButton).simulate('click');
2021-01-29 00:25:40 -06:00
expect(setPodUrlSpy).toBeCalled();
expect(spy).toBeCalledWith(welcomeMock);
});
it('should not show pod url input field', () => {
const welcomeMock = {
url: 'https://my.symphony.com',
message: '',
urlValid: true,
isPodConfigured: true,
isSeamlessLoginEnabled: true,
};
const wrapper = shallow(React.createElement(Welcome));
ipcRenderer.send('welcome', welcomeMock);
const podUrlBox = `input.Welcome-main-container-podurl-box`;
expect(wrapper.find(podUrlBox).getElements()).toEqual([]);
});
});