diff options
author | stanislavh <stanislav.honcharov@sonarsource.com> | 2024-01-30 18:15:29 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2024-01-31 20:03:37 +0000 |
commit | 68cdc84139405f39dac06d55ad37f636e12e6a7f (patch) | |
tree | c16a4b35ab906c6405a81ce3d6aa48b726c3dfb7 | |
parent | d2cca0a99b38a2b0068a104f5c3cf068927bac73 (diff) | |
download | sonarqube-68cdc84139405f39dac06d55ad37f636e12e6a7f.tar.gz sonarqube-68cdc84139405f39dac06d55ad37f636e12e6a7f.zip |
SONAR-21455 Adjust logic of showing application warning
-rw-r--r-- | server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx | 84 | ||||
-rw-r--r-- | server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-it.tsx | 18 |
2 files changed, 60 insertions, 42 deletions
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx b/server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx index 1a6e477c88b..1c8eefaafaa 100644 --- a/server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx +++ b/server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx @@ -98,18 +98,17 @@ export default function BranchOverviewRenderer(props: BranchOverviewRendererProp }); const intl = useIntl(); - // Check if any potentially missing uncomputed measure is not present - const isMissingMeasures = [ - MetricKey.new_accepted_issues, - MetricKey.security_issues, - MetricKey.maintainability_issues, - MetricKey.reliability_issues, - ].some((key) => !measures.find((measure) => measure.metric.key === key)); - const leakPeriod = component.qualifier === ComponentQualifier.Application ? appLeak : period; const isNewCodeTab = tab === MeasuresTabs.New; const hasNewCodeMeasures = measures.some((m) => isDiffMetric(m.metric.key)); + // Check if any potentially missing uncomputed measure is not present + const isMissingMeasures = ( + isNewCodeTab + ? [MetricKey.new_accepted_issues] + : [MetricKey.security_issues, MetricKey.maintainability_issues, MetricKey.reliability_issues] + ).some((key) => !measures.find((measure) => measure.metric.key === key)); + React.useEffect(() => { // Open Overall tab by default if there are no new measures. if (loadingStatus === false && !hasNewCodeMeasures && isNewCodeTab) { @@ -120,6 +119,15 @@ export default function BranchOverviewRenderer(props: BranchOverviewRendererProp /* eslint-disable-next-line react-hooks/exhaustive-deps */ }, [loadingStatus, hasNewCodeMeasures]); + const appReanalysisWarning = + isMissingMeasures && isApplication(component.qualifier) ? ( + <FlagMessage variant="warning" className="sw-my-4"> + {intl.formatMessage({ + id: 'overview.missing_project_data.APP', + })} + </FlagMessage> + ) : null; + return ( <> <FirstAnalysisNextStepsNotif @@ -171,40 +179,38 @@ export default function BranchOverviewRenderer(props: BranchOverviewRendererProp isNewCode={isNewCodeTab} onTabSelect={selectTab} > - {hasNewCodeMeasures && - isMissingMeasures && - isApplication(component.qualifier) && ( - <FlagMessage variant="warning" className="sw-my-4"> - {intl.formatMessage({ - id: 'overview.missing_project_data.APP', - })} - </FlagMessage> - )} - - {isNewCodeTab && !hasNewCodeMeasures && ( - <MeasuresPanelNoNewCode - branch={branch} - component={component} - period={period} - /> - )} - - {isNewCodeTab && hasNewCodeMeasures && ( - <NewCodeMeasuresPanel - qgStatuses={qgStatuses} - branch={branch} - component={component} - measures={measures} - /> + {isNewCodeTab && ( + <> + {hasNewCodeMeasures ? ( + <> + {appReanalysisWarning} + <NewCodeMeasuresPanel + qgStatuses={qgStatuses} + branch={branch} + component={component} + measures={measures} + /> + </> + ) : ( + <MeasuresPanelNoNewCode + branch={branch} + component={component} + period={period} + /> + )} + </> )} {!isNewCodeTab && ( - <OverallCodeMeasuresPanel - branch={branch} - qgStatuses={qgStatuses} - component={component} - measures={measures} - /> + <> + {appReanalysisWarning} + <OverallCodeMeasuresPanel + branch={branch} + qgStatuses={qgStatuses} + component={component} + measures={measures} + /> + </> )} </TabsPanel> diff --git a/server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-it.tsx b/server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-it.tsx index a761cf832c1..ef86a352004 100644 --- a/server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-it.tsx +++ b/server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-it.tsx @@ -473,17 +473,29 @@ describe('application overview', () => { expect(await screen.findByText('portfolio.app.empty')).toBeInTheDocument(); }); + it.each([['new_accepted_issues', MetricKey.new_accepted_issues]])( + 'should ask to reanalyze all projects if a project is not computed for %s', + async (missingMetricKey) => { + measuresHandler.deleteComponentMeasure('foo', missingMetricKey as MetricKey); + + renderBranchOverview({ component }); + + expect(await screen.findByText('overview.missing_project_data.APP')).toBeInTheDocument(); + }, + ); + it.each([ - ['new_accepted_issues', MetricKey.new_accepted_issues], ['security_issues', MetricKey.security_issues], ['reliability_issues', MetricKey.reliability_issues], ['maintainability_issues', MetricKey.maintainability_issues], ])( - 'should ask to reanalyze all projects if a project is not computed', + 'should ask to reanalyze all projects if a project is not computed for %s', async (missingMetricKey) => { - measuresHandler.deleteComponentMeasure('foo', missingMetricKey as MetricKey); + const { ui, user } = getPageObjects(); + measuresHandler.deleteComponentMeasure('foo', missingMetricKey as MetricKey); renderBranchOverview({ component }); + await user.click(await ui.overallCodeButton.find()); expect(await screen.findByText('overview.missing_project_data.APP')).toBeInTheDocument(); }, |