aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSiegfried Ehret <siegfried.ehret@sonarsource.com>2019-07-12 11:03:47 +0200
committerSonarTech <sonartech@sonarsource.com>2019-07-12 20:21:16 +0200
commitf4f949f46aa72c9233158153a47741369440adbc (patch)
treedadab0231d43d1fe52f86ed66d8bd1abf617b585
parentfdd82cc2c8d73bc630d5f8d285a0a838a0d423c2 (diff)
downloadsonarqube-f4f949f46aa72c9233158153a47741369440adbc.tar.gz
sonarqube-f4f949f46aa72c9233158153a47741369440adbc.zip
SONAR-11007 Add disabled "Deactivate" button to rules list (#1913)
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx13
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleListItem-test.tsx10
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/__snapshots__/RuleListItem-test.tsx.snap23
-rw-r--r--sonar-core/src/main/resources/org/sonar/l10n/core.properties1
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: