diff --git a/app/components/pipeline/parameters/component.js b/app/components/pipeline/parameters/component.js index 438672c70..bc8e3057f 100644 --- a/app/components/pipeline/parameters/component.js +++ b/app/components/pipeline/parameters/component.js @@ -4,9 +4,9 @@ import { action } from '@ember/object'; import { extractJobParameters, extractEventParameters, + flattenParameters, getNormalizedParameterGroups } from 'screwdriver-ui/utils/pipeline/parameters'; -import { flattenParameters } from './util'; export default class PipelineParametersComponent extends Component { @tracked parameters; diff --git a/app/components/pipeline/parameters/util.js b/app/components/pipeline/parameters/util.js deleted file mode 100644 index 3af9aa1d1..000000000 --- a/app/components/pipeline/parameters/util.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Flattens value key to the parent object - * @param parameters - * @returns {{}} - */ -export function flattenParameterGroup(parameters) { - const flattened = {}; - - Object.entries(parameters).forEach(([key, value]) => { - flattened[key] = value.value; - }); - - return flattened; -} - -/** - * Flattens the parameter group of a job - * @param parameters - * @returns {{}} - */ -export function flattenJobParameters(parameters) { - const flattened = {}; - - Object.entries(parameters).forEach(([group, groupParameters]) => { - flattened[group] = flattenParameterGroup(groupParameters); - }); - - return flattened; -} - -/** - * Flattens parameters for use in the API request body - * @param parameters - * @returns {{}} - */ -export function flattenParameters(parameters) { - let flattened = {}; - const { pipeline, job } = parameters; - - if (pipeline) { - flattened = flattenParameterGroup(pipeline); - } - - if (job) { - flattened = { ...flattened, ...flattenJobParameters(job) }; - } - - return flattened; -} diff --git a/app/utils/pipeline/parameters.js b/app/utils/pipeline/parameters.js index 9c481246f..877a0af16 100644 --- a/app/utils/pipeline/parameters.js +++ b/app/utils/pipeline/parameters.js @@ -178,3 +178,53 @@ export function getNormalizedParameterGroups( return normalizedParameterGroups.concat(normalizedJobParameterGroups); } + +/** + * Flattens value key to the parent object + * @param parameters + * @returns {{}} + */ +export function flattenParameterGroup(parameters) { + const flattened = {}; + + Object.entries(parameters).forEach(([key, value]) => { + flattened[key] = value.value; + }); + + return flattened; +} + +/** + * Flattens the parameter group of a job + * @param parameters + * @returns {{}} + */ +export function flattenJobParameters(parameters) { + const flattened = {}; + + Object.entries(parameters).forEach(([group, groupParameters]) => { + flattened[group] = flattenParameterGroup(groupParameters); + }); + + return flattened; +} + +/** + * Flattens parameters for use in the API request body + * @param parameters + * @returns {{}} + */ +export function flattenParameters(parameters) { + let flattened = {}; + const { pipeline, job } = parameters; + + if (pipeline) { + flattened = flattenParameterGroup(pipeline); + } + + if (job) { + flattened = { ...flattened, ...flattenJobParameters(job) }; + } + + return flattened; +} diff --git a/tests/unit/components/pipeline/parameters/util-test.js b/tests/unit/components/pipeline/parameters/util-test.js deleted file mode 100644 index 1190e1f01..000000000 --- a/tests/unit/components/pipeline/parameters/util-test.js +++ /dev/null @@ -1,76 +0,0 @@ -import { module, test } from 'qunit'; -import { - flattenJobParameters, - flattenParameters, - flattenParameterGroup -} from 'screwdriver-ui/components/pipeline/parameters/util'; - -module('Unit | Component | pipeline/parameters/util', function () { - test('flattenParameterGroup flattens correctly', function (assert) { - assert.deepEqual(flattenParameterGroup({ param: { value: 123 } }), { - param: 123 - }); - - assert.deepEqual( - flattenParameterGroup({ - param1: { value: 123 }, - param2: { value: 'abc' } - }), - { - param1: 123, - param2: 'abc' - } - ); - }); - - test('flattenJobParameters flattens correctly', function (assert) { - assert.deepEqual( - flattenJobParameters({ - job1: { p1: { value: 'abc' }, p2: { value: 'xyz' } }, - job2: { p1: { value: 123 }, p2: { value: 987 } } - }), - { job1: { p1: 'abc', p2: 'xyz' }, job2: { p1: 123, p2: 987 } } - ); - }); - - test('flattenParameters flattens correctly', function (assert) { - assert.deepEqual( - flattenParameters({ - pipeline: { p1: { value: 'pipeline' }, p2: { value: 'pipeline2' } } - }), - { p1: 'pipeline', p2: 'pipeline2' } - ); - - assert.deepEqual( - flattenParameters({ - job: { main: { j1: { value: 123 }, j2: { value: 'abc' } } } - }), - { main: { j1: 123, j2: 'abc' } } - ); - - assert.deepEqual( - flattenParameters({ - pipeline: { - p1: { value: 'pipeline' }, - p2: { value: 'pipeline2' } - }, - job: { - main: { - j1: { value: 123 }, - j2: { value: 'abc' } - }, - secondary: { - j1: { value: 'xyz' }, - j2: { value: 987 } - } - } - }), - { - p1: 'pipeline', - p2: 'pipeline2', - main: { j1: 123, j2: 'abc' }, - secondary: { j1: 'xyz', j2: 987 } - } - ); - }); -}); diff --git a/tests/unit/utils/pipeline/parameters-test.js b/tests/unit/utils/pipeline/parameters-test.js index fd7e41d1a..375636f12 100644 --- a/tests/unit/utils/pipeline/parameters-test.js +++ b/tests/unit/utils/pipeline/parameters-test.js @@ -2,6 +2,9 @@ import { module, test } from 'qunit'; import { extractEventParameters, extractJobParameters, + flattenJobParameters, + flattenParameters, + flattenParameterGroup, normalizeParameters, getNormalizedParameterGroups } from 'screwdriver-ui/utils/pipeline/parameters'; @@ -226,4 +229,72 @@ module('Unit | Utility | Pipeline | parameters', function () { paramGroupTitle: 'Job: job1' }); }); + + test('flattenParameterGroup flattens correctly', function (assert) { + assert.deepEqual(flattenParameterGroup({ param: { value: 123 } }), { + param: 123 + }); + + assert.deepEqual( + flattenParameterGroup({ + param1: { value: 123 }, + param2: { value: 'abc' } + }), + { + param1: 123, + param2: 'abc' + } + ); + }); + + test('flattenJobParameters flattens correctly', function (assert) { + assert.deepEqual( + flattenJobParameters({ + job1: { p1: { value: 'abc' }, p2: { value: 'xyz' } }, + job2: { p1: { value: 123 }, p2: { value: 987 } } + }), + { job1: { p1: 'abc', p2: 'xyz' }, job2: { p1: 123, p2: 987 } } + ); + }); + + test('flattenParameters flattens correctly', function (assert) { + assert.deepEqual( + flattenParameters({ + pipeline: { p1: { value: 'pipeline' }, p2: { value: 'pipeline2' } } + }), + { p1: 'pipeline', p2: 'pipeline2' } + ); + + assert.deepEqual( + flattenParameters({ + job: { main: { j1: { value: 123 }, j2: { value: 'abc' } } } + }), + { main: { j1: 123, j2: 'abc' } } + ); + + assert.deepEqual( + flattenParameters({ + pipeline: { + p1: { value: 'pipeline' }, + p2: { value: 'pipeline2' } + }, + job: { + main: { + j1: { value: 123 }, + j2: { value: 'abc' } + }, + secondary: { + j1: { value: 'xyz' }, + j2: { value: 987 } + } + } + }), + { + p1: 'pipeline', + p2: 'pipeline2', + main: { j1: 123, j2: 'abc' }, + secondary: { j1: 'xyz', j2: 987 } + } + ); + }); });