import configureStore from 'redux-mock-store'; import thunk from 'redux-thunk' import fetchMock from 'fetch-mock'; import { configurableViewsActionTypes } from 'app/configurableViews/ConfigurableViewConstants.js'; import { newCustomComponentsEvent, setCustomRoutes, getConfigurableViewConfigs } from 'app/configurableViews/ConfigurableViewActions.js' describe('ConfigurableViewActionTests', () => { const sampleConfig = { "id": "aggregateReport", "title": "Aggregate Report", "iconURL": "resources/images/sampleAggReportIcon.svg", "iconHoverURL": "resources/images/sampleAggReportIconHover.svg", "viewType": "ConfigurableCardView", "layout": { "draggable": true, "resizable": true, "rowHeight": 100, "cardMargin": [ 20, 20 ], "cardPadding": [ 20, 20 ], "breakpoints": [ { "id": "lg", "col": 12, "width": 1400 }, { "id": "md", "col": 8, "width": 1200 }, { "id": "sm", "col": 6, "width": 1024 } ] }, "components": [ { "id": "visualization1", "title": "Total VNFs", "queryData": { "eventId": "visualization1", "api": "/get-component-data", "method": "POST", "headers": { "accept": "application/json" }, "componentDataDescriptor": { "index": "aggregate_generic-vnf_index", "queryType": "aggregation", "query": { "filter": {}, "queries": [], "aggregations": [ { "name": "prov-status", "aggregation": { "group-by": { "field": "prov-status", "size": 0 } } }, { "name": "orchestration-status", "aggregation": { "group-by": { "field": "orchestration-status", "size": 0 } } }, { "name": "nf-type", "aggregation": { "group-by": { "field": "nf-type", "size": 0 } } }, { "name": "nf-role", "aggregation": { "group-by": { "field": "nf-role", "size": 0 } } } ] }, "responseTransformation": { "type": "count", "spec": { "countType": "total", "countResponseLabel": "display" } } } }, "containerData": { "containerType": "NetworkQueryCard", "visualizationType": "text", "visualizationProp": { "display": "", "style": { "textAlign": "center", "fontSize": "50px", "fontWeight": "bold", "paddingTop": "50px" } }, "breakpoints": { "lg": { "w": 2, "h": 2, "x": 0, "y": 0 }, "md": { "w": 2, "h": 2, "x": 0, "y": 0 }, "sm": { "w": 6, "h": 2, "x": 0, "y": 0 } } } } ] }; it('newCustomComponentsEvent', () => { const components = [ { compId: 'someId', compName: 'Some Name' } ]; const middlewares = [thunk]; const mockStore = configureStore(middlewares); const store = mockStore({}); store.dispatch(newCustomComponentsEvent(components)); const actions = store.getActions(); expect(actions).toEqual([{ type: configurableViewsActionTypes.CUSTOM_COMPONENTS_RECEIVED, data: components }]); }); it('setCustomRoutes', () => { const routes = [ { routeName: 'Some Custom Route', path: 'some/route/path' } ]; const middlewares = [thunk]; const mockStore = configureStore(middlewares); const store = mockStore({}); store.dispatch(setCustomRoutes(routes)); const actions = store.getActions(); expect(actions).toEqual([{ type: configurableViewsActionTypes.CUSTOM_ROUTES, data: routes }]); }); it('getConfigurableViewConfigs', () => { const middlewares = [thunk]; const mockStore = configureStore(middlewares); const store = mockStore({}); const expectedActions = [ { type: configurableViewsActionTypes.CONFIGURABLE_VIEWS_CONFIG_RECEIVED, data: sampleConfig } ]; fetchMock.mock('*', sampleConfig); return store.dispatch(getConfigurableViewConfigs()) .then( () => { const actions = store.getActions(); expect(actions).toEqual(expectedActions); fetchMock.restore(); }); }); })