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', + }); + }); });