aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src
diff options
context:
space:
mode:
authorWouter Admiraal <wouter.admiraal@sonarsource.com>2020-04-17 17:54:50 +0200
committersonartech <sonartech@sonarsource.com>2020-05-04 20:03:53 +0000
commit1d854eec0d3e223aee54412503fcccf50ee10f4a (patch)
tree1beb3ccad44ee3e1893199606aba28d3fe313c37 /server/sonar-web/src
parentbe46fdae92760199df04ba7d6f251e6a91026f84 (diff)
downloadsonarqube-1d854eec0d3e223aee54412503fcccf50ee10f4a.tar.gz
sonarqube-1d854eec0d3e223aee54412503fcccf50ee10f4a.zip
SONAR-13296 Re-organize tutorial components and ALM-related types
Diffstat (limited to 'server/sonar-web/src')
-rw-r--r--server/sonar-web/src/main/js/api/alm-settings.ts20
-rw-r--r--server/sonar-web/src/main/js/apps/create/organization/CreateOrganization.tsx1
-rw-r--r--server/sonar-web/src/main/js/apps/create/organization/OrganizationDetailsStep.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/create/organization/PlanStep.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/organizations/components/OrganizationEmpty.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmBindingDefinitionForm-test.tsx16
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTab-test.tsx12
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTabRenderer-test.tsx10
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureForm-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureTab-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketForm-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketTab-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubForm-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubTab-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabForm-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabTab-test.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx24
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx14
-rw-r--r--server/sonar-web/src/main/js/apps/tutorials/analyzeProject/__tests__/__snapshots__/AnalyzeTutorial-test.tsx.snap55
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/__tests__/utils-test.ts (renamed from server/sonar-web/src/main/js/apps/tutorials/__tests__/utils-test.ts)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/components/RenderOptions.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/RenderOptions.tsx)4
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/components/Step.css (renamed from server/sonar-web/src/main/js/apps/tutorials/styles.css)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/components/Step.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/Step.tsx)1
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/components/__tests__/RenderOptions-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/analyzeProject/__tests__/AnalyzeTutorial-test.tsx)41
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/components/__tests__/Step-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/__tests__/Step-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/components/__tests__/__snapshots__/RenderOptions-test.tsx.snap81
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/components/__tests__/__snapshots__/Step-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/Step-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/LanguageForm.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/LanguageForm.tsx)5
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/ManualTutorial.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/analyzeProject/AnalyzeTutorial.tsx)26
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/ProjectAnalysisStep.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/ProjectAnalysisStep.tsx)4
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/TokenStep.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/TokenStep.tsx)2
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/__tests__/LanguageForm-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/__tests__/LanguageForm-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/__tests__/ManualTutorial-test.tsx51
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/__tests__/ProjectAnalysisStep-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/__tests__/ProjectAnalysisStep-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/__tests__/TokenStep-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/__tests__/TokenStep-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/LanguageForm-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/LanguageForm-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/ManualTutorial-test.tsx.snap144
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/ProjectAnalysisStep-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/ProjectAnalysisStep-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/TokenStep-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/TokenStep-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/AnalysisCommand.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/AnalysisCommand.tsx)2
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/DotNet.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/DotNet.tsx)4
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/JavaGradle.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/JavaGradle.tsx)4
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/JavaMaven.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/JavaMaven.tsx)4
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/MSBuildScanner.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/MSBuildScanner.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/Other.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/Other.tsx)4
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/SQScanner.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/SQScanner.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/AnalysisCommand-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/AnalysisCommand-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/DotNet-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/DotNet-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/JavaGradle-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/JavaGradle-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/JavaMaven-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/JavaMaven-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/MSBuildScanner-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/MSBuildScanner-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/Other-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/Other-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/SQScanner-test.tsx (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/SQScanner-test.tsx)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/AnalysisCommand-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/AnalysisCommand-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/DotNet-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/DotNet-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/JavaGradle-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/JavaGradle-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/JavaMaven-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/JavaMaven-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/MSBuildScanner-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/MSBuildScanner-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/Other-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/Other-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/SQScanner-test.tsx.snap (renamed from server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/SQScanner-test.tsx.snap)0
-rw-r--r--server/sonar-web/src/main/js/components/tutorials/utils.ts (renamed from server/sonar-web/src/main/js/apps/tutorials/utils.ts)0
-rw-r--r--server/sonar-web/src/main/js/helpers/mocks/alm-settings.ts8
-rw-r--r--server/sonar-web/src/main/js/types/alm-settings.ts27
64 files changed, 419 insertions, 185 deletions
diff --git a/server/sonar-web/src/main/js/api/alm-settings.ts b/server/sonar-web/src/main/js/api/alm-settings.ts
index 6ac6b1c0963..5b70298a7c4 100644
--- a/server/sonar-web/src/main/js/api/alm-settings.ts
+++ b/server/sonar-web/src/main/js/api/alm-settings.ts
@@ -23,14 +23,14 @@ import {
AlmSettingsBindingDefinitions,
AlmSettingsInstance,
AzureBindingDefinition,
- AzureProjectAlmBinding,
+ AzureProjectAlmBindingParams,
BitbucketBindingDefinition,
- BitbucketProjectAlmBinding,
+ BitbucketProjectAlmBindingParams,
GithubBindingDefinition,
- GithubProjectAlmBinding,
+ GithubProjectAlmBindingParams,
GitlabBindingDefinition,
- GitlabProjectAlmBinding,
- ProjectAlmBinding
+ GitlabProjectAlmBindingParams,
+ ProjectAlmBindingResponse
} from '../types/alm-settings';
export function getAlmDefinitions(): Promise<AlmSettingsBindingDefinitions> {
@@ -87,7 +87,7 @@ export function countBindedProjects(almSetting: string) {
.catch(throwGlobalError);
}
-export function getProjectAlmBinding(project: string): Promise<ProjectAlmBinding> {
+export function getProjectAlmBinding(project: string): Promise<ProjectAlmBindingResponse> {
return getJSON('/api/alm_settings/get_binding', { project });
}
@@ -95,18 +95,18 @@ export function deleteProjectAlmBinding(project: string): Promise<void> {
return post('/api/alm_settings/delete_binding', { project }).catch(throwGlobalError);
}
-export function setProjectAzureBinding(data: AzureProjectAlmBinding) {
+export function setProjectAzureBinding(data: AzureProjectAlmBindingParams) {
return post('/api/alm_settings/set_azure_binding', data).catch(throwGlobalError);
}
-export function setProjectBitbucketBinding(data: BitbucketProjectAlmBinding) {
+export function setProjectBitbucketBinding(data: BitbucketProjectAlmBindingParams) {
return post('/api/alm_settings/set_bitbucket_binding', data).catch(throwGlobalError);
}
-export function setProjectGithubBinding(data: GithubProjectAlmBinding) {
+export function setProjectGithubBinding(data: GithubProjectAlmBindingParams) {
return post('/api/alm_settings/set_github_binding', data).catch(throwGlobalError);
}
-export function setProjectGitlabBinding(data: GitlabProjectAlmBinding) {
+export function setProjectGitlabBinding(data: GitlabProjectAlmBindingParams) {
return post('/api/alm_settings/set_gitlab_binding', data).catch(throwGlobalError);
}
diff --git a/server/sonar-web/src/main/js/apps/create/organization/CreateOrganization.tsx b/server/sonar-web/src/main/js/apps/create/organization/CreateOrganization.tsx
index f074bde4aaa..ac6a60056f8 100644
--- a/server/sonar-web/src/main/js/apps/create/organization/CreateOrganization.tsx
+++ b/server/sonar-web/src/main/js/apps/create/organization/CreateOrganization.tsx
@@ -47,7 +47,6 @@ import { hasAdvancedALMIntegration, sanitizeAlmId } from '../../../helpers/almIn
import { getOrganizationUrl } from '../../../helpers/urls';
import { skipOnboarding } from '../../../store/users';
import { deleteOrganization } from '../../organizations/actions';
-import '../../tutorials/styles.css'; // TODO remove me
import { createOrganization } from './actions';
import AlmApplicationInstalling from './AlmApplicationInstalling';
import AutoOrganizationCreate from './AutoOrganizationCreate';
diff --git a/server/sonar-web/src/main/js/apps/create/organization/OrganizationDetailsStep.tsx b/server/sonar-web/src/main/js/apps/create/organization/OrganizationDetailsStep.tsx
index bc1e5972dd7..91b45c1e44f 100644
--- a/server/sonar-web/src/main/js/apps/create/organization/OrganizationDetailsStep.tsx
+++ b/server/sonar-web/src/main/js/apps/create/organization/OrganizationDetailsStep.tsx
@@ -20,7 +20,7 @@
import * as React from 'react';
import AlertSuccessIcon from 'sonar-ui-common/components/icons/AlertSuccessIcon';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import Step from '../../tutorials/components/Step';
+import Step from '../../../components/tutorials/components/Step';
interface Props {
children: React.ReactNode;
diff --git a/server/sonar-web/src/main/js/apps/create/organization/PlanStep.tsx b/server/sonar-web/src/main/js/apps/create/organization/PlanStep.tsx
index 8c15bee7ab5..042210cee1e 100644
--- a/server/sonar-web/src/main/js/apps/create/organization/PlanStep.tsx
+++ b/server/sonar-web/src/main/js/apps/create/organization/PlanStep.tsx
@@ -22,8 +22,8 @@ import { SubmitButton } from 'sonar-ui-common/components/controls/buttons';
import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner';
import { translate } from 'sonar-ui-common/helpers/l10n';
import { withCurrentUser } from '../../../components/hoc/withCurrentUser';
+import Step from '../../../components/tutorials/components/Step';
import { getExtensionStart } from '../../../helpers/extensions';
-import Step from '../../tutorials/components/Step';
import BillingFormShim from '../components/BillingFormShim';
import PlanSelect, { Plan } from './PlanSelect';
diff --git a/server/sonar-web/src/main/js/apps/organizations/components/OrganizationEmpty.tsx b/server/sonar-web/src/main/js/apps/organizations/components/OrganizationEmpty.tsx
index 1b7d6cc8994..ec09e6c5e31 100644
--- a/server/sonar-web/src/main/js/apps/organizations/components/OrganizationEmpty.tsx
+++ b/server/sonar-web/src/main/js/apps/organizations/components/OrganizationEmpty.tsx
@@ -22,7 +22,7 @@ import { Button } from 'sonar-ui-common/components/controls/buttons';
import OnboardingAddMembersIcon from 'sonar-ui-common/components/icons/OnboardingAddMembersIcon';
import { translate } from 'sonar-ui-common/helpers/l10n';
import { Router, withRouter } from '../../../components/hoc/withRouter';
-import '../../tutorials/styles.css';
+import '../../../components/tutorials/styles.css';
import './OrganizationEmpty.css';
interface Props {
diff --git a/server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx b/server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx
index 633b7587789..c60873f126c 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx
@@ -22,12 +22,12 @@ import { FormattedMessage } from 'react-intl';
import { connect } from 'react-redux';
import { Alert } from 'sonar-ui-common/components/ui/Alert';
import { translate } from 'sonar-ui-common/helpers/l10n';
+import AnalyzeTutorial from '../../../components/tutorials/manual/AnalyzeTutorial';
import { getBranchLikeDisplayName, isBranch, isMainBranch } from '../../../helpers/branch-like';
import { isLoggedIn } from '../../../helpers/users';
import { getCurrentUser, Store } from '../../../store/rootReducer';
import { BranchLike } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
-import AnalyzeTutorial from '../../tutorials/analyzeProject/AnalyzeTutorial';
interface Props {
branchLike?: BranchLike;
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmBindingDefinitionForm-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmBindingDefinitionForm-test.tsx
index 0a2b19abd9a..e532eb67759 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmBindingDefinitionForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmBindingDefinitionForm-test.tsx
@@ -20,7 +20,7 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { waitAndUpdate } from 'sonar-ui-common/helpers/testUtils';
-import { mockGithubDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockGithubBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import { GithubBindingDefinition } from '../../../../../types/alm-settings';
import AlmBindingDefinitionForm from '../AlmBindingDefinitionForm';
@@ -29,14 +29,14 @@ it('should render correctly', () => {
});
it('should reset if the props change', () => {
- const bindingDefinition = mockGithubDefinition();
+ const bindingDefinition = mockGithubBindingDefinition();
const wrapper = shallowRender({ bindingDefinition });
wrapper.setState({ formData: { ...bindingDefinition, appId: 'newAppId' }, touched: true });
wrapper.setProps({ bindingDefinition: { ...bindingDefinition } });
expect(wrapper.state('touched')).toBe(true);
- wrapper.setProps({ bindingDefinition: mockGithubDefinition({ key: 'diffKey' }) });
+ wrapper.setProps({ bindingDefinition: mockGithubBindingDefinition({ key: 'diffKey' }) });
expect(wrapper.state('touched')).toBe(false);
});
@@ -90,7 +90,7 @@ it('should handle cancelling', () => {
onCancel
});
- wrapper.setState({ formData: mockGithubDefinition() });
+ wrapper.setState({ formData: mockGithubBindingDefinition() });
wrapper.instance().handleCancel();
expect(wrapper.state().formData).toBe(bindingDefinition);
@@ -99,7 +99,7 @@ it('should handle cancelling', () => {
it('should handle deleting', () => {
const onDelete = jest.fn();
- const bindingDefinition = mockGithubDefinition();
+ const bindingDefinition = mockGithubBindingDefinition();
const wrapper = shallowRender({
bindingDefinition,
onDelete
@@ -113,14 +113,14 @@ it('should (dis)allow submit by validating its state', () => {
const wrapper = shallowRender();
expect(wrapper.instance().canSubmit()).toBe(false);
- wrapper.setState({ formData: mockGithubDefinition(), touched: true });
+ wrapper.setState({ formData: mockGithubBindingDefinition(), touched: true });
expect(wrapper.instance().canSubmit()).toBe(true);
- wrapper.setState({ formData: mockGithubDefinition({ key: '' }), touched: true });
+ wrapper.setState({ formData: mockGithubBindingDefinition({ key: '' }), touched: true });
wrapper.setProps({ hideKeyField: true });
expect(wrapper.instance().canSubmit()).toBe(true);
- wrapper.setState({ formData: mockGithubDefinition({ url: '' }), touched: true });
+ wrapper.setState({ formData: mockGithubBindingDefinition({ url: '' }), touched: true });
wrapper.setProps({ optionalFields: ['url'] });
expect(wrapper.instance().canSubmit()).toBe(true);
});
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTab-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTab-test.tsx
index 4e6fb6289d0..a6172bb85bb 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTab-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTab-test.tsx
@@ -20,7 +20,7 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { waitAndUpdate } from 'sonar-ui-common/helpers/testUtils';
-import { mockAzureDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockAzureBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import { AlmKeys, AzureBindingDefinition } from '../../../../../types/alm-settings';
import AlmTab from '../AlmTab';
@@ -37,7 +37,7 @@ it('should handle cancel', async () => {
const wrapper = shallowRender();
wrapper.setState({
- editedDefinition: mockAzureDefinition()
+ editedDefinition: mockAzureBindingDefinition()
});
wrapper.instance().handleCancel();
@@ -48,7 +48,7 @@ it('should handle cancel', async () => {
});
it('should handle edit', async () => {
- const config = mockAzureDefinition();
+ const config = mockAzureBindingDefinition();
const wrapper = shallowRender({ definitions: [config] });
wrapper.instance().handleEdit(config.key);
await waitAndUpdate(wrapper);
@@ -58,7 +58,7 @@ it('should handle edit', async () => {
it('should create config', async () => {
const onUpdateDefinitions = jest.fn();
const createConfiguration = jest.fn(() => Promise.resolve());
- const config = mockAzureDefinition();
+ const config = mockAzureBindingDefinition();
const wrapper = shallowRender({ createConfiguration, onUpdateDefinitions });
wrapper.instance().handleCreate();
@@ -75,7 +75,7 @@ it('should create config', async () => {
it('should update config', async () => {
const onUpdateDefinitions = jest.fn();
const updateConfiguration = jest.fn(() => Promise.resolve());
- const config = mockAzureDefinition();
+ const config = mockAzureBindingDefinition();
const wrapper = shallowRender({ onUpdateDefinitions, updateConfiguration });
wrapper.setState({ editedDefinition: config });
@@ -96,7 +96,7 @@ function shallowRender(props: Partial<AlmTab<AzureBindingDefinition>['props']> =
alm={AlmKeys.Azure}
createConfiguration={jest.fn()}
defaultBinding={DEFAULT_BINDING}
- definitions={[mockAzureDefinition()]}
+ definitions={[mockAzureBindingDefinition()]}
form={jest.fn()}
loading={false}
multipleAlmEnabled={true}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTabRenderer-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTabRenderer-test.tsx
index d0fab91181d..4514ccf263f 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTabRenderer-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AlmTabRenderer-test.tsx
@@ -19,14 +19,14 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import { mockGithubDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockGithubBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import { AlmKeys, GithubBindingDefinition } from '../../../../../types/alm-settings';
import AlmTabRenderer, { AlmTabRendererProps } from '../AlmTabRenderer';
it('should render correctly for multi-ALM binding', () => {
expect(shallowRender({ loading: true })).toMatchSnapshot('loading');
expect(shallowRender()).toMatchSnapshot('loaded');
- expect(shallowRender({ editedDefinition: mockGithubDefinition() })).toMatchSnapshot(
+ expect(shallowRender({ editedDefinition: mockGithubBindingDefinition() })).toMatchSnapshot(
'editing a definition'
);
expect(
@@ -51,7 +51,7 @@ it('should render correctly for single-ALM binding', () => {
expect(shallowRender({ loading: true, multipleAlmEnabled: false })).toMatchSnapshot();
expect(shallowRender({ multipleAlmEnabled: false })).toMatchSnapshot();
expect(
- shallowRender({ definitions: [mockGithubDefinition()], multipleAlmEnabled: false })
+ shallowRender({ definitions: [mockGithubBindingDefinition()], multipleAlmEnabled: false })
).toMatchSnapshot();
});
@@ -61,8 +61,8 @@ function shallowRender(props: Partial<AlmTabRendererProps<GithubBindingDefinitio
additionalColumnsHeaders={['url', 'app_id']}
additionalColumnsKeys={['url', 'appId']}
alm={AlmKeys.GitHub}
- defaultBinding={mockGithubDefinition()}
- definitions={[mockGithubDefinition()]}
+ defaultBinding={mockGithubBindingDefinition()}
+ definitions={[mockGithubBindingDefinition()]}
form={jest.fn()}
loading={false}
multipleAlmEnabled={true}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureForm-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureForm-test.tsx
index 1d5fbb7472b..fe4a99102a0 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureForm-test.tsx
@@ -19,12 +19,12 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import { mockAzureDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockAzureBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import AzureForm, { AzureFormProps } from '../AzureForm';
it('should render correctly', () => {
expect(shallowRender()).toMatchSnapshot();
- expect(shallowRender({ formData: mockAzureDefinition() })).toMatchSnapshot();
+ expect(shallowRender({ formData: mockAzureBindingDefinition() })).toMatchSnapshot();
});
function shallowRender(props: Partial<AzureFormProps> = {}) {
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureTab-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureTab-test.tsx
index 16dba8d81cd..5b2389dda7c 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureTab-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/AzureTab-test.tsx
@@ -19,7 +19,7 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import { mockAzureDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockAzureBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import AzureTab, { AzureTabProps } from '../AzureTab';
it('should render correctly', () => {
@@ -29,7 +29,7 @@ it('should render correctly', () => {
function shallowRender(props: Partial<AzureTabProps> = {}) {
return shallow(
<AzureTab
- definitions={[mockAzureDefinition()]}
+ definitions={[mockAzureBindingDefinition()]}
loading={false}
multipleAlmEnabled={true}
onDelete={jest.fn()}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketForm-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketForm-test.tsx
index de693816844..af5548d793d 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketForm-test.tsx
@@ -19,12 +19,12 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import { mockBitbucketDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockBitbucketBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import BitbucketForm, { BitbucketFormProps } from '../BitbucketForm';
it('should render correctly', () => {
expect(shallowRender()).toMatchSnapshot();
- expect(shallowRender({ formData: mockBitbucketDefinition() })).toMatchSnapshot();
+ expect(shallowRender({ formData: mockBitbucketBindingDefinition() })).toMatchSnapshot();
});
function shallowRender(props: Partial<BitbucketFormProps> = {}) {
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketTab-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketTab-test.tsx
index 1cdb3162ad9..d1bfdcc5d49 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketTab-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/BitbucketTab-test.tsx
@@ -19,7 +19,7 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import { mockBitbucketDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockBitbucketBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import BitbucketTab, { BitbucketTabProps } from '../BitbucketTab';
it('should render correctly', () => {
@@ -29,7 +29,7 @@ it('should render correctly', () => {
function shallowRender(props: Partial<BitbucketTabProps> = {}) {
return shallow(
<BitbucketTab
- definitions={[mockBitbucketDefinition()]}
+ definitions={[mockBitbucketBindingDefinition()]}
loading={false}
multipleAlmEnabled={true}
onDelete={jest.fn()}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubForm-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubForm-test.tsx
index b279b01ea22..e67edb9e294 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubForm-test.tsx
@@ -19,12 +19,12 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import { mockGithubDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockGithubBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import GithubForm, { GithubFormProps } from '../GithubForm';
it('should render correctly', () => {
expect(shallowRender()).toMatchSnapshot();
- expect(shallowRender({ formData: mockGithubDefinition() })).toMatchSnapshot();
+ expect(shallowRender({ formData: mockGithubBindingDefinition() })).toMatchSnapshot();
});
function shallowRender(props: Partial<GithubFormProps> = {}) {
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubTab-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubTab-test.tsx
index 15d6d36638d..51f3ec73ee0 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubTab-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GithubTab-test.tsx
@@ -19,7 +19,7 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import { mockGithubDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockGithubBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import GithubTab, { GithubTabProps } from '../GithubTab';
it('should render correctly', () => {
@@ -31,7 +31,7 @@ function shallowRender(props: Partial<GithubTabProps> = {}) {
return shallow(
<GithubTab
branchesEnabled={true}
- definitions={[mockGithubDefinition()]}
+ definitions={[mockGithubBindingDefinition()]}
loading={false}
multipleAlmEnabled={true}
onDelete={jest.fn()}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabForm-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabForm-test.tsx
index 038331bd641..06c7b18a948 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabForm-test.tsx
@@ -19,12 +19,12 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import { mockGitlabDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockGitlabBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import GitlabForm, { GitlabFormProps } from '../GitlabForm';
it('should render correctly', () => {
expect(shallowRender()).toMatchSnapshot();
- expect(shallowRender({ formData: mockGitlabDefinition() })).toMatchSnapshot();
+ expect(shallowRender({ formData: mockGitlabBindingDefinition() })).toMatchSnapshot();
});
function shallowRender(props: Partial<GitlabFormProps> = {}) {
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabTab-test.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabTab-test.tsx
index 45cc16ed97b..7d8d70c3b3c 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabTab-test.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/__tests__/GitlabTab-test.tsx
@@ -19,7 +19,7 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import { mockGitlabDefinition } from '../../../../../helpers/mocks/alm-settings';
+import { mockGitlabBindingDefinition } from '../../../../../helpers/mocks/alm-settings';
import GitlabTab, { GitlabTabProps } from '../GitlabTab';
it('should render correctly', () => {
@@ -31,7 +31,7 @@ function shallowRender(props: Partial<GitlabTabProps> = {}) {
return shallow(
<GitlabTab
branchesEnabled={true}
- definitions={[mockGitlabDefinition()]}
+ definitions={[mockGitlabBindingDefinition()]}
loading={false}
multipleAlmEnabled={true}
onDelete={jest.fn()}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx
index c311e6a0a33..9d5e2fa471f 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx
@@ -28,27 +28,33 @@ import {
setProjectGitlabBinding
} from '../../../../api/alm-settings';
import throwGlobalError from '../../../../app/utils/throwGlobalError';
-import { AlmKeys, AlmSettingsInstance, ProjectAlmBinding } from '../../../../types/alm-settings';
+import {
+ AlmKeys,
+ AlmSettingsInstance,
+ ProjectAlmBindingResponse
+} from '../../../../types/alm-settings';
import PRDecorationBindingRenderer from './PRDecorationBindingRenderer';
+type FormData = T.Omit<ProjectAlmBindingResponse, 'alm'>;
+
interface Props {
component: T.Component;
}
interface State {
- formData: ProjectAlmBinding;
+ formData: FormData;
instances: AlmSettingsInstance[];
isChanged: boolean;
isConfigured: boolean;
isValid: boolean;
loading: boolean;
- orignalData?: ProjectAlmBinding;
+ orignalData?: FormData;
saving: boolean;
success: boolean;
}
const REQUIRED_FIELDS_BY_ALM: {
- [almKey in AlmKeys]: Array<keyof T.Omit<ProjectAlmBinding, 'key'>>;
+ [almKey in AlmKeys]: Array<keyof T.Omit<FormData, 'key'>>;
} = {
[AlmKeys.Azure]: [],
[AlmKeys.Bitbucket]: ['repository', 'slug'],
@@ -104,7 +110,7 @@ export default class PRDecorationBinding extends React.PureComponent<Props, Stat
});
};
- getProjectBinding(project: string): Promise<ProjectAlmBinding | undefined> {
+ getProjectBinding(project: string): Promise<ProjectAlmBindingResponse | undefined> {
return getProjectAlmBinding(project).catch((response: Response) => {
if (response && response.status === 404) {
return undefined;
@@ -144,7 +150,7 @@ export default class PRDecorationBinding extends React.PureComponent<Props, Stat
submitProjectAlmBinding(
alm: AlmKeys,
key: string,
- almSpecificFields?: T.Omit<ProjectAlmBinding, 'key'>
+ almSpecificFields?: T.Omit<FormData, 'key'>
): Promise<void> {
const almSetting = key;
const project = this.props.component.key;
@@ -225,13 +231,13 @@ export default class PRDecorationBinding extends React.PureComponent<Props, Stat
};
isDataSame(
- { key, repository = '', slug = '', summaryCommentEnabled = false }: ProjectAlmBinding,
+ { key, repository = '', slug = '', summaryCommentEnabled = false }: FormData,
{
key: oKey = '',
repository: oRepository = '',
slug: oSlug = '',
summaryCommentEnabled: osummaryCommentEnabled = false
- }: ProjectAlmBinding
+ }: FormData
) {
return (
key === oKey &&
@@ -241,7 +247,7 @@ export default class PRDecorationBinding extends React.PureComponent<Props, Stat
);
}
- handleFieldChange = (id: keyof ProjectAlmBinding, value: string | boolean) => {
+ handleFieldChange = (id: keyof ProjectAlmBindingResponse, value: string | boolean) => {
this.setState(({ formData, orignalData }) => {
const newFormData = {
...formData,
diff --git a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx
index 91b8a78af1f..bebbde1d020 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx
@@ -27,17 +27,21 @@ import AlertSuccessIcon from 'sonar-ui-common/components/icons/AlertSuccessIcon'
import { Alert } from 'sonar-ui-common/components/ui/Alert';
import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import { AlmKeys, AlmSettingsInstance, ProjectAlmBinding } from '../../../../types/alm-settings';
+import {
+ AlmKeys,
+ AlmSettingsInstance,
+ ProjectAlmBindingResponse
+} from '../../../../types/alm-settings';
import InputForBoolean from '../inputs/InputForBoolean';
export interface PRDecorationBindingRendererProps {
- formData: ProjectAlmBinding;
+ formData: T.Omit<ProjectAlmBindingResponse, 'alm'>;
instances: AlmSettingsInstance[];
isChanged: boolean;
isConfigured: boolean;
isValid: boolean;
loading: boolean;
- onFieldChange: (id: keyof ProjectAlmBinding, value: string | boolean) => void;
+ onFieldChange: (id: keyof ProjectAlmBindingResponse, value: string | boolean) => void;
onReset: () => void;
onSubmit: () => void;
saving: boolean;
@@ -52,8 +56,8 @@ interface LabelProps {
}
interface CommonFieldProps extends LabelProps {
- onFieldChange: (id: keyof ProjectAlmBinding, value: string | boolean) => void;
- propKey: keyof ProjectAlmBinding;
+ onFieldChange: (id: keyof ProjectAlmBindingResponse, value: string | boolean) => void;
+ propKey: keyof ProjectAlmBindingResponse;
}
function optionRenderer(instance: AlmSettingsInstance) {
diff --git a/server/sonar-web/src/main/js/apps/tutorials/analyzeProject/__tests__/__snapshots__/AnalyzeTutorial-test.tsx.snap b/server/sonar-web/src/main/js/apps/tutorials/analyzeProject/__tests__/__snapshots__/AnalyzeTutorial-test.tsx.snap
deleted file mode 100644
index c4b2f7a3b43..00000000000
--- a/server/sonar-web/src/main/js/apps/tutorials/analyzeProject/__tests__/__snapshots__/AnalyzeTutorial-test.tsx.snap
+++ /dev/null
@@ -1,55 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`renders correctly 1`] = `
-<Fragment>
- <div
- className="page-header big-spacer-bottom"
- >
- <h1
- className="page-title"
- >
- onboarding.project_analysis.header
- </h1>
- <p
- className="page-description"
- >
- <InstanceMessage
- message="onboarding.project_analysis.description"
- />
- </p>
- </div>
- <TokenStep
- currentUser={
- Object {
- "groups": Array [],
- "isLoggedIn": true,
- "login": "luke",
- "name": "Skywalker",
- "scmAccounts": Array [],
- }
- }
- finished={false}
- initialTokenName="Analyze \\"Foo\\""
- onContinue={[Function]}
- onOpen={[Function]}
- open={true}
- stepNumber={1}
- />
- <ProjectAnalysisStep
- component={
- Object {
- "analysisDate": "2016-01-01",
- "breadcrumbs": Array [],
- "key": "foo",
- "name": "Foo",
- "organization": "org",
- "qualifier": "TRK",
- "version": "0.0.1",
- }
- }
- displayRowLayout={true}
- open={false}
- stepNumber={2}
- />
-</Fragment>
-`;
diff --git a/server/sonar-web/src/main/js/apps/tutorials/__tests__/utils-test.ts b/server/sonar-web/src/main/js/components/tutorials/__tests__/utils-test.ts
index f16f4b82ac4..f16f4b82ac4 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/__tests__/utils-test.ts
+++ b/server/sonar-web/src/main/js/components/tutorials/__tests__/utils-test.ts
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/RenderOptions.tsx b/server/sonar-web/src/main/js/components/tutorials/components/RenderOptions.tsx
index 377727a4a91..488289c8247 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/RenderOptions.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/components/RenderOptions.tsx
@@ -21,7 +21,7 @@ import * as React from 'react';
import RadioToggle from 'sonar-ui-common/components/controls/RadioToggle';
import { translate } from 'sonar-ui-common/helpers/l10n';
-interface RenderOptionsProps {
+export interface RenderOptionsProps {
checked: string | undefined;
name: string;
onCheck: (checked: string) => void;
@@ -30,7 +30,7 @@ interface RenderOptionsProps {
titleLabelKey?: string;
}
-export function RenderOptions({
+export default function RenderOptions({
checked,
onCheck,
optionLabelKey,
diff --git a/server/sonar-web/src/main/js/apps/tutorials/styles.css b/server/sonar-web/src/main/js/components/tutorials/components/Step.css
index ec206ba8afd..ec206ba8afd 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/styles.css
+++ b/server/sonar-web/src/main/js/components/tutorials/components/Step.css
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/Step.tsx b/server/sonar-web/src/main/js/components/tutorials/components/Step.tsx
index 190edda7835..106d8c3b6a7 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/Step.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/components/Step.tsx
@@ -20,6 +20,7 @@
/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/no-noninteractive-tabindex */
import * as classNames from 'classnames';
import * as React from 'react';
+import './Step.css';
interface Props {
finished?: boolean;
diff --git a/server/sonar-web/src/main/js/apps/tutorials/analyzeProject/__tests__/AnalyzeTutorial-test.tsx b/server/sonar-web/src/main/js/components/tutorials/components/__tests__/RenderOptions-test.tsx
index 4c4344fe56a..c2ad68721ab 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/analyzeProject/__tests__/AnalyzeTutorial-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/components/__tests__/RenderOptions-test.tsx
@@ -19,32 +19,23 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
-import AnalyzeTutorial from '../AnalyzeTutorial';
+import RenderOptions, { RenderOptionsProps } from '../RenderOptions';
-Date.now = jest.fn().mockReturnValue(1540457859031);
-
-const component = {
- key: 'foo',
- analysisDate: '2016-01-01',
- breadcrumbs: [],
- name: 'Foo',
- organization: 'org',
- qualifier: 'TRK',
- version: '0.0.1'
-};
-
-const loggedInUser: T.LoggedInUser = {
- groups: [],
- isLoggedIn: true,
- login: 'luke',
- name: 'Skywalker',
- scmAccounts: []
-};
-
-it('renders correctly', () => {
- expect(getWrapper()).toMatchSnapshot();
+it('should render correctly', () => {
+ expect(shallowRender()).toMatchSnapshot('default');
+ expect(shallowRender({ checked: 'baz' })).toMatchSnapshot('option checked');
+ expect(shallowRender({ titleLabelKey: 'title.key' })).toMatchSnapshot('with title');
});
-function getWrapper(props = {}) {
- return shallow(<AnalyzeTutorial component={component} currentUser={loggedInUser} {...props} />);
+function shallowRender(props: Partial<RenderOptionsProps> = {}) {
+ return shallow<RenderOptionsProps>(
+ <RenderOptions
+ checked={undefined}
+ name="bar"
+ onCheck={jest.fn()}
+ optionLabelKey="foo.bar"
+ options={['foo', 'baz']}
+ {...props}
+ />
+ );
}
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/Step-test.tsx b/server/sonar-web/src/main/js/components/tutorials/components/__tests__/Step-test.tsx
index bda5bedc967..bda5bedc967 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/Step-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/components/__tests__/Step-test.tsx
diff --git a/server/sonar-web/src/main/js/components/tutorials/components/__tests__/__snapshots__/RenderOptions-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/components/__tests__/__snapshots__/RenderOptions-test.tsx.snap
new file mode 100644
index 00000000000..535f9f58721
--- /dev/null
+++ b/server/sonar-web/src/main/js/components/tutorials/components/__tests__/__snapshots__/RenderOptions-test.tsx.snap
@@ -0,0 +1,81 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`should render correctly: default 1`] = `
+<div
+ className="big-spacer-top"
+>
+ <RadioToggle
+ disabled={false}
+ name=""
+ onCheck={[MockFunction]}
+ options={
+ Array [
+ Object {
+ "label": "foo.bar.foo",
+ "value": "foo",
+ },
+ Object {
+ "label": "foo.bar.baz",
+ "value": "baz",
+ },
+ ]
+ }
+ value={null}
+ />
+</div>
+`;
+
+exports[`should render correctly: option checked 1`] = `
+<div
+ className="big-spacer-top"
+>
+ <RadioToggle
+ disabled={false}
+ name=""
+ onCheck={[MockFunction]}
+ options={
+ Array [
+ Object {
+ "label": "foo.bar.foo",
+ "value": "foo",
+ },
+ Object {
+ "label": "foo.bar.baz",
+ "value": "baz",
+ },
+ ]
+ }
+ value="baz"
+ />
+</div>
+`;
+
+exports[`should render correctly: with title 1`] = `
+<div
+ className="big-spacer-top"
+>
+ <h4
+ className="spacer-bottom"
+ >
+ title.key
+ </h4>
+ <RadioToggle
+ disabled={false}
+ name=""
+ onCheck={[MockFunction]}
+ options={
+ Array [
+ Object {
+ "label": "foo.bar.foo",
+ "value": "foo",
+ },
+ Object {
+ "label": "foo.bar.baz",
+ "value": "baz",
+ },
+ ]
+ }
+ value={null}
+ />
+</div>
+`;
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/Step-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/components/__tests__/__snapshots__/Step-test.tsx.snap
index 1e188e0d498..1e188e0d498 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/Step-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/components/__tests__/__snapshots__/Step-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/LanguageForm.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/LanguageForm.tsx
index d289f09cf5b..30701bc194b 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/LanguageForm.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/LanguageForm.tsx
@@ -20,8 +20,9 @@
import * as React from 'react';
import RadioToggle from 'sonar-ui-common/components/controls/RadioToggle';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import { isLanguageConfigured, LanguageConfig } from '../utils';
-import { RenderOptions } from './RenderOptions';
+import RenderOptions from '../components/RenderOptions';
+import { LanguageConfig } from '../types';
+import { isLanguageConfigured } from '../utils';
interface Props {
component: T.Component;
diff --git a/server/sonar-web/src/main/js/apps/tutorials/analyzeProject/AnalyzeTutorial.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/ManualTutorial.tsx
index e873d687706..f1b4c1dcee3 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/analyzeProject/AnalyzeTutorial.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/ManualTutorial.tsx
@@ -18,12 +18,13 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import Tooltip from 'sonar-ui-common/components/controls/Tooltip';
+import BackIcon from 'sonar-ui-common/components/icons/BackIcon';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import InstanceMessage from '../../../components/common/InstanceMessage';
import { isVSTS } from '../../../helpers/almIntegrations';
-import ProjectAnalysisStep from '../components/ProjectAnalysisStep';
-import TokenStep from '../components/TokenStep';
-import '../styles.css';
+import InstanceMessage from '../../common/InstanceMessage';
+import ProjectAnalysisStep from './ProjectAnalysisStep';
+import TokenStep from './TokenStep';
export enum Steps {
ANALYSIS,
@@ -33,6 +34,7 @@ export enum Steps {
interface Props {
component: T.Component;
currentUser: T.LoggedInUser;
+ onBack?: () => void;
}
interface State {
@@ -40,7 +42,7 @@ interface State {
token?: string;
}
-export default class AnalyzeTutorial extends React.PureComponent<Props, State> {
+export default class ManualTutorial extends React.PureComponent<Props, State> {
state: State = { step: Steps.TOKEN };
handleTokenDone = (token: string) => {
@@ -59,7 +61,19 @@ export default class AnalyzeTutorial extends React.PureComponent<Props, State> {
return (
<>
<div className="page-header big-spacer-bottom">
- <h1 className="page-title">{translate('onboarding.project_analysis.header')}</h1>
+ <h1 className="page-title">
+ {this.props.onBack !== undefined && (
+ <Tooltip overlay={translate('onboarding.tutorial.return_to_list')}>
+ <a
+ aria-label={translate('onboarding.tutorial.return_to_list')}
+ className="link-no-underline big-spacer-right"
+ onClick={this.props.onBack}>
+ <BackIcon />
+ </a>
+ </Tooltip>
+ )}
+ {translate('onboarding.project_analysis.header')}
+ </h1>
<p className="page-description">
<InstanceMessage message={translate('onboarding.project_analysis.description')} />
</p>
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/ProjectAnalysisStep.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/ProjectAnalysisStep.tsx
index 710938df502..c3acaff6ae0 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/ProjectAnalysisStep.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/ProjectAnalysisStep.tsx
@@ -19,10 +19,10 @@
*/
import * as React from 'react';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import { LanguageConfig } from '../utils';
+import Step from '../components/Step';
+import { LanguageConfig } from '../types';
import AnalysisCommand from './commands/AnalysisCommand';
import LanguageForm from './LanguageForm';
-import Step from './Step';
interface Props {
component: T.Component;
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/TokenStep.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/TokenStep.tsx
index 32da736ed30..4ce914dd319 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/TokenStep.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/TokenStep.tsx
@@ -26,8 +26,8 @@ import AlertErrorIcon from 'sonar-ui-common/components/icons/AlertErrorIcon';
import AlertSuccessIcon from 'sonar-ui-common/components/icons/AlertSuccessIcon';
import { translate } from 'sonar-ui-common/helpers/l10n';
import { generateToken, getTokens, revokeToken } from '../../../api/user-tokens';
+import Step from '../components/Step';
import { getUniqueTokenName } from '../utils';
-import Step from './Step';
interface Props {
currentUser: Pick<T.LoggedInUser, 'login'>;
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/LanguageForm-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/LanguageForm-test.tsx
index 24dd2af27b0..24dd2af27b0 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/LanguageForm-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/LanguageForm-test.tsx
diff --git a/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/ManualTutorial-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/ManualTutorial-test.tsx
new file mode 100644
index 00000000000..79a269a35c4
--- /dev/null
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/ManualTutorial-test.tsx
@@ -0,0 +1,51 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2020 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+import { shallow } from 'enzyme';
+import * as React from 'react';
+import { mockComponent, mockLoggedInUser } from '../../../../helpers/testMocks';
+import ManualTutorial from '../ManualTutorial';
+import ProjectAnalysisStep from '../ProjectAnalysisStep';
+import TokenStep from '../TokenStep';
+
+it('renders correctly', () => {
+ expect(shallowRender()).toMatchSnapshot('default');
+ expect(shallowRender({ onBack: jest.fn() })).toMatchSnapshot('with back button');
+});
+
+it('allows to navigate between steps', () => {
+ const wrapper = shallowRender();
+ const instance = wrapper.instance();
+
+ expect(wrapper.find(TokenStep).props().open).toBe(true);
+
+ instance.handleTokenDone('foo');
+ expect(wrapper.find(TokenStep).props().open).toBe(false);
+ expect(wrapper.find(ProjectAnalysisStep).props().open).toBe(true);
+
+ instance.handleTokenOpen();
+ expect(wrapper.find(TokenStep).props().open).toBe(true);
+ expect(wrapper.find(ProjectAnalysisStep).props().open).toBe(false);
+});
+
+function shallowRender(props: Partial<ManualTutorial['props']> = {}) {
+ return shallow<ManualTutorial>(
+ <ManualTutorial component={mockComponent()} currentUser={mockLoggedInUser()} {...props} />
+ );
+}
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/ProjectAnalysisStep-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/ProjectAnalysisStep-test.tsx
index 4b6ecf87069..4b6ecf87069 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/ProjectAnalysisStep-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/ProjectAnalysisStep-test.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/TokenStep-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/TokenStep-test.tsx
index 8a9f52d61e9..8a9f52d61e9 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/TokenStep-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/TokenStep-test.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/LanguageForm-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/LanguageForm-test.tsx.snap
index 04745f2597c..04745f2597c 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/LanguageForm-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/LanguageForm-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/ManualTutorial-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/ManualTutorial-test.tsx.snap
new file mode 100644
index 00000000000..cc1cf2fc27a
--- /dev/null
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/ManualTutorial-test.tsx.snap
@@ -0,0 +1,144 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders correctly: default 1`] = `
+<Fragment>
+ <div
+ className="page-header big-spacer-bottom"
+ >
+ <h1
+ className="page-title"
+ >
+ onboarding.project_analysis.header
+ </h1>
+ <p
+ className="page-description"
+ >
+ <InstanceMessage
+ message="onboarding.project_analysis.description"
+ />
+ </p>
+ </div>
+ <TokenStep
+ currentUser={
+ Object {
+ "groups": Array [],
+ "isLoggedIn": true,
+ "login": "luke",
+ "name": "Skywalker",
+ "scmAccounts": Array [],
+ }
+ }
+ finished={false}
+ initialTokenName="Analyze \\"MyProject\\""
+ onContinue={[Function]}
+ onOpen={[Function]}
+ open={true}
+ stepNumber={1}
+ />
+ <ProjectAnalysisStep
+ component={
+ Object {
+ "breadcrumbs": Array [],
+ "key": "my-project",
+ "name": "MyProject",
+ "organization": "foo",
+ "qualifier": "TRK",
+ "qualityGate": Object {
+ "isDefault": true,
+ "key": "30",
+ "name": "Sonar way",
+ },
+ "qualityProfiles": Array [
+ Object {
+ "deleted": false,
+ "key": "my-qp",
+ "language": "ts",
+ "name": "Sonar way",
+ },
+ ],
+ "tags": Array [],
+ }
+ }
+ displayRowLayout={true}
+ open={false}
+ stepNumber={2}
+ />
+</Fragment>
+`;
+
+exports[`renders correctly: with back button 1`] = `
+<Fragment>
+ <div
+ className="page-header big-spacer-bottom"
+ >
+ <h1
+ className="page-title"
+ >
+ <Tooltip
+ overlay="onboarding.tutorial.return_to_list"
+ >
+ <a
+ aria-label="onboarding.tutorial.return_to_list"
+ className="link-no-underline big-spacer-right"
+ onClick={[MockFunction]}
+ >
+ <BackIcon />
+ </a>
+ </Tooltip>
+ onboarding.project_analysis.header
+ </h1>
+ <p
+ className="page-description"
+ >
+ <InstanceMessage
+ message="onboarding.project_analysis.description"
+ />
+ </p>
+ </div>
+ <TokenStep
+ currentUser={
+ Object {
+ "groups": Array [],
+ "isLoggedIn": true,
+ "login": "luke",
+ "name": "Skywalker",
+ "scmAccounts": Array [],
+ }
+ }
+ finished={false}
+ initialTokenName="Analyze \\"MyProject\\""
+ onContinue={[Function]}
+ onOpen={[Function]}
+ open={true}
+ stepNumber={1}
+ />
+ <ProjectAnalysisStep
+ component={
+ Object {
+ "breadcrumbs": Array [],
+ "key": "my-project",
+ "name": "MyProject",
+ "organization": "foo",
+ "qualifier": "TRK",
+ "qualityGate": Object {
+ "isDefault": true,
+ "key": "30",
+ "name": "Sonar way",
+ },
+ "qualityProfiles": Array [
+ Object {
+ "deleted": false,
+ "key": "my-qp",
+ "language": "ts",
+ "name": "Sonar way",
+ },
+ ],
+ "tags": Array [],
+ }
+ }
+ displayRowLayout={true}
+ open={false}
+ stepNumber={2}
+ />
+</Fragment>
+`;
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/ProjectAnalysisStep-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/ProjectAnalysisStep-test.tsx.snap
index 0380c578d47..0380c578d47 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/ProjectAnalysisStep-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/ProjectAnalysisStep-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/TokenStep-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/TokenStep-test.tsx.snap
index 6ad2bfc2e0c..6ad2bfc2e0c 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/__tests__/__snapshots__/TokenStep-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/__tests__/__snapshots__/TokenStep-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/AnalysisCommand.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/AnalysisCommand.tsx
index 6fc3994d5f3..dd66db28258 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/AnalysisCommand.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/AnalysisCommand.tsx
@@ -19,7 +19,7 @@
*/
import * as React from 'react';
import { getHostUrl } from 'sonar-ui-common/helpers/urls';
-import { LanguageConfig } from '../../utils';
+import { LanguageConfig } from '../../types';
import { getProjectKey } from '../ProjectAnalysisStep';
import DotNet from './DotNet';
import JavaGradle from './JavaGradle';
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/DotNet.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/DotNet.tsx
index 99b8206aa94..a1d61c80412 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/DotNet.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/DotNet.tsx
@@ -20,8 +20,8 @@
import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import CodeSnippet from '../../../../components/common/CodeSnippet';
-import InstanceMessage from '../../../../components/common/InstanceMessage';
+import CodeSnippet from '../../../common/CodeSnippet';
+import InstanceMessage from '../../../common/InstanceMessage';
import MSBuildScanner from './MSBuildScanner';
export interface Props {
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/JavaGradle.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/JavaGradle.tsx
index d6a127bc1fe..8a3be3f0034 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/JavaGradle.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/JavaGradle.tsx
@@ -20,8 +20,8 @@
import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import CodeSnippet from '../../../../components/common/CodeSnippet';
-import InstanceMessage from '../../../../components/common/InstanceMessage';
+import CodeSnippet from '../../../common/CodeSnippet';
+import InstanceMessage from '../../../common/InstanceMessage';
export interface Props {
host: string;
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/JavaMaven.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/JavaMaven.tsx
index d7a9779b1f1..488fb76aa72 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/JavaMaven.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/JavaMaven.tsx
@@ -20,8 +20,8 @@
import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import CodeSnippet from '../../../../components/common/CodeSnippet';
-import InstanceMessage from '../../../../components/common/InstanceMessage';
+import CodeSnippet from '../../../common/CodeSnippet';
+import InstanceMessage from '../../../common/InstanceMessage';
export interface Props {
host: string;
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/MSBuildScanner.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/MSBuildScanner.tsx
index 9ff8c9a4be2..9ff8c9a4be2 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/MSBuildScanner.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/MSBuildScanner.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/Other.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/Other.tsx
index 3de5fd6b4fa..61e3f9f40a4 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/Other.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/Other.tsx
@@ -20,8 +20,8 @@
import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import { translate } from 'sonar-ui-common/helpers/l10n';
-import CodeSnippet from '../../../../components/common/CodeSnippet';
-import InstanceMessage from '../../../../components/common/InstanceMessage';
+import CodeSnippet from '../../../common/CodeSnippet';
+import InstanceMessage from '../../../common/InstanceMessage';
import { quote } from '../../utils';
import SQScanner from './SQScanner';
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/SQScanner.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/SQScanner.tsx
index 663fda6a3ce..663fda6a3ce 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/SQScanner.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/SQScanner.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/AnalysisCommand-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/AnalysisCommand-test.tsx
index 6f8c57e4513..6f8c57e4513 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/AnalysisCommand-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/AnalysisCommand-test.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/DotNet-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/DotNet-test.tsx
index 8f00456d2d4..8f00456d2d4 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/DotNet-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/DotNet-test.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/JavaGradle-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/JavaGradle-test.tsx
index 0fc13a7dba4..0fc13a7dba4 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/JavaGradle-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/JavaGradle-test.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/JavaMaven-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/JavaMaven-test.tsx
index 7304894fd13..7304894fd13 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/JavaMaven-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/JavaMaven-test.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/MSBuildScanner-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/MSBuildScanner-test.tsx
index 8da96cd4c40..8da96cd4c40 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/MSBuildScanner-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/MSBuildScanner-test.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/Other-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/Other-test.tsx
index f4ab19c816f..f4ab19c816f 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/Other-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/Other-test.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/SQScanner-test.tsx b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/SQScanner-test.tsx
index 26a51aea994..26a51aea994 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/SQScanner-test.tsx
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/SQScanner-test.tsx
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/AnalysisCommand-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/AnalysisCommand-test.tsx.snap
index 6afb09941d0..6afb09941d0 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/AnalysisCommand-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/AnalysisCommand-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/DotNet-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/DotNet-test.tsx.snap
index 19a293729fb..19a293729fb 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/DotNet-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/DotNet-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/JavaGradle-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/JavaGradle-test.tsx.snap
index 7e1208e8dce..7e1208e8dce 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/JavaGradle-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/JavaGradle-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/JavaMaven-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/JavaMaven-test.tsx.snap
index 7ee4d3becba..7ee4d3becba 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/JavaMaven-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/JavaMaven-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/MSBuildScanner-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/MSBuildScanner-test.tsx.snap
index f1d82f50660..f1d82f50660 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/MSBuildScanner-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/MSBuildScanner-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/Other-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/Other-test.tsx.snap
index 51b1479f109..51b1479f109 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/Other-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/Other-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/SQScanner-test.tsx.snap b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/SQScanner-test.tsx.snap
index 6ad4425a0a8..6ad4425a0a8 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/commands/__tests__/__snapshots__/SQScanner-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/tutorials/manual/commands/__tests__/__snapshots__/SQScanner-test.tsx.snap
diff --git a/server/sonar-web/src/main/js/apps/tutorials/utils.ts b/server/sonar-web/src/main/js/components/tutorials/utils.ts
index a1a28edc712..a1a28edc712 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/utils.ts
+++ b/server/sonar-web/src/main/js/components/tutorials/utils.ts
diff --git a/server/sonar-web/src/main/js/helpers/mocks/alm-settings.ts b/server/sonar-web/src/main/js/helpers/mocks/alm-settings.ts
index 3940ca053da..2eab0248c9d 100644
--- a/server/sonar-web/src/main/js/helpers/mocks/alm-settings.ts
+++ b/server/sonar-web/src/main/js/helpers/mocks/alm-settings.ts
@@ -36,7 +36,7 @@ export function mockAlmSettingsInstance(
};
}
-export function mockAzureDefinition(
+export function mockAzureBindingDefinition(
overrides: Partial<AzureBindingDefinition> = {}
): AzureBindingDefinition {
return {
@@ -46,7 +46,7 @@ export function mockAzureDefinition(
};
}
-export function mockBitbucketDefinition(
+export function mockBitbucketBindingDefinition(
overrides: Partial<BitbucketBindingDefinition> = {}
): BitbucketBindingDefinition {
return {
@@ -57,7 +57,7 @@ export function mockBitbucketDefinition(
};
}
-export function mockGithubDefinition(
+export function mockGithubBindingDefinition(
overrides: Partial<GithubBindingDefinition> = {}
): GithubBindingDefinition {
return {
@@ -69,7 +69,7 @@ export function mockGithubDefinition(
};
}
-export function mockGitlabDefinition(
+export function mockGitlabBindingDefinition(
overrides: Partial<GitlabBindingDefinition> = {}
): GitlabBindingDefinition {
return {
diff --git a/server/sonar-web/src/main/js/types/alm-settings.ts b/server/sonar-web/src/main/js/types/alm-settings.ts
index a25148c6fb2..1fbff623de2 100644
--- a/server/sonar-web/src/main/js/types/alm-settings.ts
+++ b/server/sonar-web/src/main/js/types/alm-settings.ts
@@ -48,35 +48,32 @@ export interface GitlabBindingDefinition extends AlmBindingDefinition {
url?: string;
}
-export interface ProjectAlmBinding {
+export interface ProjectAlmBindingResponse {
+ alm: AlmKeys;
key: string;
repository?: string;
slug?: string;
summaryCommentEnabled?: boolean;
}
-export interface AzureProjectAlmBinding {
+export interface ProjectAlmBindingParams {
almSetting: string;
project: string;
}
-export interface BitbucketProjectAlmBinding {
- almSetting: string;
- project: string;
+export interface AzureProjectAlmBindingParams extends ProjectAlmBindingParams {}
+
+export interface BitbucketProjectAlmBindingParams extends ProjectAlmBindingParams {
repository: string;
slug: string;
}
-export interface GithubProjectAlmBinding {
- almSetting: string;
- project: string;
+export interface GithubProjectAlmBindingParams extends ProjectAlmBindingParams {
repository: string;
summaryCommentEnabled: boolean;
}
-export interface GitlabProjectAlmBinding {
- almSetting: string;
- project: string;
+export interface GitlabProjectAlmBindingParams extends ProjectAlmBindingParams {
repository?: string;
}
@@ -87,8 +84,8 @@ export interface AlmSettingsInstance {
}
export interface AlmSettingsBindingDefinitions {
- azure: AzureBindingDefinition[];
- bitbucket: BitbucketBindingDefinition[];
- github: GithubBindingDefinition[];
- gitlab: GitlabBindingDefinition[];
+ [AlmKeys.Azure]: AzureBindingDefinition[];
+ [AlmKeys.Bitbucket]: BitbucketBindingDefinition[];
+ [AlmKeys.GitHub]: GithubBindingDefinition[];
+ [AlmKeys.GitLab]: GitlabBindingDefinition[];
}