mirror of
https://github.com/Telecominfraproject/wlan-cloud-ui.git
synced 2025-11-01 19:27:51 +00:00
99 lines
2.5 KiB
JavaScript
Executable File
99 lines
2.5 KiB
JavaScript
Executable File
/**
|
|
* Test injectors
|
|
*/
|
|
|
|
import { memoryHistory } from 'react-router-dom';
|
|
import React from 'react';
|
|
import { Provider } from 'react-redux';
|
|
import renderer from 'react-test-renderer';
|
|
import { render } from 'react-testing-library';
|
|
|
|
import configureStore from '../../configureStore';
|
|
import injectReducer, { useInjectReducer } from '../injectReducer';
|
|
import * as reducerInjectors from '../reducerInjectors';
|
|
|
|
// Fixtures
|
|
const Component = () => null;
|
|
|
|
const reducer = s => s;
|
|
|
|
describe('injectReducer decorator', () => {
|
|
let store;
|
|
let injectors;
|
|
let ComponentWithReducer;
|
|
|
|
beforeAll(() => {
|
|
reducerInjectors.default = jest.fn().mockImplementation(() => injectors);
|
|
});
|
|
|
|
beforeEach(() => {
|
|
store = configureStore({}, memoryHistory);
|
|
injectors = {
|
|
injectReducer: jest.fn(),
|
|
};
|
|
ComponentWithReducer = injectReducer({ key: 'test', reducer })(Component);
|
|
reducerInjectors.default.mockClear();
|
|
});
|
|
|
|
it('should inject a given reducer', () => {
|
|
renderer.create(
|
|
<Provider store={store}>
|
|
<ComponentWithReducer />
|
|
</Provider>,
|
|
);
|
|
|
|
expect(injectors.injectReducer).toHaveBeenCalledTimes(1);
|
|
expect(injectors.injectReducer).toHaveBeenCalledWith('test', reducer);
|
|
});
|
|
|
|
it('should set a correct display name', () => {
|
|
expect(ComponentWithReducer.displayName).toBe('withReducer(Component)');
|
|
expect(
|
|
injectReducer({ key: 'test', reducer })(() => null).displayName,
|
|
).toBe('withReducer(Component)');
|
|
});
|
|
|
|
it('should propagate props', () => {
|
|
const props = { testProp: 'test' };
|
|
const renderedComponent = renderer.create(
|
|
<Provider store={store}>
|
|
<ComponentWithReducer {...props} />
|
|
</Provider>,
|
|
);
|
|
const {
|
|
props: { children },
|
|
} = renderedComponent.getInstance();
|
|
|
|
expect(children.props).toEqual(props);
|
|
});
|
|
});
|
|
|
|
describe('useInjectReducer hook', () => {
|
|
let store;
|
|
let injectors;
|
|
let ComponentWithReducer;
|
|
|
|
beforeAll(() => {
|
|
injectors = {
|
|
injectReducer: jest.fn(),
|
|
};
|
|
reducerInjectors.default = jest.fn().mockImplementation(() => injectors);
|
|
store = configureStore({}, memoryHistory);
|
|
ComponentWithReducer = () => {
|
|
useInjectReducer({ key: 'test', reducer });
|
|
return null;
|
|
};
|
|
});
|
|
|
|
it('should inject a given reducer', () => {
|
|
render(
|
|
<Provider store={store}>
|
|
<ComponentWithReducer />
|
|
</Provider>,
|
|
);
|
|
|
|
expect(injectors.injectReducer).toHaveBeenCalledTimes(1);
|
|
expect(injectors.injectReducer).toHaveBeenCalledWith('test', reducer);
|
|
});
|
|
});
|