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
commit 36d3f9afdb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 11 deletions

View File

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

View File

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

View File

@ -1,5 +1,5 @@
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 { SelectVariant, Select, SelectOption } from '@patternfly/react-core';
@ -28,8 +28,11 @@ function PlaybookSelect({
}
const { data } = await ProjectsAPI.readPlaybooks(projectId);
if (data.length === 1) {
onChange(data[0]);
}
return data;
}, [projectId]),
}, [projectId, onChange]),
[]
);
@ -76,9 +79,11 @@ function PlaybookSelect({
}
PlaybookSelect.propTypes = {
projectId: oneOfType([number, string]),
onChange: func,
};
PlaybookSelect.defaultProps = {
projectId: null,
onChange: () => {},
};
export { PlaybookSelect as _PlaybookSelect };

View File

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