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(() => {