Migrated to TS all servers helpers

This commit is contained in:
Alejandro Celaya
2020-08-29 13:51:53 +02:00
parent 8cc0695ee9
commit aee4c2d02f
14 changed files with 129 additions and 137 deletions

View File

@@ -1,5 +1,8 @@
import { EventSourcePolyfill as EventSource } from 'event-source-polyfill';
import { Mock } from 'ts-mockery';
import { identity } from 'ramda';
import { bindToMercureTopic } from '../../../src/mercure/helpers';
import { MercureInfo } from '../../../src/mercure/reducers/mercureInfo';
jest.mock('event-source-polyfill');
@@ -11,11 +14,13 @@ describe('helpers', () => {
const onTokenExpired = jest.fn();
it.each([
[{ loading: true, error: false }],
[{ loading: false, error: true }],
[{ loading: true, error: true }],
])('does not bind an EventSource when loading or error', (mercureInfo) => {
bindToMercureTopic(mercureInfo)();
[ Mock.of<MercureInfo>({ loading: true, error: false, mercureHubUrl: 'foo' }) ],
[ Mock.of<MercureInfo>({ loading: false, error: true, mercureHubUrl: 'foo' }) ],
[ Mock.of<MercureInfo>({ loading: true, error: true, mercureHubUrl: 'foo' }) ],
[ Mock.of<MercureInfo>({ loading: false, error: false, mercureHubUrl: undefined }) ],
[ Mock.of<MercureInfo>({ loading: true, error: true, mercureHubUrl: undefined }) ],
])('does not bind an EventSource when loading, error or no hub URL', (mercureInfo) => {
bindToMercureTopic(mercureInfo, '', identity, identity)();
expect(EventSource).not.toHaveBeenCalled();
expect(onMessage).not.toHaveBeenCalled();
@@ -50,7 +55,7 @@ describe('helpers', () => {
expect(onMessage).toHaveBeenCalledWith({ foo: 'bar' });
expect(onTokenExpired).toHaveBeenCalled();
callback();
callback?.();
expect(es.close).toHaveBeenCalled();
});
});

View File

@@ -16,6 +16,8 @@ describe('<EditServer />', () => {
name: 'name',
url: 'url',
apiKey: 'apiKey',
printableVersion: 'v1.2.0',
version: '1.2.0'
};
beforeEach(() => {

View File

@@ -1,11 +1,13 @@
import React from 'react';
import { mount } from 'enzyme';
import { mount, ReactWrapper } from 'enzyme';
import { Mock } from 'ts-mockery';
import ForServerVersion from '../../../src/servers/helpers/ForServerVersion';
import { ReachableServer, SelectedServer } from '../../../src/servers/data';
describe('<ForServerVersion />', () => {
let wrapped;
let wrapped: ReactWrapper;
const renderComponent = (minVersion, maxVersion, selectedServer) => {
const renderComponent = (selectedServer: SelectedServer, minVersion?: string, maxVersion?: string) => {
wrapped = mount(
<ForServerVersion minVersion={minVersion} maxVersion={maxVersion} selectedServer={selectedServer}>
<span>Hello</span>
@@ -15,10 +17,10 @@ describe('<ForServerVersion />', () => {
return wrapped;
};
afterEach(() => wrapped && wrapped.unmount());
afterEach(() => wrapped?.unmount());
it('does not render children when current server is empty', () => {
const wrapped = renderComponent('1');
const wrapped = renderComponent(null, '1');
expect(wrapped.html()).toBeNull();
});
@@ -28,7 +30,7 @@ describe('<ForServerVersion />', () => {
[ undefined, '1.8.0', '1.8.3' ],
[ '1.7.0', '1.8.0', '1.8.3' ],
])('does not render children when current version does not match requirements', (min, max, version) => {
const wrapped = renderComponent(min, max, { version });
const wrapped = renderComponent(Mock.of<ReachableServer>({ version, printableVersion: version }), min, max);
expect(wrapped.html()).toBeNull();
});
@@ -40,7 +42,7 @@ describe('<ForServerVersion />', () => {
[ undefined, '1.8.0', '1.7.1' ],
[ '1.7.0', '1.8.0', '1.7.3' ],
])('renders children when current version matches requirements', (min, max, version) => {
const wrapped = renderComponent(min, max, { version });
const wrapped = renderComponent(Mock.of<ReachableServer>({ version, printableVersion: version }), min, max);
expect(wrapped.html()).toContain('<span>Hello</span>');
});

View File

@@ -1,20 +1,18 @@
import React from 'react';
import { shallow } from 'enzyme';
import { shallow, ShallowWrapper } from 'enzyme';
import { ServerForm } from '../../../src/servers/helpers/ServerForm';
import { HorizontalFormGroup } from '../../../src/utils/HorizontalFormGroup';
describe('<ServerForm />', () => {
let wrapper;
let wrapper: ShallowWrapper;
const onSubmit = jest.fn();
beforeEach(() => {
wrapper = shallow(<ServerForm onSubmit={onSubmit}><span>Something</span></ServerForm>);
});
afterEach(() => {
jest.resetAllMocks();
wrapper && wrapper.unmount();
});
afterEach(() => wrapper?.unmount());
afterEach(jest.resetAllMocks);
it('renders components', () => {
expect(wrapper.find(HorizontalFormGroup)).toHaveLength(3);