mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-28 11:59:54 +00:00
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import { groupBy } from '@datahub/utils/array/group-by';
|
|
import { module, test } from 'qunit';
|
|
|
|
module('Unit | Utility | array/group-by', function() {
|
|
test('it groups by key', function(assert) {
|
|
const element = {
|
|
key: 'aStringValue'
|
|
};
|
|
const keyName = element.key;
|
|
const expectedGroupedResult = {
|
|
[keyName]: [element]
|
|
};
|
|
let actualGroupedResult = groupBy([element], 'key');
|
|
|
|
assert.deepEqual(actualGroupedResult, expectedGroupedResult, `expected result to have a list keyed by ${keyName}`);
|
|
|
|
let elements = [element, element];
|
|
actualGroupedResult = groupBy(elements, 'key');
|
|
|
|
assert.ok(Array.isArray(actualGroupedResult.aStringValue), `expected ${keyName} in result to be of type array`);
|
|
|
|
assert.equal(
|
|
actualGroupedResult.aStringValue.length,
|
|
elements.length,
|
|
`expected result key ${keyName} array length to be ${elements.length}`
|
|
);
|
|
|
|
const thirdElement = { key: 'bStringValue' };
|
|
elements = [...elements, thirdElement];
|
|
actualGroupedResult = groupBy(elements, 'key');
|
|
|
|
assert.ok(
|
|
Array.isArray(actualGroupedResult.aStringValue) && Array.isArray(actualGroupedResult.bStringValue),
|
|
`expected ${keyName} ${thirdElement.key} to arrays on the result from groupBy`
|
|
);
|
|
assert.equal(actualGroupedResult.bStringValue.length, 1, `expected a length of 1 for array at ${thirdElement.key}`);
|
|
const expectedGroupedResultB = {
|
|
[thirdElement.key]: [thirdElement]
|
|
};
|
|
assert.deepEqual(
|
|
actualGroupedResult[thirdElement.key],
|
|
expectedGroupedResultB[thirdElement.key],
|
|
`expected result list to deeply equal expectedGroupedResultB list`
|
|
);
|
|
});
|
|
});
|