]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-14932 Allow admin to configure ALM directly form the projects page
authorPhilippe Perrin <philippe.perrin@sonarsource.com>
Tue, 22 Jun 2021 08:20:57 +0000 (10:20 +0200)
committersonartech <sonartech@sonarsource.com>
Mon, 28 Jun 2021 20:03:21 +0000 (20:03 +0000)
22 files changed:
server/sonar-web/src/main/js/apps/create/project/AzureProjectCreate.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketCloudProjectCreate.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketProjectCreate.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketProjectCreateRenderer.tsx
server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx
server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx
server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreate.tsx
server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreate.tsx
server/sonar-web/src/main/js/apps/create/project/ManualProjectCreate.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/AzureProjectCreate-test.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/BitbucketCloudProjectCreate-test.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/BitbucketProjectCreate-test.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/BitbucketProjectCreateRenderer-test.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/CreateProjectModeSelection-test.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/CreateProjectPage-test.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/GitHubProjectCreate-test.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/GitlabProjectCreate-test.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/ManualProjectCreate-test.tsx
server/sonar-web/src/main/js/apps/create/project/__tests__/__snapshots__/BitbucketProjectCreate-test.tsx.snap
server/sonar-web/src/main/js/apps/create/project/__tests__/__snapshots__/CreateProjectModeSelection-test.tsx.snap
server/sonar-web/src/main/js/apps/create/project/__tests__/__snapshots__/CreateProjectPage-test.tsx.snap
server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmBindingDefinitionForm.tsx

index 0bb78cd29573daaf5021aae4363c55382f6e4eb2..5df872ec83c574339ee83ba634d25a6580aba303 100644 (file)
@@ -35,7 +35,7 @@ import AzureCreateProjectRenderer from './AzureProjectCreateRenderer';
 interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
   canAdmin: boolean;
   loadingBindings: boolean;
-  onProjectCreate: (projectKeys: string[]) => void;
+  onProjectCreate: (projectKey: string) => void;
   settings: AlmSettingsInstance[];
 }
 
@@ -224,7 +224,7 @@ export default class AzureProjectCreate extends React.PureComponent<Props, State
     if (this.mounted) {
       this.setState({ importing: false });
       if (createdProject) {
-        this.props.onProjectCreate([createdProject.key]);
+        this.props.onProjectCreate(createdProject.key);
       }
     }
   };
index 0a08a013fac80c634734964cf47c37066aa8a8b2..340008673fd1f11d16e9b92b5102a83d1d00059a 100644 (file)
@@ -31,7 +31,7 @@ interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
   canAdmin: boolean;
   settings: AlmSettingsInstance[];
   loadingBindings: boolean;
-  onProjectCreate: (projectKeys: string[]) => void;
+  onProjectCreate: (projectKey: string) => void;
 }
 
 interface State {
@@ -187,7 +187,7 @@ export default class BitbucketCloudProjectCreate extends React.PureComponent<Pro
       this.setState({ importingSlug: undefined });
 
       if (result) {
-        this.props.onProjectCreate([result.project.key]);
+        this.props.onProjectCreate(result.project.key);
       }
     }
   };
index bb019e40aae48b5a87b044dcbcf09d81a16b3741..87dcff89ddd5c747e1fb824e645346c03626ee15 100644 (file)
@@ -38,7 +38,7 @@ interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
   canAdmin: boolean;
   bitbucketSettings: AlmSettingsInstance[];
   loadingBindings: boolean;
-  onProjectCreate: (projectKeys: string[]) => void;
+  onProjectCreate: (projectKey: string) => void;
 }
 
 interface State {
@@ -196,7 +196,7 @@ export default class BitbucketProjectCreate extends React.PureComponent<Props, S
       .then(({ project: { key } }) => {
         if (this.mounted) {
           this.setState({ importing: false });
-          this.props.onProjectCreate([key]);
+          this.props.onProjectCreate(key);
         }
       })
       .catch(() => {
@@ -258,7 +258,6 @@ export default class BitbucketProjectCreate extends React.PureComponent<Props, S
         loading={loading || loadingBindings}
         onImportRepository={this.handleImportRepository}
         onPersonalAccessTokenCreated={this.handlePersonalAccessTokenCreated}
-        onProjectCreate={this.props.onProjectCreate}
         onSearch={this.handleSearch}
         onSelectRepository={this.handleSelectRepository}
         projectRepositories={projectRepositories}
index 7b832f45b78218792d792134280136cb6822e1d8..50694a2b665219b3b81b7a00dc1684878ca473bd 100644 (file)
@@ -42,7 +42,6 @@ export interface BitbucketProjectCreateRendererProps {
   onSearch: (query: string) => void;
   onSelectRepository: (repo: BitbucketRepository) => void;
   onPersonalAccessTokenCreated: () => void;
-  onProjectCreate: (projectKeys: string[]) => void;
   projects?: BitbucketProject[];
   projectRepositories?: BitbucketProjectRepositories;
   resetPat: boolean;
index 0fa039eb0037bd5ae4481ffe0253121fe7a6f6a3..980c1c677ebd99e22190ca6028eedff139a3c32e 100644 (file)
@@ -34,6 +34,7 @@ export interface CreateProjectModeSelectionProps {
   appState: Pick<T.AppState, 'canAdmin'>;
   loadingBindings: boolean;
   onSelectMode: (mode: CreateProjectModes) => void;
+  onConfigMode: (mode: AlmKeys) => void;
 }
 
 const DEFAULT_ICON_SIZE = 80;
@@ -50,16 +51,30 @@ function renderAlmOption(
     loadingBindings
   } = props;
 
-  const hasBitbucketCloud = almCounts[AlmKeys.BitbucketCloud] > 0;
-  const isBitbucket = alm === AlmKeys.BitbucketServer;
+  const hasBitbucketCloudConf = almCounts[AlmKeys.BitbucketCloud] > 0;
+  const isBitbucketOption = alm === AlmKeys.BitbucketServer;
 
-  const count = isBitbucket
+  const count = isBitbucketOption
     ? almCounts[AlmKeys.BitbucketServer] + almCounts[AlmKeys.BitbucketCloud]
     : almCounts[alm];
   const hasConfig = count > 0;
   const hasTooManyConfig = count > 1;
   const disabled = loadingBindings || hasTooManyConfig || (!hasConfig && !canAdmin);
 
+  const onClick = () => {
+    if (hasTooManyConfig || (!hasConfig && !canAdmin)) {
+      return null;
+    }
+
+    if (!hasConfig && canAdmin) {
+      return props.onConfigMode(alm);
+    }
+
+    return props.onSelectMode(
+      isBitbucketOption && hasBitbucketCloudConf ? CreateProjectModes.BitbucketCloud : mode
+    );
+  };
+
   return (
     <div className="display-flex-column">
       <button
@@ -68,11 +83,7 @@ function renderAlmOption(
           { disabled, 'big-spacer-right': !last }
         )}
         disabled={disabled}
-        onClick={() =>
-          props.onSelectMode(
-            isBitbucket && hasBitbucketCloud ? CreateProjectModes.BitbucketCloud : mode
-          )
-        }
+        onClick={onClick}
         type="button">
         <img
           alt="" // Should be ignored by screen readers
index ee9704aad803fe7345e1a987cbac626b5f98d7ec..b4c8c35affbf312cb0bf79e5e36102f7946070aa 100644 (file)
@@ -27,6 +27,7 @@ import { whenLoggedIn } from '../../../components/hoc/whenLoggedIn';
 import { withAppState } from '../../../components/hoc/withAppState';
 import { getProjectUrl } from '../../../helpers/urls';
 import { AlmKeys, AlmSettingsInstance } from '../../../types/alm-settings';
+import AlmBindingDefinitionForm from '../../settings/components/almIntegration/AlmBindingDefinitionForm';
 import AzureProjectCreate from './AzureProjectCreate';
 import BitbucketCloudProjectCreate from './BitbucketCloudProjectCreate';
 import BitbucketProjectCreate from './BitbucketProjectCreate';
@@ -49,8 +50,17 @@ interface State {
   githubSettings: AlmSettingsInstance[];
   gitlabSettings: AlmSettingsInstance[];
   loading: boolean;
+  creatingAlmDefinition?: AlmKeys;
 }
 
+const PROJECT_MODE_FOR_ALM_KEY = {
+  [AlmKeys.Azure]: CreateProjectModes.AzureDevOps,
+  [AlmKeys.BitbucketCloud]: CreateProjectModes.BitbucketCloud,
+  [AlmKeys.BitbucketServer]: CreateProjectModes.BitbucketServer,
+  [AlmKeys.GitHub]: CreateProjectModes.GitHub,
+  [AlmKeys.GitLab]: CreateProjectModes.GitLab
+};
+
 export class CreateProjectPage extends React.PureComponent<Props, State> {
   mounted = false;
   state: State = {
@@ -73,7 +83,7 @@ export class CreateProjectPage extends React.PureComponent<Props, State> {
 
   fetchAlmBindings = () => {
     this.setState({ loading: true });
-    getAlmSettings()
+    return getAlmSettings()
       .then(almSettings => {
         if (this.mounted) {
           this.setState({
@@ -101,13 +111,37 @@ export class CreateProjectPage extends React.PureComponent<Props, State> {
     });
   };
 
-  handleProjectCreate = (projectKeys: string[]) => {
-    if (projectKeys.length === 1) {
-      this.props.router.push(getProjectUrl(projectKeys[0]));
+  handleModeConfig = (alm: AlmKeys) => {
+    this.setState({ creatingAlmDefinition: alm });
+  };
+
+  handleProjectCreate = (projectKey: string) => {
+    this.props.router.push(getProjectUrl(projectKey));
+  };
+
+  handleOnCancelCreation = () => {
+    this.setState({ creatingAlmDefinition: undefined });
+  };
+
+  handleAfterSubmit = async () => {
+    let { creatingAlmDefinition: createdAlmDefinition } = this.state;
+
+    this.setState({ creatingAlmDefinition: undefined });
+
+    await this.fetchAlmBindings();
+
+    if (this.mounted && createdAlmDefinition) {
+      const { bitbucketCloudSettings } = this.state;
+
+      if (createdAlmDefinition === AlmKeys.BitbucketServer && bitbucketCloudSettings.length > 0) {
+        createdAlmDefinition = AlmKeys.BitbucketCloud;
+      }
+
+      this.handleModeSelect(PROJECT_MODE_FOR_ALM_KEY[createdAlmDefinition]);
     }
   };
 
-  renderForm(mode?: CreateProjectModes) {
+  renderProjectCreation(mode?: CreateProjectModes) {
     const {
       appState: { canAdmin },
       location,
@@ -199,6 +233,7 @@ export class CreateProjectPage extends React.PureComponent<Props, State> {
             almCounts={almCounts}
             loadingBindings={loading}
             onSelectMode={this.handleModeSelect}
+            onConfigMode={this.handleModeConfig}
           />
         );
       }
@@ -207,6 +242,7 @@ export class CreateProjectPage extends React.PureComponent<Props, State> {
 
   render() {
     const { location } = this.props;
+    const { creatingAlmDefinition } = this.state;
     const mode: CreateProjectModes | undefined = location.query?.mode;
 
     return (
@@ -214,7 +250,15 @@ export class CreateProjectPage extends React.PureComponent<Props, State> {
         <Helmet title={translate('onboarding.create_project.select_method')} titleTemplate="%s" />
         <A11ySkipTarget anchor="create_project_main" />
         <div className="page page-limited huge-spacer-bottom position-relative" id="create-project">
-          {this.renderForm(mode)}
+          {this.renderProjectCreation(mode)}
+          {creatingAlmDefinition && (
+            <AlmBindingDefinitionForm
+              alm={creatingAlmDefinition}
+              alreadyHaveInstanceConfigured={false}
+              onCancel={this.handleOnCancelCreation}
+              afterSubmit={this.handleAfterSubmit}
+            />
+          )}
         </div>
       </>
     );
index 16f5507d8e341bc80c105ece70889a69a1c26e20..ece5a41f4ce99bd7a8495a12549a022ff6a3b151 100644 (file)
@@ -34,7 +34,7 @@ import GitHubProjectCreateRenderer from './GitHubProjectCreateRenderer';
 interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
   canAdmin: boolean;
   loadingBindings: boolean;
-  onProjectCreate: (projectKeys: string[]) => void;
+  onProjectCreate: (projectKey: string) => void;
   settings: AlmSettingsInstance[];
 }
 
@@ -252,7 +252,7 @@ export default class GitHubProjectCreate extends React.Component<Props, State> {
           selectedRepository.key
         );
 
-        this.props.onProjectCreate([project.key]);
+        this.props.onProjectCreate(project.key);
       } finally {
         if (this.mounted) {
           this.setState({ importing: false });
index a52bd7a2d54f9197d8feb2b1873635b1b33fee0e..f84bd1a47f0ddac7b51c27a5d96577c6e57737fd 100644 (file)
@@ -27,7 +27,7 @@ import GitlabProjectCreateRenderer from './GitlabProjectCreateRenderer';
 interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
   canAdmin: boolean;
   loadingBindings: boolean;
-  onProjectCreate: (projectKeys: string[]) => void;
+  onProjectCreate: (projectKey: string) => void;
   settings: AlmSettingsInstance[];
 }
 
@@ -155,7 +155,7 @@ export default class GitlabProjectCreate extends React.PureComponent<Props, Stat
       this.setState({ importingGitlabProjectId: undefined });
 
       if (result) {
-        this.props.onProjectCreate([result.project.key]);
+        this.props.onProjectCreate(result.project.key);
       }
     }
   };
index 858d4464fa064974cd6ecead34706d98f24da556..3060f35c367d3bd8d1fa70dea99425fa721dd7a4 100644 (file)
@@ -34,7 +34,7 @@ import CreateProjectPageHeader from './CreateProjectPageHeader';
 import './ManualProjectCreate.css';
 
 interface Props {
-  onProjectCreate: (projectKeys: string[]) => void;
+  onProjectCreate: (projectKey: string) => void;
 }
 
 interface State {
@@ -115,7 +115,7 @@ export default class ManualProjectCreate extends React.PureComponent<Props, Stat
         project: state.projectKey,
         name: (state.projectName || state.projectKey).trim()
       }).then(
-        ({ project }) => this.props.onProjectCreate([project.key]),
+        ({ project }) => this.props.onProjectCreate(project.key),
         () => {
           if (this.mounted) {
             this.setState({ submitting: false });
index bb4ddc7d40953924b07884bb2b1bea97a784d309..b9ac65d6d0219fd368325b91f45a0f915f3260e7 100644 (file)
@@ -188,7 +188,7 @@ it('should select and import a repository', async () => {
   expect(importAzureRepository).toBeCalledWith('foo', repository.projectName, repository.name);
   await waitAndUpdate(wrapper);
 
-  expect(onProjectCreate).toBeCalledWith(['baz']);
+  expect(onProjectCreate).toBeCalledWith('baz');
   expect(wrapper.state().importing).toBe(false);
 });
 
index 4fd5d850b085914879075845a14bd270aef7f881..aac602992b772b7314a5a0317468d8af34204e7b 100644 (file)
@@ -148,7 +148,7 @@ it('Should import repository', async () => {
   });
   await wrapper.instance().handleImport('slug-test');
   expect(importBitbucketCloudRepository).toHaveBeenCalledWith('key', 'slug-test');
-  expect(onProjectCreate).toHaveBeenCalledWith(['project-key']);
+  expect(onProjectCreate).toHaveBeenCalledWith('project-key');
 });
 
 it('Should behave correctly when import fail', async () => {
index 3abe3432dca8d1fb12516ec777e79f7efd7907d2..b9ea23c639d44224aaa4c5869feaea0ec1843cc9 100644 (file)
@@ -108,7 +108,7 @@ it('should correctly import a repo', async () => {
   instance.handleImportRepository();
   expect(importBitbucketServerProject).toBeCalledWith('foo', repo.projectKey, repo.slug);
   await waitAndUpdate(wrapper);
-  expect(onProjectCreate).toBeCalledWith(['baz']);
+  expect(onProjectCreate).toBeCalledWith('baz');
 });
 
 it('should correctly handle search', async () => {
index 5d523fe67055c2c913af007535e5ce0dd573ea27..3168e1ec6f32d6bc818b9df2f1bd0daf841118a7 100644 (file)
@@ -53,7 +53,6 @@ function shallowRender(props: Partial<BitbucketProjectCreateRendererProps> = {})
       loading={false}
       onImportRepository={jest.fn()}
       onPersonalAccessTokenCreated={jest.fn()}
-      onProjectCreate={jest.fn()}
       onSearch={jest.fn()}
       onSelectRepository={jest.fn()}
       projectRepositories={{ foo: { allShown: true, repositories: [mockBitbucketRepository()] } }}
index 509bb889374de64c66541ab594aefb5e1c9f2e67..b0633d92c749531bbb315a11c7bd587ca95b2e37 100644 (file)
@@ -46,7 +46,16 @@ it('should render correctly', () => {
     )
   ).toMatchSnapshot('invalid configs, admin');
   expect(
-    shallowRender({ appState: { canAdmin: true } }, { [AlmKeys.BitbucketServer]: 0 })
+    shallowRender(
+      { appState: { canAdmin: true } },
+      {
+        [AlmKeys.Azure]: 0,
+        [AlmKeys.BitbucketCloud]: 0,
+        [AlmKeys.BitbucketServer]: 0,
+        [AlmKeys.GitHub]: 0,
+        [AlmKeys.GitLab]: 0
+      }
+    )
   ).toMatchSnapshot('no alm conf yet, admin');
 });
 
@@ -76,23 +85,60 @@ it('should correctly pass the selected mode up', () => {
   expect(onSelectMode).toBeCalledWith(CreateProjectModes.GitLab);
   onSelectMode.mockClear();
 
-  wrapper = shallowRender({ onSelectMode }, { [AlmKeys.BitbucketCloud]: 1 });
+  wrapper = shallowRender(
+    { onSelectMode },
+    { [AlmKeys.BitbucketCloud]: 1, [AlmKeys.BitbucketServer]: 0 }
+  );
 
   click(wrapper.find(almButton).at(1));
   expect(onSelectMode).toBeCalledWith(CreateProjectModes.BitbucketCloud);
   onSelectMode.mockClear();
 });
 
+it('should call the proper click handler', () => {
+  const almButton = 'button.create-project-mode-type-alm';
+
+  const onSelectMode = jest.fn();
+  const onConfigMode = jest.fn();
+
+  let wrapper = shallowRender({ onSelectMode, onConfigMode }, { [AlmKeys.Azure]: 2 });
+
+  click(wrapper.find(almButton).at(0));
+  expect(onConfigMode).not.toHaveBeenCalled();
+  expect(onSelectMode).not.toHaveBeenCalled();
+  onConfigMode.mockClear();
+  onSelectMode.mockClear();
+
+  wrapper = shallowRender({ onSelectMode, onConfigMode });
+
+  click(wrapper.find(almButton).at(0));
+  expect(onConfigMode).not.toHaveBeenCalled();
+  expect(onSelectMode).toHaveBeenCalledWith(CreateProjectModes.AzureDevOps);
+  onConfigMode.mockClear();
+  onSelectMode.mockClear();
+
+  wrapper = shallowRender(
+    { onSelectMode, onConfigMode, appState: { canAdmin: true } },
+    { [AlmKeys.Azure]: 0 }
+  );
+
+  click(wrapper.find(almButton).at(0));
+  expect(onConfigMode).toHaveBeenCalledWith(CreateProjectModes.AzureDevOps);
+  expect(onSelectMode).not.toHaveBeenCalled();
+  onConfigMode.mockClear();
+  onSelectMode.mockClear();
+});
+
 function shallowRender(
   props: Partial<CreateProjectModeSelectionProps> = {},
   almCountOverrides = {}
 ) {
   const almCounts = {
-    [AlmKeys.Azure]: 0,
+    [AlmKeys.Azure]: 1,
     [AlmKeys.BitbucketCloud]: 0,
     [AlmKeys.BitbucketServer]: 1,
-    [AlmKeys.GitHub]: 0,
-    [AlmKeys.GitLab]: 0,
+    [AlmKeys.GitHub]: 1,
+    [AlmKeys.GitLab]: 1,
     ...almCountOverrides
   };
   return shallow<CreateProjectModeSelectionProps>(
@@ -101,6 +147,7 @@ function shallowRender(
       appState={{ canAdmin: false }}
       loadingBindings={false}
       onSelectMode={jest.fn()}
+      onConfigMode={jest.fn()}
       {...props}
     />
   );
index dd9682364f3941765a1af5cad39e56e39ae7c5c4..da7ede592d48d76af34eec8a0f5d8a3470bcbf31 100644 (file)
@@ -74,6 +74,27 @@ it('should render correctly if the GitLab method is selected', () => {
   expect(wrapper).toMatchSnapshot();
 });
 
+it('should submit alm configuration creation properly for BBC', async () => {
+  const push = jest.fn();
+  const wrapper = shallowRender({ router: mockRouter({ push }) });
+
+  wrapper
+    .find(CreateProjectModeSelection)
+    .props()
+    .onConfigMode(AlmKeys.BitbucketServer);
+  expect(wrapper.state().creatingAlmDefinition).toBe(AlmKeys.BitbucketServer);
+
+  (getAlmSettings as jest.Mock).mockResolvedValueOnce([{ alm: AlmKeys.BitbucketCloud }]);
+  wrapper
+    .find(AlmBindingDefinitionForm)
+    .props()
+    .afterSubmit({ key: 'test-key' });
+  await waitAndUpdate(wrapper);
+  expect(wrapper.state().creatingAlmDefinition).toBeUndefined();
+  expect(getAlmSettings).toHaveBeenCalled();
+  expect(push).toHaveBeenCalledWith({ pathname: '/path', query: { mode: AlmKeys.BitbucketCloud } });
+});
+
 function shallowRender(props: Partial<CreateProjectPage['props']> = {}) {
   return shallow<CreateProjectPage>(
     <CreateProjectPage
index 47d789179dd3b65a628c272aefc3b275401fe87d..c5c5c97dfff81ef86ceb35b969722dd82483dd56 100644 (file)
@@ -228,7 +228,7 @@ it('should handle importing', async () => {
     selectedOrganization.key,
     selectedRepository.key
   );
-  expect(onProjectCreate).toBeCalledWith([project.key]);
+  expect(onProjectCreate).toBeCalledWith(project.key);
 });
 
 function shallowRender(props: Partial<GitHubProjectCreate['props']> = {}) {
index 1f677f1bef77cf580bd63932025fd9de570ad65f..60474b4695cfc686174717e677f995212e533aa0 100644 (file)
@@ -150,7 +150,7 @@ it('should import', async () => {
   await waitAndUpdate(wrapper);
 
   expect(wrapper.state().importingGitlabProjectId).toBeUndefined();
-  expect(onProjectCreate).toBeCalledWith([createdProjectkey]);
+  expect(onProjectCreate).toBeCalledWith(createdProjectkey);
 });
 
 it('should do nothing with missing settings', async () => {
index 10199afaa914bac68b756b77df574a3092e539f9..5486c6c62ae491b0cbc74daa605f0c10d661f140 100644 (file)
@@ -71,7 +71,7 @@ it('should correctly create a project', async () => {
   });
 
   await waitAndUpdate(wrapper);
-  expect(onProjectCreate).toBeCalledWith(['bar']);
+  expect(onProjectCreate).toBeCalledWith('bar');
 });
 
 it('should not display any status when the name is not defined', () => {
index 4b190649475986ced28dbe5b057a79c77442a884..c06e0b818bf822ac03f97c8cf3db4ab32dd8b616 100644 (file)
@@ -13,7 +13,6 @@ exports[`should render correctly 1`] = `
   loading={false}
   onImportRepository={[Function]}
   onPersonalAccessTokenCreated={[Function]}
-  onProjectCreate={[MockFunction]}
   onSearch={[Function]}
   onSelectRepository={[Function]}
   resetPat={false}
@@ -35,7 +34,6 @@ exports[`should render correctly: No repository 1`] = `
   loading={false}
   onImportRepository={[Function]}
   onPersonalAccessTokenCreated={[Function]}
-  onProjectCreate={[MockFunction]}
   onSearch={[Function]}
   onSelectRepository={[Function]}
   projects={
@@ -65,7 +63,6 @@ exports[`should render correctly: No setting 1`] = `
   loading={false}
   onImportRepository={[Function]}
   onPersonalAccessTokenCreated={[Function]}
-  onProjectCreate={[MockFunction]}
   onSearch={[Function]}
   onSelectRepository={[Function]}
   resetPat={false}
index 8dcb5b9669689639dbb71bda0a8ecc8d6360520f..e7a39f01fcdb8412ff1d48b0e87b530b3fada84c 100644 (file)
@@ -52,8 +52,8 @@ exports[`should render correctly: default 1`] = `
           className="display-flex-column"
         >
           <button
-            className="button button-huge display-flex-column create-project-mode-type-alm disabled big-spacer-right"
-            disabled={true}
+            className="button button-huge display-flex-column create-project-mode-type-alm big-spacer-right"
+            disabled={false}
             onClick={[Function]}
             type="button"
           >
@@ -67,16 +67,6 @@ exports[`should render correctly: default 1`] = `
             >
               onboarding.create_project.select_method.azure
             </div>
-            <p
-              className="text-muted small spacer-top"
-              style={
-                Object {
-                  "lineHeight": 1.5,
-                }
-              }
-            >
-              onboarding.create_project.alm_not_configured
-            </p>
           </button>
         </div>
         <div
@@ -104,8 +94,8 @@ exports[`should render correctly: default 1`] = `
           className="display-flex-column"
         >
           <button
-            className="button button-huge display-flex-column create-project-mode-type-alm disabled big-spacer-right"
-            disabled={true}
+            className="button button-huge display-flex-column create-project-mode-type-alm big-spacer-right"
+            disabled={false}
             onClick={[Function]}
             type="button"
           >
@@ -119,24 +109,14 @@ exports[`should render correctly: default 1`] = `
             >
               onboarding.create_project.select_method.github
             </div>
-            <p
-              className="text-muted small spacer-top"
-              style={
-                Object {
-                  "lineHeight": 1.5,
-                }
-              }
-            >
-              onboarding.create_project.alm_not_configured
-            </p>
           </button>
         </div>
         <div
           className="display-flex-column"
         >
           <button
-            className="button button-huge display-flex-column create-project-mode-type-alm disabled"
-            disabled={true}
+            className="button button-huge display-flex-column create-project-mode-type-alm"
+            disabled={false}
             onClick={[Function]}
             type="button"
           >
@@ -150,16 +130,6 @@ exports[`should render correctly: default 1`] = `
             >
               onboarding.create_project.select_method.gitlab
             </div>
-            <p
-              className="text-muted small spacer-top"
-              style={
-                Object {
-                  "lineHeight": 1.5,
-                }
-              }
-            >
-              onboarding.create_project.alm_not_configured
-            </p>
           </button>
         </div>
       </div>
@@ -516,8 +486,8 @@ exports[`should render correctly: invalid configs, not admin 1`] = `
           className="display-flex-column"
         >
           <button
-            className="button button-huge display-flex-column create-project-mode-type-alm disabled big-spacer-right"
-            disabled={true}
+            className="button button-huge display-flex-column create-project-mode-type-alm big-spacer-right"
+            disabled={false}
             onClick={[Function]}
             type="button"
           >
@@ -531,16 +501,6 @@ exports[`should render correctly: invalid configs, not admin 1`] = `
             >
               onboarding.create_project.select_method.azure
             </div>
-            <p
-              className="text-muted small spacer-top"
-              style={
-                Object {
-                  "lineHeight": 1.5,
-                }
-              }
-            >
-              onboarding.create_project.alm_not_configured
-            </p>
           </button>
         </div>
         <div
@@ -609,8 +569,8 @@ exports[`should render correctly: invalid configs, not admin 1`] = `
           className="display-flex-column"
         >
           <button
-            className="button button-huge display-flex-column create-project-mode-type-alm disabled"
-            disabled={true}
+            className="button button-huge display-flex-column create-project-mode-type-alm"
+            disabled={false}
             onClick={[Function]}
             type="button"
           >
@@ -624,16 +584,6 @@ exports[`should render correctly: invalid configs, not admin 1`] = `
             >
               onboarding.create_project.select_method.gitlab
             </div>
-            <p
-              className="text-muted small spacer-top"
-              style={
-                Object {
-                  "lineHeight": 1.5,
-                }
-              }
-            >
-              onboarding.create_project.alm_not_configured
-            </p>
           </button>
         </div>
       </div>
index 6b0d29262e612897083abd715b060597f59e6f2a..58fa5abb10ec6f565c2117815c2f13faedb28583 100644 (file)
@@ -26,6 +26,7 @@ exports[`should render correctly 1`] = `
         }
       }
       loadingBindings={true}
+      onConfigMode={[Function]}
       onSelectMode={[Function]}
     />
   </div>
index 4d8a17c2d17d67b0cd01c4e71c3f5c6fce9c2353..739089ab2fd91faa3c026b9b567ab4823ae20139 100644 (file)
@@ -43,17 +43,10 @@ import {
 } from '../../../../types/alm-settings';
 import AlmBindingDefinitionFormRenderer from './AlmBindingDefinitionFormRenderer';
 
-export interface AlmBindingDefinitionFormChildrenProps {
-  formData: AlmBindingDefinition;
-  onFieldChange: (fieldId: string, value: string) => void;
-}
-
 interface Props {
   alm: AlmKeys;
   bindingDefinition?: AlmBindingDefinition;
   alreadyHaveInstanceConfigured: boolean;
-  onDelete?: (definitionKey: string) => void;
-  onEdit?: (definitionKey: string) => void;
   onCancel?: () => void;
   afterSubmit?: (data: AlmBindingDefinitionBase) => void;
 }