Skip to content

Commit

Permalink
Hide status from collections
Browse files Browse the repository at this point in the history
  • Loading branch information
cnasikas committed Feb 25, 2021
1 parent ceea3f4 commit 7d8a09f
Show file tree
Hide file tree
Showing 3 changed files with 113 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {
EuiFlexItem,
EuiIconTip,
} from '@elastic/eui';
import { CaseStatuses } from '../../../../../case/common/api';
import { CaseStatuses, CaseType } from '../../../../../case/common/api';
import * as i18n from '../case_view/translations';
import { FormattedRelativePreferenceDate } from '../../../common/components/formatted_date';
import { Actions } from './actions';
Expand Down Expand Up @@ -73,19 +73,21 @@ const CaseActionBarComponent: React.FC<CaseActionBarProps> = ({
);

return (
<EuiFlexGroup gutterSize="l" justifyContent="flexEnd">
<EuiFlexGroup gutterSize="l" justifyContent="flexEnd" data-test-subj="case-action-bar-wrapper">
<EuiFlexItem grow={false}>
<MyDescriptionList compressed>
<EuiFlexGroup>
<EuiFlexItem grow={false} data-test-subj="case-view-status">
<EuiDescriptionListTitle>{i18n.STATUS}</EuiDescriptionListTitle>
<EuiDescriptionListDescription>
<StatusContextMenu
currentStatus={caseData.status}
onStatusChanged={onStatusChanged}
/>
</EuiDescriptionListDescription>
</EuiFlexItem>
{caseData.type !== CaseType.collection && (
<EuiFlexItem grow={false} data-test-subj="case-view-status">
<EuiDescriptionListTitle>{i18n.STATUS}</EuiDescriptionListTitle>
<EuiDescriptionListDescription>
<StatusContextMenu
currentStatus={caseData.status}
onStatusChanged={onStatusChanged}
/>
</EuiDescriptionListDescription>
</EuiFlexItem>
)}
<EuiFlexItem>
<EuiDescriptionListTitle>{title}</EuiDescriptionListTitle>
<EuiDescriptionListDescription>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import { connectorsMock } from '../../containers/configure/mock';
import { usePostPushToService } from '../../containers/use_post_push_to_service';
import { useQueryAlerts } from '../../../detections/containers/detection_engine/alerts/use_query';
import { ConnectorTypes } from '../../../../../case/common/api/connectors';
import { CaseType } from '../../../../../case/common/api';

const mockDispatch = jest.fn();
jest.mock('react-redux', () => {
Expand Down Expand Up @@ -201,6 +202,10 @@ describe('CaseView ', () => {
.first()
.text()
).toBe(data.description);

expect(
wrapper.find('button[data-test-subj="case-view-status-action-button"]').first().text()
).toBe('Mark in progress');
});
});

Expand Down Expand Up @@ -547,8 +552,7 @@ describe('CaseView ', () => {
});
});

// TO DO fix when the useEffects in edit_connector are cleaned up
it.skip('should update connector', async () => {
it('should update connector', async () => {
const wrapper = mount(
<TestProviders>
<Router history={mockHistory}>
Expand Down Expand Up @@ -752,4 +756,74 @@ describe('CaseView ', () => {
});
});
});

describe('Collections', () => {
it('it does not allow the user to update the status', async () => {
const wrapper = mount(
<TestProviders>
<Router history={mockHistory}>
<CaseComponent
{...caseProps}
caseData={{ ...caseProps.caseData, type: CaseType.collection }}
/>
</Router>
</TestProviders>
);

await waitFor(() => {
expect(wrapper.find('[data-test-subj="case-action-bar-wrapper"]').exists()).toBe(true);
expect(wrapper.find('button[data-test-subj="case-view-status"]').exists()).toBe(false);
expect(wrapper.find('[data-test-subj="user-actions"]').exists()).toBe(true);
expect(
wrapper.find('button[data-test-subj="case-view-status-action-button"]').exists()
).toBe(false);
});
});

it('it shows the push button when has data to push', async () => {
useGetCaseUserActionsMock.mockImplementation(() => ({
...defaultUseGetCaseUserActions,
hasDataToPush: true,
}));

const wrapper = mount(
<TestProviders>
<Router history={mockHistory}>
<CaseComponent
{...caseProps}
caseData={{ ...caseProps.caseData, type: CaseType.collection }}
/>
</Router>
</TestProviders>
);

await waitFor(() => {
expect(wrapper.find('[data-test-subj="has-data-to-push-button"]').exists()).toBe(true);
});
});

it('it does not show the horizontal rule when does NOT has data to push', async () => {
useGetCaseUserActionsMock.mockImplementation(() => ({
...defaultUseGetCaseUserActions,
hasDataToPush: false,
}));

const wrapper = mount(
<TestProviders>
<Router history={mockHistory}>
<CaseComponent
{...caseProps}
caseData={{ ...caseProps.caseData, type: CaseType.collection }}
/>
</Router>
</TestProviders>
);

await waitFor(() => {
expect(
wrapper.find('[data-test-subj="case-view-bottom-actions-horizontal-rule"]').exists()
).toBe(false);
});
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
EuiHorizontalRule,
} from '@elastic/eui';

import { CaseStatuses, CaseAttributes } from '../../../../../case/common/api';
import { CaseStatuses, CaseAttributes, CaseType } from '../../../../../case/common/api';
import { Case, CaseConnector } from '../../containers/types';
import { getCaseDetailsUrl, getCaseUrl, useFormatUrl } from '../../../common/components/link_to';
import { gutterTimeline } from '../../../common/lib/helpers';
Expand Down Expand Up @@ -345,6 +345,7 @@ export const CaseComponent = React.memo<CaseProps>(
);
}
}, [dispatch]);

return (
<>
<HeaderWrapper>
Expand Down Expand Up @@ -395,22 +396,29 @@ export const CaseComponent = React.memo<CaseProps>(
updateCase={updateCase}
userCanCrud={userCanCrud}
/>
<MyEuiHorizontalRule margin="s" />
<EuiFlexGroup alignItems="center" gutterSize="s" justifyContent="flexEnd">
<EuiFlexItem grow={false}>
<StatusActionButton
status={caseData.status}
onStatusChanged={changeStatus}
disabled={!userCanCrud}
isLoading={isLoading && updateKey === 'status'}
{(caseData.type !== CaseType.collection || hasDataToPush) && (
<EuiFlexGroup alignItems="center" gutterSize="s" justifyContent="flexEnd">
<MyEuiHorizontalRule
margin="s"
data-test-subj="case-view-bottom-actions-horizontal-rule"
/>
</EuiFlexItem>
{hasDataToPush && (
<EuiFlexItem data-test-subj="has-data-to-push-button" grow={false}>
{pushButton}
</EuiFlexItem>
)}
</EuiFlexGroup>
{caseData.type !== CaseType.collection && (
<EuiFlexItem grow={false}>
<StatusActionButton
status={caseData.status}
onStatusChanged={changeStatus}
disabled={!userCanCrud}
isLoading={isLoading && updateKey === 'status'}
/>
</EuiFlexItem>
)}
{hasDataToPush && (
<EuiFlexItem data-test-subj="has-data-to-push-button" grow={false}>
{pushButton}
</EuiFlexItem>
)}
</EuiFlexGroup>
)}
</>
)}
</EuiFlexItem>
Expand Down

0 comments on commit 7d8a09f

Please sign in to comment.