diff --git a/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.jsx b/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.jsx
index f935425082..08d8b9fdb1 100644
--- a/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.jsx
+++ b/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.jsx
@@ -61,6 +61,15 @@ function ScheduleAdd({
);
let extraVars;
const surveyValues = getSurveyValues(values);
+
+ if (
+ !Object.values(surveyValues).length &&
+ surveyConfiguration?.spec?.length
+ ) {
+ surveyConfiguration.spec.forEach(q => {
+ surveyValues[q.variable] = q.default;
+ });
+ }
const initialExtraVars =
launchConfiguration?.ask_variables_on_launch &&
(values.extra_vars || '---');
@@ -86,7 +95,9 @@ function ScheduleAdd({
if (requestData.extra_data) {
requestData.extra_data.days = values.daysToKeep;
} else {
- requestData.extra_data = JSON.stringify({ days: values.daysToKeep });
+ requestData.extra_data = JSON.stringify({
+ days: values.daysToKeep,
+ });
}
}
diff --git a/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.test.jsx b/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.test.jsx
index 02b86f55c7..a84a50a466 100644
--- a/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.test.jsx
+++ b/awx/ui_next/src/components/Schedule/ScheduleAdd/ScheduleAdd.test.jsx
@@ -403,4 +403,68 @@ describe('', () => {
expect(SchedulesAPI.associateCredential).toBeCalledWith(3, 10);
expect(SchedulesAPI.associateCredential).toBeCalledWith(3, 20);
});
+
+ test('should submit survey with default values properly, without opening prompt wizard', async () => {
+ let scheduleSurveyWrapper;
+ await act(async () => {
+ scheduleSurveyWrapper = mountWithContexts(
+
+ );
+ });
+ await act(async () => {
+ scheduleSurveyWrapper.find('Formik').invoke('onSubmit')({
+ description: 'test description',
+ end: 'never',
+ frequency: 'none',
+ interval: 1,
+ name: 'Run once schedule',
+ startDateTime: '2020-03-25T10:00:00',
+ timezone: 'America/New_York',
+ });
+ });
+ expect(JobTemplatesAPI.createSchedule).toHaveBeenCalledWith(700, {
+ description: 'test description',
+ name: 'Run once schedule',
+ extra_data: { mc: 'first', text: 'text variable' },
+ rrule:
+ 'DTSTART;TZID=America/New_York:20200325T100000 RRULE:INTERVAL=1;COUNT=1;FREQ=MINUTELY',
+ });
+ });
});
diff --git a/awx/ui_next/src/components/Schedule/ScheduleDetail/ScheduleDetail.jsx b/awx/ui_next/src/components/Schedule/ScheduleDetail/ScheduleDetail.jsx
index 69d2a933f7..f5a2844b0f 100644
--- a/awx/ui_next/src/components/Schedule/ScheduleDetail/ScheduleDetail.jsx
+++ b/awx/ui_next/src/components/Schedule/ScheduleDetail/ScheduleDetail.jsx
@@ -26,7 +26,7 @@ import DeleteButton from '../../DeleteButton';
import ErrorDetail from '../../ErrorDetail';
import ChipGroup from '../../ChipGroup';
import { VariablesDetail } from '../../CodeEditor';
-import { parseVariableField } from '../../../util/yaml';
+import { parseVariableField, jsonToYaml } from '../../../util/yaml';
const PromptDivider = styled(Divider)`
margin-top: var(--pf-global--spacer--lg);
@@ -366,7 +366,7 @@ function ScheduleDetail({ hasDaysToKeepField, schedule, surveyConfig }) {
)}
{showVariablesDetail && (
diff --git a/awx/ui_next/src/components/Schedule/ScheduleEdit/ScheduleEdit.jsx b/awx/ui_next/src/components/Schedule/ScheduleEdit/ScheduleEdit.jsx
index 477af4a483..db69b5734f 100644
--- a/awx/ui_next/src/components/Schedule/ScheduleEdit/ScheduleEdit.jsx
+++ b/awx/ui_next/src/components/Schedule/ScheduleEdit/ScheduleEdit.jsx
@@ -61,6 +61,16 @@ function ScheduleEdit({
let extraVars;
const surveyValues = getSurveyValues(values);
+
+ if (
+ !Object.values(surveyValues).length &&
+ surveyConfiguration?.spec?.length
+ ) {
+ surveyConfiguration.spec.forEach(q => {
+ surveyValues[q.variable] = q.default;
+ });
+ }
+
const initialExtraVars =
launchConfiguration?.ask_variables_on_launch &&
(values.extra_vars || '---');
@@ -91,7 +101,9 @@ function ScheduleEdit({
if (Object.keys(values).includes('daysToKeep')) {
if (!requestData.extra_data) {
- requestData.extra_data = JSON.stringify({ days: values.daysToKeep });
+ requestData.extra_data = JSON.stringify({
+ days: values.daysToKeep,
+ });
} else {
requestData.extra_data.days = values.daysToKeep;
}
diff --git a/awx/ui_next/src/components/Schedule/ScheduleEdit/ScheduleEdit.test.jsx b/awx/ui_next/src/components/Schedule/ScheduleEdit/ScheduleEdit.test.jsx
index 02a73db2be..4e050cb372 100644
--- a/awx/ui_next/src/components/Schedule/ScheduleEdit/ScheduleEdit.test.jsx
+++ b/awx/ui_next/src/components/Schedule/ScheduleEdit/ScheduleEdit.test.jsx
@@ -633,4 +633,109 @@ describe('', () => {
'DTSTART;TZID=America/New_York:20200402T144500 RRULE:INTERVAL=1;COUNT=1;FREQ=MINUTELY',
});
});
+ test('should submit survey with default values properly, without opening prompt wizard', async () => {
+ let scheduleSurveyWrapper;
+ await act(async () => {
+ scheduleSurveyWrapper = mountWithContexts(
+
+ );
+ });
+ await act(async () => {
+ scheduleSurveyWrapper.find('Formik').invoke('onSubmit')({
+ description: 'test description',
+ end: 'never',
+ frequency: 'none',
+ interval: 1,
+ name: 'Run once schedule',
+ startDateTime: '2020-03-25T10:00:00',
+ timezone: 'America/New_York',
+ });
+ });
+ expect(SchedulesAPI.update).toHaveBeenCalledWith(27, {
+ description: 'test description',
+ name: 'Run once schedule',
+ extra_data: { mc: 'first', text: 'text variable' },
+ rrule:
+ 'DTSTART;TZID=America/New_York:20200325T100000 RRULE:INTERVAL=1;COUNT=1;FREQ=MINUTELY',
+ });
+ });
});