Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RAM] Remove bulk snoozing of rules in Select All mode #159749

Merged
merged 5 commits into from Jun 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -77,7 +77,7 @@ describe('rule_quick_edit_buttons', () => {
expect(wrapper.find('[data-test-subj="bulkDisable"]').exists()).toBeTruthy();
});

it('disables the disable/enable/delete bulk actions if in select all mode', async () => {
it('removes the snooze bulk actions if in select all mode', async () => {
const mockRule: RuleTableItem = {
id: '1',
enabled: true,
Expand All @@ -99,14 +99,10 @@ describe('rule_quick_edit_buttons', () => {
expect(wrapper.find('[data-test-subj="bulkEnable"]').first().prop('isDisabled')).toBeFalsy();
expect(wrapper.find('[data-test-subj="bulkDelete"]').first().prop('isDisabled')).toBeFalsy();
expect(wrapper.find('[data-test-subj="updateAPIKeys"]').first().prop('isDisabled')).toBeFalsy();
expect(wrapper.find('[data-test-subj="bulkSnooze"]').first().prop('isDisabled')).toBeFalsy();
expect(wrapper.find('[data-test-subj="bulkUnsnooze"]').first().prop('isDisabled')).toBeFalsy();
expect(
wrapper.find('[data-test-subj="bulkSnoozeSchedule"]').first().prop('isDisabled')
).toBeFalsy();
expect(
wrapper.find('[data-test-subj="bulkRemoveSnoozeSchedule"]').first().prop('isDisabled')
).toBeFalsy();
expect(wrapper.find('[data-test-subj="bulkSnooze"]').exists()).toBeFalsy();
expect(wrapper.find('[data-test-subj="bulkUnsnooze"]').exists()).toBeFalsy();
expect(wrapper.find('[data-test-subj="bulkSnoozeSchedule"]').exists()).toBeFalsy();
expect(wrapper.find('[data-test-subj="bulkRemoveSnoozeSchedule"]').exists()).toBeFalsy();
});

it('properly sets rules or filters to delete when not selecting all', async () => {
Expand All @@ -132,28 +128,4 @@ describe('rule_quick_edit_buttons', () => {
wrapper.find('[data-test-subj="bulkSnooze"]').first().simulate('click');
expect(updateRulesToBulkEdit).toHaveBeenCalledTimes(1);
});

it('properly sets rules or filters to delete when selecting all', async () => {
const mockRule: RuleTableItem = {
id: '1',
enabled: true,
enabledInLicense: true,
} as RuleTableItem;

const wrapper = mountWithIntl(
<RuleQuickEditButtons
isAllSelected={true}
getFilter={() => null}
selectedItems={[mockRule]}
onPerformingAction={() => {}}
onActionPerformed={() => {}}
onEnable={async () => {}}
onDisable={async () => {}}
updateRulesToBulkEdit={updateRulesToBulkEdit}
/>
);

wrapper.find('[data-test-subj="bulkSnooze"]').first().simulate('click');
expect(updateRulesToBulkEdit).toHaveBeenCalledTimes(1);
});
});
Expand Up @@ -236,58 +236,62 @@ export const RuleQuickEditButtons: React.FunctionComponent<ComponentOpts> = ({
gutterSize="none"
data-test-subj="ruleQuickEditButton"
>
<EuiFlexItem>
<EuiButtonEmpty
onClick={onSnoozeAllClick}
isLoading={isBulkEditing && bulkEditAction === 'snooze'}
isDisabled={isPerformingAction || hasDisabledByLicenseRuleTypes}
data-test-subj="bulkSnooze"
>
<FormattedMessage
id="xpack.triggersActionsUI.sections.rulesList.bulkActionPopover.snoozeAllTitle"
defaultMessage="Snooze now"
/>
</EuiButtonEmpty>
</EuiFlexItem>
<EuiFlexItem>
<EuiButtonEmpty
onClick={onUnsnoozeAllClick}
isLoading={isBulkEditing && bulkEditAction === 'unsnooze'}
isDisabled={isPerformingAction || hasDisabledByLicenseRuleTypes}
data-test-subj="bulkUnsnooze"
>
<FormattedMessage
id="xpack.triggersActionsUI.sections.rulesList.bulkActionPopover.unsnoozeAllTitle"
defaultMessage="Unsnooze now"
/>
</EuiButtonEmpty>
</EuiFlexItem>
<EuiFlexItem>
<EuiButtonEmpty
onClick={onScheduleAllClick}
isLoading={isBulkEditing && bulkEditAction === 'schedule'}
isDisabled={isPerformingAction || hasDisabledByLicenseRuleTypes}
data-test-subj="bulkSnoozeSchedule"
>
<FormattedMessage
id="xpack.triggersActionsUI.sections.rulesList.bulkActionPopover.snoozeScheduleAllTitle"
defaultMessage="Schedule snooze"
/>
</EuiButtonEmpty>
</EuiFlexItem>
<EuiFlexItem>
<EuiButtonEmpty
onClick={onUnscheduleAllClick}
isLoading={isBulkEditing && bulkEditAction === 'unschedule'}
isDisabled={isPerformingAction || hasDisabledByLicenseRuleTypes}
data-test-subj="bulkRemoveSnoozeSchedule"
>
<FormattedMessage
id="xpack.triggersActionsUI.sections.rulesList.bulkActionPopover.removeSnoozeScheduleAllTitle"
defaultMessage="Unschedule snooze"
/>
</EuiButtonEmpty>
</EuiFlexItem>
{!isAllSelected && (
<>
<EuiFlexItem>
<EuiButtonEmpty
onClick={onSnoozeAllClick}
isLoading={isBulkEditing && bulkEditAction === 'snooze'}
isDisabled={isPerformingAction || hasDisabledByLicenseRuleTypes}
data-test-subj="bulkSnooze"
>
<FormattedMessage
id="xpack.triggersActionsUI.sections.rulesList.bulkActionPopover.snoozeAllTitle"
defaultMessage="Snooze now"
/>
</EuiButtonEmpty>
</EuiFlexItem>
<EuiFlexItem>
<EuiButtonEmpty
onClick={onUnsnoozeAllClick}
isLoading={isBulkEditing && bulkEditAction === 'unsnooze'}
isDisabled={isPerformingAction || hasDisabledByLicenseRuleTypes}
data-test-subj="bulkUnsnooze"
>
<FormattedMessage
id="xpack.triggersActionsUI.sections.rulesList.bulkActionPopover.unsnoozeAllTitle"
defaultMessage="Unsnooze now"
/>
</EuiButtonEmpty>
</EuiFlexItem>
<EuiFlexItem>
<EuiButtonEmpty
onClick={onScheduleAllClick}
isLoading={isBulkEditing && bulkEditAction === 'schedule'}
isDisabled={isPerformingAction || hasDisabledByLicenseRuleTypes}
data-test-subj="bulkSnoozeSchedule"
>
<FormattedMessage
id="xpack.triggersActionsUI.sections.rulesList.bulkActionPopover.snoozeScheduleAllTitle"
defaultMessage="Schedule snooze"
/>
</EuiButtonEmpty>
</EuiFlexItem>
<EuiFlexItem>
<EuiButtonEmpty
onClick={onUnscheduleAllClick}
isLoading={isBulkEditing && bulkEditAction === 'unschedule'}
isDisabled={isPerformingAction || hasDisabledByLicenseRuleTypes}
data-test-subj="bulkRemoveSnoozeSchedule"
>
<FormattedMessage
id="xpack.triggersActionsUI.sections.rulesList.bulkActionPopover.removeSnoozeScheduleAllTitle"
defaultMessage="Unschedule snooze"
/>
</EuiButtonEmpty>
</EuiFlexItem>
</>
)}
<EuiFlexItem>
<EuiButtonEmpty
onClick={onEnable}
Expand Down
Expand Up @@ -53,7 +53,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {

await refreshAlertsList();
await testSubjects.click(`checkboxSelectRow-${rule1.id}`);
await testSubjects.click('selectAllRulesButton');
await testSubjects.click(`checkboxSelectRow-${rule2.id}`);
await testSubjects.click('showBulkActionButton');
await testSubjects.click('bulkSnooze');
Expand All @@ -62,13 +61,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {

await retry.try(async () => {
const toastTitle = await pageObjects.common.closeToast();
expect(toastTitle).to.eql('Updated snooze settings for 1 rule.');
expect(toastTitle).to.eql('Updated snooze settings for 2 rules.');
});

await pageObjects.triggersActionsUI.searchAlerts(rule1.name);
await testSubjects.existOrFail('rulesListNotifyBadge-snoozed');
await pageObjects.triggersActionsUI.searchAlerts(rule2.name);
await testSubjects.missingOrFail('rulesListNotifyBadge-snoozed');
await testSubjects.existOrFail('rulesListNotifyBadge-snoozed');
});

it('should allow rules to be unsnoozed', async () => {
Expand All @@ -93,7 +92,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {

await refreshAlertsList();
await testSubjects.click(`checkboxSelectRow-${rule1.id}`);
await testSubjects.click('selectAllRulesButton');
await testSubjects.click(`checkboxSelectRow-${rule2.id}`);
await testSubjects.click('showBulkActionButton');
await testSubjects.click('bulkUnsnooze');
Expand All @@ -102,13 +100,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {

await retry.try(async () => {
const toastTitle = await pageObjects.common.closeToast();
expect(toastTitle).to.eql('Updated snooze settings for 1 rule.');
expect(toastTitle).to.eql('Updated snooze settings for 2 rules.');
});

await pageObjects.triggersActionsUI.searchAlerts(rule1.name);
await testSubjects.missingOrFail('rulesListNotifyBadge-snoozed');
await pageObjects.triggersActionsUI.searchAlerts(rule2.name);
await testSubjects.existOrFail('rulesListNotifyBadge-snoozed');
await testSubjects.missingOrFail('rulesListNotifyBadge-snoozed');
});

it('should allow rules to be scheduled', async () => {
Expand All @@ -125,7 +123,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {

await refreshAlertsList();
await testSubjects.click(`checkboxSelectRow-${rule1.id}`);
await testSubjects.click('selectAllRulesButton');
await testSubjects.click(`checkboxSelectRow-${rule2.id}`);
await testSubjects.click('showBulkActionButton');
await testSubjects.click('bulkSnoozeSchedule');
Expand All @@ -134,13 +131,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {

await retry.try(async () => {
const toastTitle = await pageObjects.common.closeToast();
expect(toastTitle).to.eql('Updated snooze settings for 1 rule.');
expect(toastTitle).to.eql('Updated snooze settings for 2 rules.');
});

await pageObjects.triggersActionsUI.searchAlerts(rule1.name);
await testSubjects.existOrFail('rulesListNotifyBadge-scheduled');
await pageObjects.triggersActionsUI.searchAlerts(rule2.name);
await testSubjects.missingOrFail('rulesListNotifyBadge-scheduled');
await testSubjects.existOrFail('rulesListNotifyBadge-scheduled');
});

it('should allow rules to be unscheduled', async () => {
Expand All @@ -165,7 +162,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {

await refreshAlertsList();
await testSubjects.click(`checkboxSelectRow-${rule1.id}`);
await testSubjects.click('selectAllRulesButton');
await testSubjects.click(`checkboxSelectRow-${rule2.id}`);
await testSubjects.click('showBulkActionButton');
await testSubjects.click('bulkRemoveSnoozeSchedule');
Expand All @@ -174,13 +170,13 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {

await retry.try(async () => {
const toastTitle = await pageObjects.common.closeToast();
expect(toastTitle).to.eql('Updated snooze settings for 1 rule.');
expect(toastTitle).to.eql('Updated snooze settings for 2 rules.');
});

await pageObjects.triggersActionsUI.searchAlerts(rule1.name);
await testSubjects.missingOrFail('rulesListNotifyBadge-scheduled');
await pageObjects.triggersActionsUI.searchAlerts(rule2.name);
await testSubjects.existOrFail('rulesListNotifyBadge-scheduled');
await testSubjects.missingOrFail('rulesListNotifyBadge-scheduled');
});

it('can bulk update API key', async () => {
Expand Down