adds tests

This commit is contained in:
Alex Corey 2020-10-15 15:30:10 -04:00 committed by mabashian
parent 60751dfa16
commit 72c6ff095f
4 changed files with 81 additions and 22 deletions

View File

@ -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(
<Formik
initialValues={{ extra_vars: 'one: 1' }}
values={{ extra_vars: 'one: 1', survey_foo: [] }}
>
<PreviewStep
resource={resource}
config={{
ask_variables_on_launch: true,
}}
formErrors={formErrors}
/>
</Formik>
);
});
const detail = wrapper.find('PromptDetail');
expect(detail).toHaveLength(1);
expect(detail.prop('resource')).toEqual(resource);
expect(detail.prop('overrides')).toEqual({
extra_vars: 'one: 1',
});
});
});

View File

@ -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(
<WorkflowDispatchContext.Provider value={dispatch}>
<WorkflowStateContext.Provider value={workflowContext}>
<NodeEditModal />
<NodeEditModal
onSave={() => {}}
askLinkType={false}
title="Edit Node"
/>
</WorkflowStateContext.Provider>
</WorkflowDispatchContext.Provider>
);
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',
});
});
});

View File

@ -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,

View File

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