]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-19069 Add dismissable alert on first new facets encounter
author7PH <benjamin.raymond@sonarsource.com>
Mon, 24 Apr 2023 11:17:23 +0000 (13:17 +0200)
committersonartech <sonartech@sonarsource.com>
Tue, 25 Apr 2023 20:03:00 +0000 (20:03 +0000)
server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/Sidebar-it.tsx
sonar-core/src/main/resources/org/sonar/l10n/core.properties

index c677090a7241f344147f90e85c3ac009bb645cb0..837553f40a72bd27bb55aad6485366047a00e619 100644 (file)
  */
 import * as React from 'react';
 import withAppStateContext from '../../../app/components/app-state/withAppStateContext';
+import DocLink from '../../../components/common/DocLink';
+import DismissableAlert from '../../../components/ui/DismissableAlert';
 import { isBranch, isPullRequest } from '../../../helpers/branch-like';
+import { translate } from '../../../helpers/l10n';
 import { AppState } from '../../../types/appstate';
 import { BranchLike } from '../../../types/branch-like';
 import {
@@ -169,6 +172,11 @@ export class Sidebar extends React.PureComponent<Props> {
             newCodeSelected={query.inNewCodePeriod}
           />
         )}
+        <DismissableAlert alertKey="issues-characteristic-facets" variant="info" display="inline">
+          <strong>{translate('issues.characteristic.facet-highlight.title')}</strong>
+          <br />
+          <DocLink to="/what-sonarqube-can-do">{translate('learn_more')}</DocLink>
+        </DismissableAlert>
         <CharacteristicFacet
           fetching={loadingFacets.characteristics === true}
           onChange={this.props.onFilterChange}
index b1d4d1ca4ddc835011dd67ef99fafe409351993a..83968ea3262974eaf396b6edc9a99ee242007c8a 100644 (file)
@@ -28,9 +28,15 @@ import { IssueSeverity } from '../../../../types/issues';
 import { GlobalSettingKeys } from '../../../../types/settings';
 import { Sidebar } from '../Sidebar';
 
+const getFacetNames = () =>
+  screen
+    .getAllByRole('button')
+    .map((button) => button.textContent)
+    .filter((name) => !!name);
+
 it('should render correct facets for Application', () => {
   renderSidebar({ component: mockComponent({ qualifier: ComponentQualifier.Application }) });
-  expect(screen.getAllByRole('button').map((button) => button.textContent)).toStrictEqual([
+  expect(getFacetNames()).toStrictEqual([
     'issues.facet.characteristics.PRODUCTION',
     'issues.facet.characteristics.DEVELOPMENT',
     'issues.facet.severities',
@@ -52,7 +58,7 @@ it('should render correct facets for Application', () => {
 
 it('should render correct facets for Portfolio', () => {
   renderSidebar({ component: mockComponent({ qualifier: ComponentQualifier.Portfolio }) });
-  expect(screen.getAllByRole('button').map((button) => button.textContent)).toStrictEqual([
+  expect(getFacetNames()).toStrictEqual([
     'issues.facet.characteristics.PRODUCTION',
     'issues.facet.characteristics.DEVELOPMENT',
     'issues.facet.severities',
@@ -74,7 +80,7 @@ it('should render correct facets for Portfolio', () => {
 
 it('should render correct facets for SubPortfolio', () => {
   renderSidebar({ component: mockComponent({ qualifier: ComponentQualifier.SubPortfolio }) });
-  expect(screen.getAllByRole('button').map((button) => button.textContent)).toStrictEqual([
+  expect(getFacetNames()).toStrictEqual([
     'issues.facet.characteristics.PRODUCTION',
     'issues.facet.characteristics.DEVELOPMENT',
     'issues.facet.severities',
@@ -101,7 +107,7 @@ it('should render only main visible facets: Characteristics & Severity', () => {
     query: mockQuery({ assigned: true }),
   });
 
-  expect(screen.getAllByRole('button').map((button) => button.textContent)).toStrictEqual([
+  expect(getFacetNames()).toStrictEqual([
     'issues.facet.characteristics.PRODUCTION',
     'issues.facet.characteristics.DEVELOPMENT',
     'issues.facet.severities',
@@ -123,7 +129,7 @@ it('should render secondary facets with filters applied eventhough "Show more fi
     }),
   });
 
-  expect(screen.getAllByRole('button').map((button) => button.textContent)).toStrictEqual([
+  expect(getFacetNames()).toStrictEqual([
     'issues.facet.characteristics.PRODUCTION',
     'issues.facet.characteristics.DEVELOPMENT',
     'issues.facet.severities',
index 6da9c0135364973313f657a9d7ef6c31188569ec..d2e143c4e27ff9ef0baf6b67e8dfd74820331f2f 100644 (file)
@@ -273,6 +273,7 @@ facet_might_have_more_results=There might be more results, try another set of fi
 false_positive=False positive
 go_back_to_homepage=Go back to the homepage
 last_analysis_before=Last analysis before
+learn_more=Learn more
 less_than_1_hour_ago=< 1 hour ago
 local=Local
 logging_out=You're logging out, please wait...
@@ -991,6 +992,7 @@ issues.not_all_issue_show=Not all issues are included
 issues.not_all_issue_show_why=You do not have access to all projects in this portfolio
 issues.show_more_filters=Show more filters
 issues.show_less_filters=Show less filters
+issues.characteristic.facet-highlight.title=New Clean Code characteristics
 
 #------------------------------------------------------------------------------
 #