Skip to content

Commit

Permalink
Improve tests
Browse files Browse the repository at this point in the history
  • Loading branch information
cnasikas committed May 28, 2020
1 parent 246daee commit 87447f7
Show file tree
Hide file tree
Showing 28 changed files with 206 additions and 74 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
mockGlobalState,
TestProviders,
SUB_PLUGINS_REDUCER,
createSiemLocalStorageMock,
} from '../../mock';
import { createStore, State } from '../../store';
import { AddFilterToGlobalSearchBar } from '.';
Expand All @@ -33,10 +34,11 @@ jest.mock('../../lib/kibana', () => ({

describe('AddFilterToGlobalSearchBar Component', () => {
const state: State = mockGlobalState;
let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
const siemLocalStorageMock = createSiemLocalStorageMock();
let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);

beforeEach(() => {
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);
mockAddFilters.mockClear();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,24 @@ import { shallow } from 'enzyme';
import React from 'react';
import { Provider } from 'react-redux';

import { apolloClientObservable, mockGlobalState, SUB_PLUGINS_REDUCER } from '../../mock';
import {
apolloClientObservable,
mockGlobalState,
SUB_PLUGINS_REDUCER,
createSiemLocalStorageMock,
} from '../../mock';
import { createStore } from '../../store/store';

import { ErrorToastDispatcher } from '.';
import { State } from '../../store/reducer';

describe('Error Toast Dispatcher', () => {
const state: State = mockGlobalState;
let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
const siemLocalStorageMock = createSiemLocalStorageMock();
let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);

beforeEach(() => {
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);
});

describe('rendering', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
mockGlobalState,
apolloClientObservable,
SUB_PLUGINS_REDUCER,
createSiemLocalStorageMock,
} from '../../mock';
import { createStore, State } from '../../store';
import { UpdateQueryParams, upsertQuery } from '../../store/inputs/helpers';
Expand All @@ -25,6 +26,7 @@ describe('Inspect Button', () => {
const theme = () => ({ eui: euiDarkVars, darkMode: true });
const refetch = jest.fn();
const state: State = mockGlobalState;
const siemLocalStorageMock = createSiemLocalStorageMock();
const newQuery: UpdateQueryParams = {
inputId: 'global',
id: 'myQuery',
Expand All @@ -34,13 +36,18 @@ describe('Inspect Button', () => {
state: state.inputs,
};

let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);

describe('Render', () => {
beforeEach(() => {
const myState = cloneDeep(state);
myState.inputs = upsertQuery(newQuery);
store = createStore(myState, SUB_PLUGINS_REDUCER, apolloClientObservable);
store = createStore(
myState,
SUB_PLUGINS_REDUCER,
apolloClientObservable,
siemLocalStorageMock
);
});
test('Eui Empty Button', () => {
const wrapper = mount(
Expand Down Expand Up @@ -144,7 +151,12 @@ describe('Inspect Button', () => {
response: ['my response'],
};
myState.inputs = upsertQuery(myQuery);
store = createStore(myState, SUB_PLUGINS_REDUCER, apolloClientObservable);
store = createStore(
myState,
SUB_PLUGINS_REDUCER,
apolloClientObservable,
siemLocalStorageMock
);
});
test('Open Inspect Modal', () => {
const wrapper = mount(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,12 @@ import {
mockNoChartMappings,
mockNarrowDateRange,
} from '../../../network/components/kpi_network/mock';
import { mockGlobalState, apolloClientObservable, SUB_PLUGINS_REDUCER } from '../../mock';
import {
mockGlobalState,
apolloClientObservable,
SUB_PLUGINS_REDUCER,
createSiemLocalStorageMock,
} from '../../mock';
import { State, createStore } from '../../store';
import { Provider as ReduxStoreProvider } from 'react-redux';
import { KpiNetworkData, KpiHostsData } from '../../../graphql/types';
Expand All @@ -49,7 +54,13 @@ jest.mock('../charts/barchart', () => {
describe('Stat Items Component', () => {
const theme = () => ({ eui: euiDarkVars, darkMode: true });
const state: State = mockGlobalState;
const store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
const siemLocalStorageMock = createSiemLocalStorageMock();
const store = createStore(
state,
SUB_PLUGINS_REDUCER,
apolloClientObservable,
siemLocalStorageMock
);

describe.each([
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@ import { Provider as ReduxStoreProvider } from 'react-redux';

import { DEFAULT_TIMEPICKER_QUICK_RANGES } from '../../../../common/constants';
import { useUiSetting$ } from '../../lib/kibana';
import { apolloClientObservable, mockGlobalState, SUB_PLUGINS_REDUCER } from '../../mock';
import {
apolloClientObservable,
mockGlobalState,
SUB_PLUGINS_REDUCER,
createSiemLocalStorageMock,
} from '../../mock';
import { createUseUiSetting$Mock } from '../../mock/kibana_react';
import { createStore, State } from '../../store';

Expand Down Expand Up @@ -75,11 +80,17 @@ const timepickerRanges = [
describe('SIEM Super Date Picker', () => {
describe('#SuperDatePicker', () => {
const state: State = mockGlobalState;
let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
const siemLocalStorageMock = createSiemLocalStorageMock();
let store = createStore(
state,
SUB_PLUGINS_REDUCER,
apolloClientObservable,
siemLocalStorageMock
);

beforeEach(() => {
jest.clearAllMocks();
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);
mockUseUiSetting$.mockImplementation((key, defaultValue) => {
const useUiSetting$Mock = createUseUiSetting$Mock();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
mockGlobalState,
TestProviders,
SUB_PLUGINS_REDUCER,
createSiemLocalStorageMock,
} from '../../mock';
import { createKibanaCoreStartMock } from '../../mock/kibana_core';
import { FilterManager } from '../../../../../../../src/plugins/data/public';
Expand Down Expand Up @@ -141,7 +142,9 @@ const state: State = {
},
},
};
const store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);

const siemLocalStorageMock = createSiemLocalStorageMock();
const store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);

describe('StatefulTopN', () => {
// Suppress warnings about "react-beautiful-dnd"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { policyListMiddlewareFactory } from '../../../endpoint_policy/store/poli
import { policyDetailsMiddlewareFactory } from '../../../endpoint_policy/store/policy_details/middleware';
import { alertMiddlewareFactory } from '../../../endpoint_alerts/store/middleware';
import { AppRootProvider } from './app_root_provider';
import { SUB_PLUGINS_REDUCER, mockGlobalState } from '..';
import { SUB_PLUGINS_REDUCER, mockGlobalState, createSiemLocalStorageMock } from '..';

type UiRender = (ui: React.ReactElement, options?: RenderOptions) => RenderResult;

Expand Down Expand Up @@ -58,25 +58,32 @@ export const createAppRootMockRenderer = (): AppContextTestRender => {
const depsStart = depsStartMock();
const middlewareSpy = createSpyMiddleware();
const state: State = mockGlobalState;
const store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, [
substateMiddlewareFactory(
(globalState) => globalState.hostList,
hostMiddlewareFactory(coreStart, depsStart)
),
substateMiddlewareFactory(
(globalState) => globalState.policyList,
policyListMiddlewareFactory(coreStart, depsStart)
),
substateMiddlewareFactory(
(globalState) => globalState.policyDetails,
policyDetailsMiddlewareFactory(coreStart, depsStart)
),
substateMiddlewareFactory(
(globalState) => globalState.alertList,
alertMiddlewareFactory(coreStart, depsStart)
),
middlewareSpy.actionSpyMiddleware,
]);
const siemLocalStorageMock = createSiemLocalStorageMock();
const store = createStore(
state,
SUB_PLUGINS_REDUCER,
apolloClientObservable,
siemLocalStorageMock,
[
substateMiddlewareFactory(
(globalState) => globalState.hostList,
hostMiddlewareFactory(coreStart, depsStart)
),
substateMiddlewareFactory(
(globalState) => globalState.policyList,
policyListMiddlewareFactory(coreStart, depsStart)
),
substateMiddlewareFactory(
(globalState) => globalState.policyDetails,
policyDetailsMiddlewareFactory(coreStart, depsStart)
),
substateMiddlewareFactory(
(globalState) => globalState.alertList,
alertMiddlewareFactory(coreStart, depsStart)
),
middlewareSpy.actionSpyMiddleware,
]
);

const AppWrapper: React.FC<{ children: React.ReactElement }> = ({ children }) => (
<AppRootProvider store={store} history={history} coreStart={coreStart} depsStart={depsStart}>
Expand Down
1 change: 1 addition & 0 deletions x-pack/plugins/siem/public/common/mock/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export * from './hook_wrapper';
export * from './index_pattern';
export * from './mock_timeline_data';
export * from './mock_detail_item';
export * from './mock_local_storage';
export * from './netflow';
export * from './test_providers';
export * from './utils';
Expand Down
10 changes: 10 additions & 0 deletions x-pack/plugins/siem/public/common/mock/mock_local_storage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/

export const createSiemLocalStorageMock = () => ({
getAllTimelines: jest.fn(),
addTimeline: jest.fn(),
});
6 changes: 4 additions & 2 deletions x-pack/plugins/siem/public/common/mock/test_providers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { mockGlobalState } from './global_state';
import { createKibanaContextProviderMock } from './kibana_react';
import { FieldHook, useForm } from '../../shared_imports';
import { SUB_PLUGINS_REDUCER } from './utils';
import { createSiemLocalStorageMock } from './mock_local_storage';

const state: State = mockGlobalState;

Expand Down Expand Up @@ -59,11 +60,12 @@ Object.defineProperty(window, 'localStorage', {
});

const MockKibanaContextProvider = createKibanaContextProviderMock();
const siemLocalStorageMock = createSiemLocalStorageMock();

/** A utility for wrapping children in the providers required to run most tests */
const TestProvidersComponent: React.FC<Props> = ({
children,
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable),
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock),
onDragEnd = jest.fn(),
}) => (
<I18nProvider>
Expand All @@ -83,7 +85,7 @@ export const TestProviders = React.memo(TestProvidersComponent);

const TestProviderWithoutDragAndDropComponent: React.FC<Props> = ({
children,
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable),
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock),
}) => (
<I18nProvider>
<ReduxStoreProvider store={store}>{children}</ReduxStoreProvider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ import { AlertIndex } from '../index';
import { RouteCapture } from '../../../common/components/endpoint/route_capture';
import { depsStartMock } from '../../../common/mock/endpoint';
import { createStore } from '../../../common/store';
import { SUB_PLUGINS_REDUCER, mockGlobalState, apolloClientObservable } from '../../../common/mock';
import {
SUB_PLUGINS_REDUCER,
mockGlobalState,
apolloClientObservable,
createSiemLocalStorageMock,
} from '../../../common/mock';

export const alertPageTestRender = () => {
/**
Expand All @@ -25,7 +30,13 @@ export const alertPageTestRender = () => {
/**
* Create a store, with the middleware disabled. We don't want side effects being created by our code in this test.
*/
const store = createStore(mockGlobalState, SUB_PLUGINS_REDUCER, apolloClientObservable);
const siemLocalStorageMock = createSiemLocalStorageMock();
const store = createStore(
mockGlobalState,
SUB_PLUGINS_REDUCER,
apolloClientObservable,
siemLocalStorageMock
);

const depsStart = depsStartMock();
depsStart.data.ui.SearchBar.mockImplementation(() => <div />);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ import { getOr } from 'lodash/fp';
import React from 'react';
import { Provider as ReduxStoreProvider } from 'react-redux';

import { apolloClientObservable, mockGlobalState, SUB_PLUGINS_REDUCER } from '../../../common/mock';
import {
apolloClientObservable,
mockGlobalState,
SUB_PLUGINS_REDUCER,
createSiemLocalStorageMock,
} from '../../../common/mock';
import { createStore, State } from '../../../common/store';
import { hostsModel } from '../../store';
import { mockData } from './mock';
Expand All @@ -20,10 +25,11 @@ describe('Authentication Table Component', () => {
const loadPage = jest.fn();
const state: State = mockGlobalState;

let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
const siemLocalStorageMock = createSiemLocalStorageMock();
let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);

beforeEach(() => {
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);
});

describe('rendering', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
mockGlobalState,
TestProviders,
SUB_PLUGINS_REDUCER,
createSiemLocalStorageMock,
} from '../../../common/mock';
import { useMountAppended } from '../../../common/utils/use_mount_appended';
import { createStore, State } from '../../../common/store';
Expand All @@ -35,12 +36,13 @@ jest.mock('../../../common/components/query_bar', () => ({
describe('Hosts Table', () => {
const loadPage = jest.fn();
const state: State = mockGlobalState;
const siemLocalStorageMock = createSiemLocalStorageMock();

let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
let store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);
const mount = useMountAppended();

beforeEach(() => {
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable);
store = createStore(state, SUB_PLUGINS_REDUCER, apolloClientObservable, siemLocalStorageMock);
});

describe('rendering', () => {
Expand Down
9 changes: 8 additions & 1 deletion x-pack/plugins/siem/public/hosts/pages/hosts.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
TestProviders,
mockGlobalState,
SUB_PLUGINS_REDUCER,
createSiemLocalStorageMock,
} from '../../common/mock';
import { SiemNavigation } from '../../common/components/navigation';
import { inputsActions } from '../../common/store/inputs';
Expand Down Expand Up @@ -171,7 +172,13 @@ describe('Hosts - rendering', () => {
];
localSource[0].result.data.source.status.indicesExist = true;
const myState: State = mockGlobalState;
const myStore = createStore(myState, SUB_PLUGINS_REDUCER, apolloClientObservable);
const siemLocalStorageMock = createSiemLocalStorageMock();
const myStore = createStore(
myState,
SUB_PLUGINS_REDUCER,
apolloClientObservable,
siemLocalStorageMock
);
const wrapper = mount(
<TestProviders store={myStore}>
<MockedProvider mocks={localSource} addTypename={false}>
Expand Down
Loading

0 comments on commit 87447f7

Please sign in to comment.