Merge pull request #12184 from marshmalien/2912-prefill-playbook

Autopopulate playbook field when there is one resource
This commit is contained in:
JST
2022-05-06 17:18:18 -03:00
committed by GitHub
4 changed files with 19 additions and 11 deletions

View File

@@ -82,7 +82,7 @@ describe('<JobTemplateAdd />', () => {
CredentialTypesAPI.loadAllTypes = jest.fn(); CredentialTypesAPI.loadAllTypes = jest.fn();
CredentialTypesAPI.loadAllTypes.mockResolvedValue([]); CredentialTypesAPI.loadAllTypes.mockResolvedValue([]);
ProjectsAPI.readPlaybooks.mockResolvedValue({ ProjectsAPI.readPlaybooks.mockResolvedValue({
data: [], data: ['ping-playbook.yml'],
}); });
LabelsAPI.read.mockResolvedValue({ data: { results: [] } }); LabelsAPI.read.mockResolvedValue({ data: { results: [] } });
ProjectsAPI.readDetail.mockReturnValue({ ProjectsAPI.readDetail.mockReturnValue({
@@ -164,10 +164,6 @@ describe('<JobTemplateAdd />', () => {
id: 1, id: 1,
name: 'Foo', name: 'Foo',
}); });
wrapper.update();
wrapper.find('Select#template-playbook').prop('onToggle')();
wrapper.update();
wrapper.find('Select#template-playbook').prop('onSelect')(null, 'Baz');
}); });
wrapper.update(); wrapper.update();
act(() => { act(() => {
@@ -186,7 +182,7 @@ describe('<JobTemplateAdd />', () => {
name: 'Bar', name: 'Bar',
job_type: 'check', job_type: 'check',
project: 2, project: 2,
playbook: 'Baz', playbook: 'ping-playbook.yml',
inventory: 2, inventory: 2,
webhook_credential: undefined, webhook_credential: undefined,
webhook_service: '', webhook_service: '',

View File

@@ -187,6 +187,14 @@ function JobTemplateForm({
[setFieldValue, setFieldTouched] [setFieldValue, setFieldTouched]
); );
const handlePlaybookUpdate = useCallback(
(value) => {
setFieldValue('playbook', value);
setFieldTouched('playbook', true, false);
},
[setFieldValue, setFieldTouched]
);
useEffect(() => { useEffect(() => {
validateField('inventory'); validateField('inventory');
}, [askInventoryOnLaunchField.value, validateField]); }, [askInventoryOnLaunchField.value, validateField]);
@@ -359,7 +367,7 @@ function JobTemplateForm({
} }
> >
<PlaybookSelect <PlaybookSelect
onChange={playbookHelpers.setValue} onChange={handlePlaybookUpdate}
projectId={projectField.value?.id} projectId={projectField.value?.id}
isValid={!playbookMeta.touched || !playbookMeta.error} isValid={!playbookMeta.touched || !playbookMeta.error}
selected={playbookField.value} selected={playbookField.value}

View File

@@ -1,5 +1,5 @@
import React, { useCallback, useEffect, useState } from 'react'; import React, { useCallback, useEffect, useState } from 'react';
import { number, string, oneOfType } from 'prop-types'; import { func, number, string, oneOfType } from 'prop-types';
import { t } from '@lingui/macro'; import { t } from '@lingui/macro';
import { SelectVariant, Select, SelectOption } from '@patternfly/react-core'; import { SelectVariant, Select, SelectOption } from '@patternfly/react-core';
@@ -28,8 +28,11 @@ function PlaybookSelect({
} }
const { data } = await ProjectsAPI.readPlaybooks(projectId); const { data } = await ProjectsAPI.readPlaybooks(projectId);
if (data.length === 1) {
onChange(data[0]);
}
return data; return data;
}, [projectId]), }, [projectId, onChange]),
[] []
); );
@@ -76,9 +79,11 @@ function PlaybookSelect({
} }
PlaybookSelect.propTypes = { PlaybookSelect.propTypes = {
projectId: oneOfType([number, string]), projectId: oneOfType([number, string]),
onChange: func,
}; };
PlaybookSelect.defaultProps = { PlaybookSelect.defaultProps = {
projectId: null, projectId: null,
onChange: () => {},
}; };
export { PlaybookSelect as _PlaybookSelect }; export { PlaybookSelect as _PlaybookSelect };

View File

@@ -24,8 +24,7 @@ describe('<PlaybookSelect />', () => {
<PlaybookSelect <PlaybookSelect
projectId={1} projectId={1}
isValid isValid
form={{}} onChange={() => {}}
field={{ onChange: () => {}, value: '' }}
onError={() => {}} onError={() => {}}
/> />
); );