mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 10:00:01 -03:30
Merge pull request #12184 from marshmalien/2912-prefill-playbook
Autopopulate playbook field when there is one resource
This commit is contained in:
commit
36d3f9afdb
@ -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: '',
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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 };
|
||||
|
||||
@ -24,8 +24,7 @@ describe('<PlaybookSelect />', () => {
|
||||
<PlaybookSelect
|
||||
projectId={1}
|
||||
isValid
|
||||
form={{}}
|
||||
field={{ onChange: () => {}, value: '' }}
|
||||
onChange={() => {}}
|
||||
onError={() => {}}
|
||||
/>
|
||||
);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user