diff --git a/awx/ui/src/screens/Template/Survey/SurveyQuestionAdd.js b/awx/ui/src/screens/Template/Survey/SurveyQuestionAdd.js
index 5e5e594514..753439b3de 100644
--- a/awx/ui/src/screens/Template/Survey/SurveyQuestionAdd.js
+++ b/awx/ui/src/screens/Template/Survey/SurveyQuestionAdd.js
@@ -27,9 +27,6 @@ export default function SurveyQuestionAdd({ survey, updateSurvey }) {
let defaultAnswers = '';
formData.formattedChoices.forEach(({ choice, isDefault }, i) => {
choices.push(choice);
- // i === formData.formattedChoices.length - 1
- // ? choices.concat(`${choice}`)
- // : choices.concat(`${choice}\n`);
if (isDefault) {
defaultAnswers =
i === formData.formattedChoices.length - 1
diff --git a/awx/ui/src/screens/Template/Survey/SurveyQuestionEdit.test.js b/awx/ui/src/screens/Template/Survey/SurveyQuestionEdit.test.js
index ab7ea59d55..11d6db38c7 100644
--- a/awx/ui/src/screens/Template/Survey/SurveyQuestionEdit.test.js
+++ b/awx/ui/src/screens/Template/Survey/SurveyQuestionEdit.test.js
@@ -41,18 +41,16 @@ describe('', () => {
],
});
updateSurvey = jest.fn();
- act(() => {
- wrapper = mountWithContexts(
-
-
-
-
- ,
- {
- context: { router: { history } },
- }
- );
- });
+ wrapper = mountWithContexts(
+
+
+
+
+ ,
+ {
+ context: { router: { history } },
+ }
+ );
});
test('should render form', () => {
@@ -147,4 +145,164 @@ describe('', () => {
);
});
});
+
+ test('should handle multiplechoice as array', () => {
+ const survey = {
+ spec: [
+ {
+ question_name: 'What is the foo?',
+ question_description: 'more about the foo',
+ variable: 'foo',
+ required: true,
+ type: 'multiplechoice',
+ choices: ['one', 'two', 'three'],
+ default: '',
+ min: 0,
+ max: 1024,
+ },
+ ],
+ };
+ history = createMemoryHistory({
+ initialEntries: [
+ '/templates/job_templates/1/survey/edit?question_variable=foo',
+ ],
+ });
+ updateSurvey = jest.fn();
+ wrapper = mountWithContexts(
+
+
+
+
+ ,
+ {
+ context: { router: { history } },
+ }
+ );
+
+ const inputs = wrapper.find('MultipleChoiceField TextInput');
+ expect(inputs).toHaveLength(3);
+ expect(inputs.at(0).prop('value')).toEqual('one');
+ expect(inputs.at(1).prop('value')).toEqual('two');
+ expect(inputs.at(2).prop('value')).toEqual('three');
+ });
+
+ test('should handle multiplechoice as string', () => {
+ const survey = {
+ spec: [
+ {
+ question_name: 'What is the foo?',
+ question_description: 'more about the foo',
+ variable: 'foo',
+ required: true,
+ type: 'multiplechoice',
+ choices: 'one\ntwo\nthree',
+ default: '',
+ min: 0,
+ max: 1024,
+ },
+ ],
+ };
+ history = createMemoryHistory({
+ initialEntries: [
+ '/templates/job_templates/1/survey/edit?question_variable=foo',
+ ],
+ });
+ updateSurvey = jest.fn();
+ wrapper = mountWithContexts(
+
+
+
+
+ ,
+ {
+ context: { router: { history } },
+ }
+ );
+
+ const inputs = wrapper.find('MultipleChoiceField TextInput');
+ expect(inputs).toHaveLength(3);
+ expect(inputs.at(0).prop('value')).toEqual('one');
+ expect(inputs.at(1).prop('value')).toEqual('two');
+ expect(inputs.at(2).prop('value')).toEqual('three');
+ });
+
+ test('should handle multiselect as array', () => {
+ const survey = {
+ spec: [
+ {
+ question_name: 'What is the foo?',
+ question_description: 'more about the foo',
+ variable: 'foo',
+ required: true,
+ type: 'multiselect',
+ choices: ['one', 'two', 'three'],
+ default: '',
+ min: 0,
+ max: 1024,
+ },
+ ],
+ };
+ history = createMemoryHistory({
+ initialEntries: [
+ '/templates/job_templates/1/survey/edit?question_variable=foo',
+ ],
+ });
+ updateSurvey = jest.fn();
+ wrapper = mountWithContexts(
+
+
+
+
+ ,
+ {
+ context: { router: { history } },
+ }
+ );
+
+ const inputs = wrapper.find('MultipleChoiceField TextInput');
+ expect(inputs).toHaveLength(3);
+ expect(inputs.at(0).prop('value')).toEqual('one');
+ expect(inputs.at(1).prop('value')).toEqual('two');
+ expect(inputs.at(2).prop('value')).toEqual('three');
+ });
+
+ test('should handle multiselect as string', () => {
+ const survey = {
+ spec: [
+ {
+ question_name: 'What is the foo?',
+ question_description: 'more about the foo',
+ variable: 'foo',
+ required: true,
+ type: 'multiselect',
+ choices: 'one\ntwo\nthree',
+ default: '',
+ min: 0,
+ max: 1024,
+ },
+ ],
+ };
+ history = createMemoryHistory({
+ initialEntries: [
+ '/templates/job_templates/1/survey/edit?question_variable=foo',
+ ],
+ });
+ updateSurvey = jest.fn();
+ wrapper = mountWithContexts(
+
+
+
+
+ ,
+ {
+ context: { router: { history } },
+ }
+ );
+
+ const inputs = wrapper.find('MultipleChoiceField TextInput');
+ expect(inputs).toHaveLength(3);
+ expect(inputs.at(0).prop('value')).toEqual('one');
+ expect(inputs.at(1).prop('value')).toEqual('two');
+ expect(inputs.at(2).prop('value')).toEqual('three');
+ });
});
diff --git a/awx/ui/src/screens/Template/Survey/SurveyReorderModal.js b/awx/ui/src/screens/Template/Survey/SurveyReorderModal.js
index 1707644962..0415a60c8a 100644
--- a/awx/ui/src/screens/Template/Survey/SurveyReorderModal.js
+++ b/awx/ui/src/screens/Template/Survey/SurveyReorderModal.js
@@ -117,7 +117,7 @@ function SurveyReorderModal({
let component = null;
const choices = Array.isArray(q.choices)
? q.choices
- : q.choices.split('\n');
+ : (q.choices || '').split('\n');
switch (q.type) {
case 'password':
component = (