Merge pull request #10920 from nixocio/ui_issue_10827

Update Workflow Node Convergence
This commit is contained in:
Kersom 2021-08-31 11:05:01 -04:00 committed by GitHub
commit d129928e42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 87 additions and 5 deletions

View File

@ -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 = (
<PromptDetail
launchConfig={launchConfig}
resource={fullUnifiedJobTemplate}
overrides={overrides}
workflowNode={nodeToView.originalNodeObject}
workflowNode={nodeUpdatedConvergence}
/>
);
}

View File

@ -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) && (
<>
<rect
fill={
@ -292,7 +296,7 @@ function VisualizerNode({
x={wfConstants.nodeW / 2 - wfConstants.nodeW / 10 + 7}
y={-wfConstants.nodeH / 4 - 1}
>
<ConvergenceLabel>{t`ALL`}</ConvergenceLabel>
<ConvergenceLabel data-cy="convergence-label">{t`ALL`}</ConvergenceLabel>
</foreignObject>
</>
)}

View File

@ -270,6 +270,68 @@ describe('VisualizerNode', () => {
});
});
describe('Node should display convergence label', () => {
test('Should display ALL convergence label', async () => {
const wrapper = mountWithContexts(
<WorkflowDispatchContext.Provider value={dispatch}>
<WorkflowStateContext.Provider value={mockedContext}>
<svg>
<VisualizerNode
node={{
id: 2,
originalNodeObject: {
all_parents_must_converge: true,
always_nodes: [],
created: '2020-11-19T21:47:55.278081Z',
diff_mode: null,
extra_data: {},
failure_nodes: [],
id: 49,
identifier: 'f03b62c5-40f8-49e4-97c3-5bb20c91ec91',
inventory: null,
job_tags: null,
job_type: null,
limit: null,
modified: '2020-11-19T21:47:55.278156Z',
related: {
credentials:
'/api/v2/workflow_job_template_nodes/49/credentials/',
},
scm_branch: null,
skip_tags: null,
success_nodes: [],
summary_fields: {
workflow_job_template: { id: 15 },
unified_job_template: {
id: 7,
description: '',
name: 'Example',
unified_job_type: 'job',
},
},
type: 'workflow_job_template_node',
unified_job_template: 7,
url: '/api/v2/workflow_job_template_nodes/49/',
verbosity: null,
workflowMakerNodeId: 2,
workflow_job_template: 15,
},
}}
readOnly={false}
updateHelpText={updateHelpText}
updateNodeHelp={updateNodeHelp}
/>
</svg>
</WorkflowStateContext.Provider>
</WorkflowDispatchContext.Provider>
);
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 () => {