/* tslint:disable:no-unused-variable */ import { groupBy, lastItems } from './utils'; describe('utils', () => { describe('groupBy', () => { beforeEach(() => { }); it('should exist', () => { expect(typeof groupBy).toBe('function'); }); it('should group an array of objects into an object of arrays, with a STRING as an identifier', () => { const data = [{a: 1}, {a: 2}, {b: 3}, {a: 1}]; const result = groupBy(data, 'a'); expect(result[1].length).toBe(2); expect(result[2].length).toBe(1); expect(result['undefined'].length).toBe(1); expect(Object.keys(result).length).toBe(3); expect(result[1]).toContain(data[0]); expect(result[1]).toContain(data[3]); expect(result[2]).toContain(data[1]); expect(result['undefined']).toContain(data[2]); }); it('should group an array of objects into an object of arrays with a FUNCTION as an identifier', () => { const data = [{a: {b: 'x'}}, {a: {b: 'y'}}, {a: {b: 'x'}}, {a: {b: 'y'}}, {a: {b: 'z'}}]; const result = groupBy(data, (value) => value['a']['b']); expect(result['x'].length).toBe(2); expect(result['y'].length).toBe(2); expect(result['z'].length).toBe(1); expect(Object.keys(result).length).toBe(3); expect(result['x']).toContain(data[0]); expect(result['y']).toContain(data[1]); expect(result['x']).toContain(data[2]); expect(result['y']).toContain(data[3]); expect(result['z']).toContain(data[4]); }); }); });