import { mount } from 'enzyme'; import React from 'react'; import { ExecutionOptionsPageContent } from './ExecutionOptionsPageContent'; import type { IPipeline } from '../../../domain'; describe('Execution Options Page Content', () => { describe('Max Concurrent Options', () => { let pipeline: IPipeline; const setPipeline = (overrides: any = {}) => { pipeline = { application: 'test', id: 'test1', keepWaitingPipelines: false, limitConcurrent: false, maxConcurrentExecutions: 0, name: 'test p 1', // @ts-ignore parameterConfig: [], // @ts-ignore stages: [], // @ts-ignore triggers: [], ...overrides, }; }; const update = (changes: any = {}) => { pipeline = { ...pipeline, ...changes, }; }; describe('enabling max concurrent', () => { it('sets keepWaitingPipelines to true if limitConcurrent and keepWaitingPipelines are both not truthy', () => { setPipeline(); const wrapper = mount(); expect(pipeline.keepWaitingPipelines).toBeFalsy(); const checkbox = wrapper.find('input').at(0); checkbox.simulate('change', { target: { checked: true } }); expect(pipeline.keepWaitingPipelines).toBeTruthy(); }); it('does not alter pipeline if limitConcurrent is true', () => { setPipeline({ limitConcurrent: true }); const wrapper = mount(); expect(pipeline.keepWaitingPipelines).toBeFalsy(); const checkbox = wrapper.find('input').at(0); checkbox.simulate('change', { target: { checked: true } }); expect(pipeline.keepWaitingPipelines).toBeFalsy(); }); it('does not alter pipeline if keepWaitingPipelines is true', () => { setPipeline({ keepWaitingPipelines: true }); const wrapper = mount(); expect(pipeline.keepWaitingPipelines).toBeTruthy(); const checkbox = wrapper.find('input').at(0); checkbox.simulate('change', { target: { checked: true } }); expect(pipeline.keepWaitingPipelines).toBeTruthy(); }); it('defaults the max concurrent value to 0', () => { setPipeline(); const wrapper = mount(); const checkbox = wrapper.find('input').at(0); checkbox.simulate('change', { target: { checked: true } }); const concurrentInput = wrapper.find('input[type="number"]').at(0); expect(concurrentInput.prop('value')).toEqual(0); }); }); it('updates the max concurrent config value when the input is changed', () => { setPipeline(); const value = 22; const wrapper = mount(); const checkbox = wrapper.find('input').at(0); checkbox.simulate('change', { target: { checked: true } }); const concurrentInput = wrapper.find('input[type="number"]').at(0); concurrentInput.simulate('change', { target: { value } }); expect(pipeline.maxConcurrentExecutions).toEqual(value); }); it('sets the max concurrent value to a whole number if a float is entered', () => { setPipeline(); const value = 3.3; const wrapper = mount(); const checkbox = wrapper.find('input').at(0); checkbox.simulate('change', { target: { checked: true } }); const concurrentInput = wrapper.find('input[type="number"]').at(0); concurrentInput.simulate('change', { target: { value } }); expect(pipeline.maxConcurrentExecutions).toEqual(3); }); }); });