浏览代码

SONAR-17117 migrate project import feature trigger to /api/features/list endpoint

tags/9.7.0.61563
Matteo Mara 1年前
父节点
当前提交
bb479f8716

+ 9
- 13
server/sonar-web/src/main/js/apps/projectDump/ProjectDumpApp.tsx 查看文件

@@ -20,11 +20,13 @@
import * as React from 'react';
import { getActivity } from '../../api/ce';
import { getStatus } from '../../api/project-dump';
import withAppStateContext from '../../app/components/app-state/withAppStateContext';
import withAvailableFeatures, {
WithAvailableFeaturesProps
} from '../../app/components/available-features/withAvailableFeatures';
import withComponentContext from '../../app/components/componentContext/withComponentContext';
import { throwGlobalError } from '../../helpers/error';
import { translate } from '../../helpers/l10n';
import { AppState } from '../../types/appstate';
import { Feature } from '../../types/features';
import { DumpStatus, DumpTask } from '../../types/project-dump';
import { ActivityRequestParameters, TaskStatuses, TaskTypes } from '../../types/tasks';
import { Component } from '../../types/types';
@@ -34,8 +36,7 @@ import './styles.css';

const POLL_INTERNAL = 5000;

interface Props {
appState: AppState;
interface Props extends WithAvailableFeaturesProps {
component: Component;
}

@@ -84,10 +85,7 @@ export class ProjectDumpApp extends React.Component<Props, State> {
}

getLastTaskOfEachType(componentKey: string) {
const {
appState: { projectImportFeatureEnabled }
} = this.props;

const projectImportFeatureEnabled = this.props.hasFeature(Feature.ProjectImport);
const all = projectImportFeatureEnabled
? [
this.getLastTask(componentKey, TaskTypes.ProjectExport),
@@ -154,10 +152,8 @@ export class ProjectDumpApp extends React.Component<Props, State> {
};

render() {
const {
component,
appState: { projectImportFeatureEnabled }
} = this.props;
const { component } = this.props;
const projectImportFeatureEnabled = this.props.hasFeature(Feature.ProjectImport);
const { lastAnalysisTask, lastExportTask, lastImportTask, status } = this.state;

return (
@@ -200,4 +196,4 @@ export class ProjectDumpApp extends React.Component<Props, State> {
}
}

export default withComponentContext(withAppStateContext(ProjectDumpApp));
export default withComponentContext(withAvailableFeatures(ProjectDumpApp));

+ 3
- 3
server/sonar-web/src/main/js/apps/projectDump/__tests__/ProjectDumpApp-test.tsx 查看文件

@@ -22,7 +22,7 @@ import * as React from 'react';
import { getActivity } from '../../../api/ce';
import { getStatus } from '../../../api/project-dump';
import { mockComponent } from '../../../helpers/mocks/component';
import { mockAppState, mockDumpStatus, mockDumpTask } from '../../../helpers/testMocks';
import { mockDumpStatus, mockDumpTask } from '../../../helpers/testMocks';
import { waitAndUpdate } from '../../../helpers/testUtils';
import { TaskStatuses } from '../../../types/tasks';
import { ProjectDumpApp } from '../ProjectDumpApp';
@@ -58,7 +58,7 @@ it('should render correctly', async () => {

expect(wrapper).toMatchSnapshot('loaded');

wrapper = shallowRender({ appState: mockAppState({ projectImportFeatureEnabled: false }) });
wrapper = shallowRender({ hasFeature: jest.fn().mockReturnValue(false) });
await waitAndUpdate(wrapper);
expect(wrapper).toMatchSnapshot('loaded without import');
});
@@ -91,7 +91,7 @@ it('should poll for task status update', async () => {
function shallowRender(overrides: Partial<ProjectDumpApp['props']> = {}) {
return shallow<ProjectDumpApp>(
<ProjectDumpApp
appState={mockAppState({ projectImportFeatureEnabled: true })}
hasFeature={jest.fn().mockReturnValue(true)}
component={mockComponent()}
{...overrides}
/>

+ 0
- 1
server/sonar-web/src/main/js/types/appstate.ts 查看文件

@@ -29,7 +29,6 @@ export interface AppState {
canAdmin?: boolean;
edition?: EditionKey;
globalPages?: Extension[];
projectImportFeatureEnabled?: boolean;
instanceUsesDefaultAdminCredentials?: boolean;
multipleAlmEnabled?: boolean;
needIssueSync?: boolean;

+ 2
- 1
server/sonar-web/src/main/js/types/features.ts 查看文件

@@ -20,5 +20,6 @@

export enum Feature {
MonoRepositoryPullRequestDecoration = 'monorepo',
RegulatoryReport = 'regulatory-reports'
RegulatoryReport = 'regulatory-reports',
ProjectImport = 'project-import'
}

+ 0
- 7
server/sonar-webserver-webapi/src/main/java/org/sonar/server/ui/ws/GlobalAction.java 查看文件

@@ -140,7 +140,6 @@ public class GlobalAction implements NavigationWsAction, Startable {
writeBranchSupport(json);
writeInstanceUsesDefaultAdminCredentials(json);
writeMultipleAlmEnabled(json);
writeProjectImportFeature(json);
editionProvider.get().ifPresent(e -> json.prop("edition", e.name().toLowerCase(Locale.ENGLISH)));
writeNeedIssueSync(json);
json.prop("standalone", webServer.isStandalone());
@@ -207,12 +206,6 @@ public class GlobalAction implements NavigationWsAction, Startable {
json.prop("multipleAlmEnabled", multipleAlmFeatureProvider.enabled());
}

private void writeProjectImportFeature(JsonWriter json) {
Edition edition = editionProvider.get().orElse(null);
boolean isEnabled = isEditionEEorDCE(edition);
json.prop("projectImportFeatureEnabled", isEnabled);
}

private void writeNeedIssueSync(JsonWriter json) {
try (DbSession dbSession = dbClient.openSession(false)) {
json.prop("needIssueSync", issueIndexSyncChecker.isIssueSyncInProgress(dbSession));

+ 0
- 1
server/sonar-webserver-webapi/src/main/resources/org/sonar/server/ui/ws/global-example.json 查看文件

@@ -26,7 +26,6 @@
"version": "6.2",
"productionDatabase": true,
"branchesEnabled": false,
"projectImportFeatureEnabled": false,
"canAdmin": false,
"standalone": true,
"edition": "community"

+ 0
- 25
server/sonar-webserver-webapi/src/test/java/org/sonar/server/ui/ws/GlobalActionTest.java 查看文件

@@ -52,7 +52,6 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.sonar.core.platform.EditionProvider.Edition.*;
import static org.sonar.test.JsonAssert.assertJson;

public class GlobalActionTest {
@@ -238,30 +237,6 @@ public class GlobalActionTest {

}

@Test
public void project_import_feature_enabled_ee_dce() {
init();
when(editionProvider.get()).thenReturn(Optional.of(ENTERPRISE));
assertJson(call()).isSimilarTo("{\"projectImportFeatureEnabled\":true}");

when(editionProvider.get()).thenReturn(Optional.of(DATACENTER));
assertJson(call()).isSimilarTo("{\"projectImportFeatureEnabled\":true}");
}

@Test
public void project_import_feature_disabled_ce_de() {
init();
when(editionProvider.get()).thenReturn(Optional.of(COMMUNITY));
assertJson(call()).isSimilarTo("{\"projectImportFeatureEnabled\":false}");

when(editionProvider.get()).thenReturn(Optional.of(DEVELOPER));
assertJson(call()).isSimilarTo("{\"projectImportFeatureEnabled\":false}");

when(editionProvider.get()).thenReturn(Optional.empty());
assertJson(call()).isSimilarTo("{\"projectImportFeatureEnabled\":false}");
}


@Test
public void return_need_issue_sync() {
init();

正在加载...
取消
保存