diff options
author | Siegfried Ehret <siegfried.ehret@sonarsource.com> | 2019-07-12 11:03:47 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2019-07-12 20:21:16 +0200 |
commit | f4f949f46aa72c9233158153a47741369440adbc (patch) | |
tree | dadab0231d43d1fe52f86ed66d8bd1abf617b585 | |
parent | fdd82cc2c8d73bc630d5f8d285a0a838a0d423c2 (diff) | |
download | sonarqube-f4f949f46aa72c9233158153a47741369440adbc.tar.gz sonarqube-f4f949f46aa72c9233158153a47741369440adbc.zip |
SONAR-11007 Add disabled "Deactivate" button to rules list (#1913)
4 files changed, 43 insertions, 4 deletions
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx index 8c2b5c7f63d..2acb0a63683 100644 --- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx +++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx @@ -131,7 +131,11 @@ export default class RuleListItem extends React.PureComponent<Props> { const canEdit = selectedProfile.actions && selectedProfile.actions.edit; if (!canEdit || selectedProfile.isBuiltIn) { - return null; + return ( + <td className="coding-rule-table-meta-cell coding-rule-activation-actions"> + {this.renderDeactivateButton('', 'coding_rules.need_extend_or_copy')} + </td> + ); } return ( @@ -153,7 +157,10 @@ export default class RuleListItem extends React.PureComponent<Props> { ); }; - renderDeactivateButton = (inherit: string) => { + renderDeactivateButton = ( + inherit: string, + overlayTranslationKey = 'coding_rules.can_not_deactivate' + ) => { return inherit === 'NONE' ? ( <ConfirmButton confirmButtonText={translate('yes')} @@ -169,7 +176,7 @@ export default class RuleListItem extends React.PureComponent<Props> { )} </ConfirmButton> ) : ( - <Tooltip overlay={translate('coding_rules.can_not_deactivate')}> + <Tooltip overlay={translate(overlayTranslationKey)}> <Button className="coding-rules-detail-quality-profile-deactivate button-red disabled"> {translate('coding_rules.deactivate')} </Button> diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleListItem-test.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleListItem-test.tsx index 3d7b44dcb09..cc06721c692 100644 --- a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleListItem-test.tsx +++ b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleListItem-test.tsx @@ -33,8 +33,16 @@ it('should open rule', () => { expect(onOpen).toBeCalledWith('javascript:S1067'); }); +it('should render deactivate button', () => { + const wrapper = shallowRender(); + const instance = wrapper.instance(); + + expect(instance.renderDeactivateButton('NONE')).toMatchSnapshot(); + expect(instance.renderDeactivateButton('', 'coding_rules.need_extend_or_copy')).toMatchSnapshot(); +}); + function shallowRender(props?: Partial<RuleListItem['props']>) { - return shallow( + return shallow<RuleListItem>( <RuleListItem onActivate={jest.fn()} onDeactivate={jest.fn()} diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/__snapshots__/RuleListItem-test.tsx.snap b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/__snapshots__/RuleListItem-test.tsx.snap index e1b94a8164a..dd03a7730c3 100644 --- a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/__snapshots__/RuleListItem-test.tsx.snap +++ b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/__snapshots__/RuleListItem-test.tsx.snap @@ -96,3 +96,26 @@ exports[`should render 1`] = ` </table> </div> `; + +exports[`should render deactivate button 1`] = ` +<ConfirmButton + confirmButtonText="yes" + modalBody="coding_rules.deactivate.confirm" + modalHeader="coding_rules.deactivate" + onConfirm={[Function]} +> + [Function] +</ConfirmButton> +`; + +exports[`should render deactivate button 2`] = ` +<Tooltip + overlay="coding_rules.need_extend_or_copy" +> + <Button + className="coding-rules-detail-quality-profile-deactivate button-red disabled" + > + coding_rules.deactivate + </Button> +</Tooltip> +`; diff --git a/sonar-core/src/main/resources/org/sonar/l10n/core.properties b/sonar-core/src/main/resources/org/sonar/l10n/core.properties index 08c54ee9a5b..4bb08dcb93c 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -1321,6 +1321,7 @@ coding_rules.inherits="{0}" inherits from "{1}" coding_rules.issues=Issues coding_rules.issues.only_main_branches=Only issues from the main project branches are included. coding_rules.most_violating_projects=Most Violating Projects +coding_rules.need_extend_or_copy=Rules in built-in Quality Profiles can't be deactivated. You can create a customizable Quality Profile based on a built-in one by Copying or Extending it in the Quality Profiles list. coding_rules.no_results=No Coding Rules coding_rules.no_tags=No tags coding_rules.original=Original: |