diff --git a/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeViewModal.js b/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeViewModal.js index 51fc3eca1d..0ee832f652 100644 --- a/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeViewModal.js +++ b/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeViewModal.js @@ -187,12 +187,27 @@ function NodeViewModal({ readOnly }) { } } + let nodeUpdatedConvergence = {}; + + if ( + nodeToView.all_parents_must_converge !== undefined && + nodeToView.all_parents_must_converge !== + nodeToView.originalNodeObject.all_parents_must_converge + ) { + nodeUpdatedConvergence = { + ...nodeToView.originalNodeObject, + all_parents_must_converge: nodeToView.all_parents_must_converge, + }; + } else { + nodeUpdatedConvergence = nodeToView.originalNodeObject; + } + Content = ( ); } diff --git a/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/VisualizerNode.js b/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/VisualizerNode.js index da1e65f472..ac0802f5a0 100644 --- a/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/VisualizerNode.js +++ b/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/VisualizerNode.js @@ -148,7 +148,7 @@ function VisualizerNode({ if (addingLink) { updateHelpText( node.isInvalidLinkTarget - ? t`Invalid link target. Unable to link to children or ancestor nodes. Graph cycles are not supported.` + ? t`Invalid link target. Unable to link to children or ancestor nodes. Graph cycles are not supported.` : t`Click to create a new link to this node.` ); onMouseOver(node); @@ -264,8 +264,12 @@ function VisualizerNode({ nodePositions[node.id].y - nodePositions[1].y })`} > - {(node.all_parents_must_converge || - node?.originalNodeObject?.all_parents_must_converge) && ( + {(Object.prototype.hasOwnProperty.call( + node, + 'all_parents_must_converge' + ) + ? node.all_parents_must_converge + : node?.originalNodeObject?.all_parents_must_converge) && ( <> - {t`ALL`} + {t`ALL`} )} diff --git a/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/VisualizerNode.test.js b/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/VisualizerNode.test.js index 78fd0a6122..bcf722e8e7 100644 --- a/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/VisualizerNode.test.js +++ b/awx/ui/src/screens/Template/WorkflowJobTemplateVisualizer/VisualizerNode.test.js @@ -270,6 +270,68 @@ describe('VisualizerNode', () => { }); }); + describe('Node should display convergence label', () => { + test('Should display ALL convergence label', async () => { + const wrapper = mountWithContexts( + + + + + + + + ); + expect(wrapper.find('p[data-cy="convergence-label"]').length).toBe(1); + expect( + wrapper.find('p[data-cy="convergence-label"]').prop('children') + ).toEqual('ALL'); + }); + }); + describe('Node without full unified job template', () => { let wrapper; beforeEach(() => { @@ -336,6 +398,7 @@ describe('VisualizerNode', () => { .simulate('click'); }); expect(JobTemplatesAPI.readDetail).toHaveBeenCalledWith(7); + expect(wrapper.find('p[data-cy="convergence-label"]').length).toBe(0); }); test('Displays error fetching full unified job template', async () => {