Source: app/util/testing/mockStore.js

// eslint-disable-next-line import/no-extraneous-dependencies,
import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import config from '../azure/config/mocked-configuration.json';
import onlineAccountMock from './mocks/onlineAccountMock.json';
import publicMock from './mocks/publicMock.json';
import groupAccountMock from './mocks/groupAccountMock.json';

/**
 * Mock store, requied when we have connected components that consume state e.g
 * device state
 */

// create any initial state needed
const environmentConfig = JSON.parse(JSON.stringify(config));

export const initialState = {
  deviceState: { state: 4 },
  config: { environmentConfig },
  async: { actionTypes: {} },
  view: { components: { header: { isFixed: false, height: 64 } } },
};

// here it is possible to pass in any middleware if needed into configureStore
const middlewares = [thunk];

export const configureStoreWithMiddleware = configureStore(middlewares);

const store = configureStoreWithMiddleware(initialState);

export const onlineMemberData = { ...initialState, ...onlineAccountMock };
export const publicData = { ...initialState, ...publicMock };
export const groupMemberData = { ...initialState, ...groupAccountMock };

export const onlineMemberMock = configureStoreWithMiddleware(onlineMemberData);
export const publicDataMock = configureStoreWithMiddleware(publicData);
export const groupMemberMock = configureStoreWithMiddleware(publicData);

export default store;