UNPKG

rubico

Version:

[a]synchronous functional programming

57 lines (55 loc) 1.94 kB
const groupBy = require('./groupBy') const Test = require('thunk-test') describe('groupBy', () => { it('Groups a foldable collection into a Map of arrays by a property on each of its elements', async () => { Test(groupBy('age')) .case( [{ age: 21 }, { age: 22 }, { age: 21 }, { age: 23 }, { age: 21 }], new Map([ [21, [{ age: 21 }, { age: 21 }, { age: 21 }]], [22, [{ age: 22 }]], [23, [{ age: 23 }]], ])) .case( new Set([{ age: 21 }, { age: 22 }, { age: 21 }, { age: 23 }, { age: 21 }]), new Map([ [21, [{ age: 21 }, { age: 21 }, { age: 21 }]], [22, [{ age: 22 }]], [23, [{ age: 23 }]], ]))() }) it('Groups a foldable collection into a Map of arrays by a resolver for each of its elements', async () => { Test(groupBy(object => object.age)) .case( [{ age: 21 }, { age: 22 }, { age: 21 }, { age: 23 }, { age: 21 }], new Map([ [21, [{ age: 21 }, { age: 21 }, { age: 21 }]], [22, [{ age: 22 }]], [23, [{ age: 23 }]], ])) .case( new Set([{ age: 21 }, { age: 22 }, { age: 21 }, { age: 23 }, { age: 21 }]), new Map([ [21, [{ age: 21 }, { age: 21 }, { age: 21 }]], [22, [{ age: 22 }]], [23, [{ age: 23 }]], ]))() }) it('above but async', async () => { Test(groupBy(async object => object.age)) .case( [{ age: 21 }, { age: 22 }, { age: 21 }, { age: 23 }, { age: 21 }], new Map([ [21, [{ age: 21 }, { age: 21 }, { age: 21 }]], [22, [{ age: 22 }]], [23, [{ age: 23 }]], ])) .case( new Set([{ age: 21 }, { age: 22 }, { age: 21 }, { age: 23 }, { age: 21 }]), new Map([ [21, [{ age: 21 }, { age: 21 }, { age: 21 }]], [22, [{ age: 22 }]], [23, [{ age: 23 }]], ]))() }) })