Bläddra i källkod

SONAR-14872 Scope api calls to project only

tags/9.0.0.45539
Philippe Perrin 2 år sedan
förälder
incheckning
13737457f2

+ 9
- 2
server/sonar-web/src/main/js/app/components/ComponentContainer.tsx Visa fil

@@ -133,7 +133,10 @@ export class ComponentContainer extends React.PureComponent<Props, State> {

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<Props, State> {
};

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
);

+ 28
- 0
server/sonar-web/src/main/js/app/components/__tests__/ComponentContainer-test.tsx Visa fil

@@ -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<any>)
.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<any>).mockResolvedValueOnce({ component });

const wrapper = shallowRender();
await waitAndUpdate(wrapper);

expect(getProjectAlmBinding).not.toHaveBeenCalled();
expect(validateProjectAlmBinding).not.toHaveBeenCalled();
}
);

function shallowRender(props: Partial<ComponentContainer['props']> = {}) {
return shallow<ComponentContainer>(
<ComponentContainer

Laddar…
Avbryt
Spara