diff --git a/awx/ui_next/src/components/LaunchPrompt/steps/PreviewStep.test.jsx b/awx/ui_next/src/components/LaunchPrompt/steps/PreviewStep.test.jsx
index b596e866ea..753be606c8 100644
--- a/awx/ui_next/src/components/LaunchPrompt/steps/PreviewStep.test.jsx
+++ b/awx/ui_next/src/components/LaunchPrompt/steps/PreviewStep.test.jsx
@@ -104,4 +104,30 @@ describe('PreviewStep', () => {
extra_vars: 'one: 1',
});
});
+ test('should remove survey with empty array value', async () => {
+ let wrapper;
+ await act(async () => {
+ wrapper = mountWithContexts(
+
+
+
+ );
+ });
+
+ const detail = wrapper.find('PromptDetail');
+ expect(detail).toHaveLength(1);
+ expect(detail.prop('resource')).toEqual(resource);
+ expect(detail.prop('overrides')).toEqual({
+ extra_vars: 'one: 1',
+ });
+ });
});
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeEditModal.test.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeEditModal.test.jsx
index e0f5ff1b72..08b046d27b 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeEditModal.test.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeEditModal.test.jsx
@@ -1,6 +1,9 @@
import React from 'react';
import { act } from 'react-dom/test-utils';
-import { mountWithContexts } from '../../../../../../testUtils/enzymeHelpers';
+import {
+ mountWithContexts,
+ waitForElement,
+} from '../../../../../../testUtils/enzymeHelpers';
import {
WorkflowDispatchContext,
WorkflowStateContext,
@@ -9,10 +12,17 @@ import NodeEditModal from './NodeEditModal';
const dispatch = jest.fn();
-const nodeResource = {
- id: 448,
- type: 'job_template',
- name: 'Test JT',
+jest.mock('../../../../../api/models/InventorySources');
+jest.mock('../../../../../api/models/JobTemplates');
+jest.mock('../../../../../api/models/Projects');
+jest.mock('../../../../../api/models/WorkflowJobTemplates');
+const values = {
+ inventory: undefined,
+ nodeResource: {
+ id: 448,
+ name: 'Test JT',
+ type: 'job_template',
+ },
};
const workflowContext = {
@@ -22,27 +32,40 @@ const workflowContext = {
id: 30,
name: 'Foo JT',
type: 'job_template',
+ unified_job_type: 'job',
+ },
+ originalNodeObject: {
+ summary_fields: { unified_job_template: { id: 1, name: 'Job Template' } },
},
},
};
describe('NodeEditModal', () => {
- test('Node modal confirmation dispatches as expected', () => {
+ test('Node modal confirmation dispatches as expected', async () => {
const wrapper = mountWithContexts(
-
+ {}}
+ askLinkType={false}
+ title="Edit Node"
+ />
);
- act(() => {
- wrapper.find('NodeModal').prop('onSave')(nodeResource);
+ waitForElement(
+ wrapper,
+ 'WizardNavItem[content="ContentLoading"]',
+ el => el.length === 0
+ );
+ await act(async () => {
+ wrapper.find('NodeModal').prop('onSave')(values, {});
});
expect(dispatch).toHaveBeenCalledWith({
- type: 'UPDATE_NODE',
node: {
- nodeResource,
+ nodeResource: { id: 448, name: 'Test JT', type: 'job_template' },
},
+ type: 'UPDATE_NODE',
});
});
});
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeModal.test.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeModal.test.jsx
index 9c95475941..28817b2f63 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeModal.test.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeModal.test.jsx
@@ -111,7 +111,15 @@ describe('NodeModal', () => {
data: {
name: '',
description: '',
- spec: [{ question_name: 'Foo', required: true }],
+ spec: [
+ {
+ question_name: 'Foo',
+ required: true,
+ variable: 'bar',
+ type: 'text',
+ default: 'answer',
+ },
+ ],
type: 'text',
variable: 'bar',
},
@@ -254,10 +262,12 @@ describe('NodeModal', () => {
expect(JobTemplatesAPI.readSurvey).toBeCalledWith(25);
wrapper.update();
expect(wrapper.find('NodeNextButton').prop('buttonText')).toBe('Next');
- wrapper
- .find('WizardNavItem[content="Preview"]')
- .find('a')
- .prop('onClick')();
+ act(() => {
+ wrapper
+ .find('WizardNavItem[content="Preview"]')
+ .find('a')
+ .prop('onClick')();
+ });
wrapper.update();
await act(async () => {
@@ -469,7 +479,7 @@ describe('NodeModal', () => {
approvalDescription: 'Test Approval Description',
approvalName: 'Test Approval',
linkType: 'always',
- nodeResource: undefined,
+ nodeResource: null,
nodeType: 'approval',
timeout: 330,
verbosity: undefined,
@@ -573,7 +583,7 @@ describe('NodeModal', () => {
approvalDescription: 'Test Approval Description',
approvalName: 'Test Approval',
linkType: 'success',
- nodeResource: undefined,
+ nodeResource: null,
nodeType: 'approval',
timeout: 330,
verbosity: undefined,
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/NodeTypeStep.test.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/NodeTypeStep.test.jsx
index 9ccd37ad7f..3349191b4b 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/NodeTypeStep.test.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/NodeTypeStep.test.jsx
@@ -11,10 +11,10 @@ import {
import NodeTypeStep from './NodeTypeStep';
-jest.mock('../../../../api/models/InventorySources');
-jest.mock('../../../../api/models/JobTemplates');
-jest.mock('../../../../api/models/Projects');
-jest.mock('../../../../api/models/WorkflowJobTemplates');
+jest.mock('../../../../../../api/models/InventorySources');
+jest.mock('../../../../../../api/models/JobTemplates');
+jest.mock('../../../../../../api/models/Projects');
+jest.mock('../../../../../../api/models/WorkflowJobTemplates');
describe('NodeTypeStep', () => {
beforeAll(() => {