82 lines
1.9 KiB
JavaScript
82 lines
1.9 KiB
JavaScript
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { groupListOfObjectsBy } from '../index.js';
|
|
|
|
describe( 'groupListOfObjectsBy', () => {
|
|
const objectList = [
|
|
{
|
|
id: '1',
|
|
name: 'Object name 1',
|
|
type: 'type1',
|
|
},
|
|
{
|
|
id: '2',
|
|
name: 'Object name 2',
|
|
type: 'type1',
|
|
},
|
|
{
|
|
id: '3',
|
|
name: 'Object name 3',
|
|
type: 'type1',
|
|
},
|
|
{
|
|
id: '4',
|
|
name: 'Object name 4',
|
|
type: 'type2',
|
|
},
|
|
];
|
|
|
|
it( 'handles different params', () => {
|
|
// Using these params should return an empty object.
|
|
const emptyObject = groupListOfObjectsBy();
|
|
const otherEmptyObject = groupListOfObjectsBy( [] );
|
|
const anotherEmptyObject = groupListOfObjectsBy( 'not an array' );
|
|
expect( emptyObject ).toMatchObject( {} );
|
|
expect( otherEmptyObject ).toMatchObject( {} );
|
|
expect( anotherEmptyObject ).toMatchObject( {} );
|
|
|
|
// Not sending a key to use for grouping the elements will return the sent list
|
|
const ungroupedList = groupListOfObjectsBy( objectList );
|
|
expect( ungroupedList.length ).toBe( 4 );
|
|
} );
|
|
|
|
it( 'groups objects by type', () => {
|
|
const { type1, type2 } = groupListOfObjectsBy( objectList, 'type' );
|
|
expect( type1.length ).toBe( 3 );
|
|
expect( type2.length ).toBe( 1 );
|
|
} );
|
|
|
|
it( 'groups objects without type', () => {
|
|
const objectWithoutType = {
|
|
id: '5',
|
|
name: 'Object name 5',
|
|
};
|
|
objectList.push( objectWithoutType );
|
|
const { type1, type2 } = groupListOfObjectsBy(
|
|
objectList,
|
|
'type',
|
|
'type2'
|
|
);
|
|
expect( type1.length ).toBe( 3 );
|
|
expect( type2.length ).toBe( 2 );
|
|
} );
|
|
|
|
it( 'groups objects with a new type', () => {
|
|
const objectWithNewType = {
|
|
id: '6',
|
|
name: 'Object name 4',
|
|
type: 'type3',
|
|
};
|
|
objectList.push( objectWithNewType );
|
|
const { type1, type2, type3 } = groupListOfObjectsBy(
|
|
objectList,
|
|
'type',
|
|
'type2'
|
|
);
|
|
expect( type1.length ).toBe( 3 );
|
|
expect( type2.length ).toBe( 2 );
|
|
expect( type3.length ).toBe( 1 );
|
|
} );
|
|
} );
|