Skip to content

Commit

Permalink
[ResponseOps][New Rule Form] Fix new rule form issues with basic lice…
Browse files Browse the repository at this point in the history
…nse (elastic#198036)

## Summary

Fixes below issues from new rule form leftovers
elastic#196235

<details><summary>On basic license, if I hover on unsupported
connectors, a tooltip explains the reasoning. This is not happening for
rule types. We should do the same for the rule types</summary>

![Screenshot 2024-10-28 at 15 44
26](https://github.com/user-attachments/assets/522a9a54-fa41-48e2-a749-58a465eb2543)
</details>

<details><summary>On basic license, I can edit a rule that is not
available on the basic. This leads to a bunch of errors in edit mode.
The same is happening on main. We should prevent accessing this kind of
rule types.</summary>

![Screenshot 2024-10-28 at 15 44
57](https://github.com/user-attachments/assets/9a016ef2-aaf2-4d3f-8161-70bcb89f3334)
</details>

### Checklist
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

(cherry picked from commit 962082e)
  • Loading branch information
js-jankisalvi committed Nov 4, 2024
1 parent d00e325 commit 6b7df32
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import React from 'react';
import { render, screen, within } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { RuleTypeList } from './rule_type_list';
import { RuleTypeWithDescription } from '../types';

Expand Down Expand Up @@ -93,5 +94,8 @@ describe('RuleTypeList', () => {
expect(secondRuleInList).not.toBeDisabled();
const thirdRuleInList = within(ruleListEl[2]).getByRole('button', { name: 'Rule Type 2' });
expect(thirdRuleInList).toBeDisabled();

await userEvent.hover(ruleListEl[2]);
expect(await screen.findByText('This rule requires a platinum license.')).toBeInTheDocument();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
EuiEmptyPrompt,
EuiButton,
useEuiTheme,
EuiToolTip,
} from '@elastic/eui';
import { omit } from 'lodash';
import { PRODUCER_DISPLAY_NAMES } from '../../common/i18n';
Expand Down Expand Up @@ -86,6 +87,28 @@ export const RuleTypeList: React.FC<RuleTypeListProps> = ({

const onClickAll = useCallback(() => onFilterByProducer(null), [onFilterByProducer]);

const ruleCard = (rule: RuleTypeWithDescription) => (
<EuiCard
titleSize="xs"
textAlign="left"
hasBorder
title={rule.name}
onClick={() => onSelectRuleType(rule.id)}
description={rule.description}
style={{ marginRight: '8px', flexGrow: 0 }}
data-test-subj={`${rule.id}-SelectOption`}
isDisabled={!rule.enabledInLicense}
>
<EuiText
color="subdued"
size="xs"
style={{ textTransform: 'uppercase', fontWeight: euiTheme.font.weight.bold }}
>
{producerToDisplayName(rule.producer)}
</EuiText>
</EuiCard>
);

return (
<EuiFlexGroup
style={{
Expand Down Expand Up @@ -151,25 +174,24 @@ export const RuleTypeList: React.FC<RuleTypeListProps> = ({
)}
{ruleTypesList.map((rule) => (
<React.Fragment key={rule.id}>
<EuiCard
titleSize="xs"
textAlign="left"
hasBorder
title={rule.name}
onClick={() => onSelectRuleType(rule.id)}
description={rule.description}
style={{ marginRight: '8px', flexGrow: 0 }}
data-test-subj={`${rule.id}-SelectOption`}
isDisabled={rule.enabledInLicense === false}
>
<EuiText
color="subdued"
size="xs"
style={{ textTransform: 'uppercase', fontWeight: euiTheme.font.weight.bold }}
{rule.enabledInLicense ? (
ruleCard(rule)
) : (
<EuiToolTip
position="top"
content={i18n.translate(
'alertsUIShared.components.ruleTypeModal.minimumRequiredLicenseMessage',
{
defaultMessage: 'This rule requires a {minimumLicenseRequired} license.',
values: {
minimumLicenseRequired: rule.minimumLicenseRequired,
},
}
)}
>
{producerToDisplayName(rule.producer)}
</EuiText>
</EuiCard>
<>{ruleCard(rule)} </>
</EuiToolTip>
)}
<EuiSpacer size="s" />
</React.Fragment>
))}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,7 @@ export const RulesListTable = (props: RulesListTableProps) => {
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.editAriaLabel',
{ defaultMessage: 'Edit' }
)}
disabled={!rule.enabledInLicense}
/>
</EuiFlexItem>
) : null}
Expand Down

0 comments on commit 6b7df32

Please sign in to comment.