From 13737457f2588e71737ddbd5a5b3cb65e3dabb4c Mon Sep 17 00:00:00 2001 From: Philippe Perrin Date: Tue, 29 Jun 2021 16:10:52 +0200 Subject: [PATCH] SONAR-14872 Scope api calls to project only --- .../js/app/components/ComponentContainer.tsx | 11 ++++++-- .../__tests__/ComponentContainer-test.tsx | 28 +++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/server/sonar-web/src/main/js/app/components/ComponentContainer.tsx b/server/sonar-web/src/main/js/app/components/ComponentContainer.tsx index d1cf0ae7c18..31f7ea3ecf6 100644 --- a/server/sonar-web/src/main/js/app/components/ComponentContainer.tsx +++ b/server/sonar-web/src/main/js/app/components/ComponentContainer.tsx @@ -133,7 +133,10 @@ export class ComponentContainer extends React.PureComponent { const { branchLike, branchLikes } = await this.fetchBranches(componentWithQualifier); - const projectBinding = await getProjectAlmBinding(key).catch(() => undefined); + let projectBinding; + if (componentWithQualifier.qualifier === ComponentQualifier.Project) { + projectBinding = await getProjectAlmBinding(key).catch(() => undefined); + } if (this.mounted) { this.setState({ @@ -247,7 +250,11 @@ export class ComponentContainer extends React.PureComponent { }; fetchProjectBindingErrors = async (component: T.Component) => { - if (component.analysisDate === undefined && this.props.appState.branchesEnabled) { + if ( + component.qualifier === ComponentQualifier.Project && + component.analysisDate === undefined && + this.props.appState.branchesEnabled + ) { const projectBindingErrors = await validateProjectAlmBinding(component.key).catch( () => undefined ); diff --git a/server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx b/server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx index 84fc4a8bb52..e46025122e9 100644 --- a/server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx +++ b/server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx @@ -97,6 +97,13 @@ it('changes component', () => { }); it('loads the project binding, if any', async () => { + const component = mockComponent({ + breadcrumbs: [{ key: 'foo', name: 'foo', qualifier: ComponentQualifier.Project }] + }); + (getComponentNavigation as jest.Mock).mockResolvedValueOnce({}); + (getComponentData as jest.Mock) + .mockResolvedValueOnce({ component }) + .mockResolvedValueOnce({ component }); (getProjectAlmBinding as jest.Mock).mockResolvedValueOnce(undefined).mockResolvedValueOnce({ alm: AlmKeys.GitHub, key: 'foo' @@ -340,6 +347,27 @@ describe('should correctly validate the project binding depending on the context }); }); +it.each([ + [ComponentQualifier.Application], + [ComponentQualifier.Portfolio], + [ComponentQualifier.SubPortfolio] +])( + 'should not care about PR decoration settings for %s', + async (componentQualifier: ComponentQualifier) => { + const component = mockComponent({ + breadcrumbs: [{ key: 'foo', name: 'Foo', qualifier: componentQualifier }] + }); + (getComponentNavigation as jest.Mock).mockResolvedValueOnce({}); + (getComponentData as jest.Mock).mockResolvedValueOnce({ component }); + + const wrapper = shallowRender(); + await waitAndUpdate(wrapper); + + expect(getProjectAlmBinding).not.toHaveBeenCalled(); + expect(validateProjectAlmBinding).not.toHaveBeenCalled(); + } +); + function shallowRender(props: Partial = {}) { return shallow(