Skip to content

Commit

Permalink
[SIEM] Fix rule delete/duplicate actions (#59306)
Browse files Browse the repository at this point in the history
patrykkopycinski authored Mar 4, 2020

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 754e6f1 commit ac4f8f4
Showing 2 changed files with 88 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
* 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.
*/

import uuid from 'uuid';
import { createMemoryHistory } from 'history';

const history = createMemoryHistory();

import { mockRule } from './__mocks__/mock';
import { getActions } from './columns';

jest.mock('./actions', () => ({
duplicateRulesAction: jest.fn(),
deleteRulesAction: jest.fn(),
}));

import { duplicateRulesAction, deleteRulesAction } from './actions';

describe('AllRulesTable Columns', () => {
describe('getActions', () => {
const rule = mockRule(uuid.v4());
let results: string[] = [];
const dispatch = jest.fn();
const dispatchToaster = jest.fn();
const reFetchRules = jest.fn();

beforeEach(() => {
results = [];

reFetchRules.mockImplementation(() => {
results.push('reFetchRules');
Promise.resolve();
});
});

test('duplicate rule onClick should call refetch after the rule is duplicated', async () => {
(duplicateRulesAction as jest.Mock).mockImplementation(
() =>
new Promise(resolve =>
setTimeout(() => {
results.push('duplicateRulesAction');
resolve();
}, 500)
)
);

const duplicateRulesActionObject = getActions(
dispatch,
dispatchToaster,
history,
reFetchRules
)[1];
await duplicateRulesActionObject.onClick(rule);
expect(results).toEqual(['duplicateRulesAction', 'reFetchRules']);
});

test('delete rule onClick should call refetch after the rule is deleted', async () => {
(deleteRulesAction as jest.Mock).mockImplementation(
() =>
new Promise(resolve =>
setTimeout(() => {
results.push('deleteRulesAction');
resolve();
}, 500)
)
);

const deleteRulesActionObject = getActions(
dispatch,
dispatchToaster,
history,
reFetchRules
)[3];
await deleteRulesActionObject.onClick(rule);
expect(results).toEqual(['deleteRulesAction', 'reFetchRules']);
});
});
});
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ import {
} from './actions';
import { Action } from './reducer';

const getActions = (
export const getActions = (
dispatch: React.Dispatch<Action>,
dispatchToaster: Dispatch<ActionToaster>,
history: H.History,
@@ -51,9 +51,9 @@ const getActions = (
description: i18n.DUPLICATE_RULE,
icon: 'copy',
name: i18n.DUPLICATE_RULE,
onClick: (rowItem: Rule) => {
duplicateRulesAction([rowItem], [rowItem.id], dispatch, dispatchToaster);
reFetchRules(true);
onClick: async (rowItem: Rule) => {
await duplicateRulesAction([rowItem], [rowItem.id], dispatch, dispatchToaster);
await reFetchRules(true);
},
},
{
@@ -67,9 +67,9 @@ const getActions = (
description: i18n.DELETE_RULE,
icon: 'trash',
name: i18n.DELETE_RULE,
onClick: (rowItem: Rule) => {
deleteRulesAction([rowItem.id], dispatch, dispatchToaster);
reFetchRules(true);
onClick: async (rowItem: Rule) => {
await deleteRulesAction([rowItem.id], dispatch, dispatchToaster);
await reFetchRules(true);
},
},
];

0 comments on commit ac4f8f4

Please sign in to comment.