@arrows/array
Version:
Functional tools for JS arrays
41 lines (33 loc) • 1.14 kB
text/typescript
import { groupBy_ } from "./index"
describe("Array groupByX", () => {
it("returns object that groups array elements by key calculated by grouping function", () => {
const arr = [
{ type: "animal", name: "monkey" },
{ type: "plant", name: "oak" },
{ type: "animal", name: "elephant" },
{ type: "mineral", name: "quartz" },
]
const groupingFn = (item) => item.type
const result = groupBy_(groupingFn, arr)
const result2 = groupBy_(groupingFn)(arr)
const expected = {
animal: [
{ type: "animal", name: "monkey" },
{ type: "animal", name: "elephant" },
],
plant: [{ type: "plant", name: "oak" }],
mineral: [{ type: "mineral", name: "quartz" }],
}
expect(result).toEqual(result2)
expect(result).toEqual(expected)
})
it("returns empty object if empty array is provided", () => {
const arr = []
const groupingFn = (item) => item.type
const result = groupBy_(groupingFn, arr)
const result2 = groupBy_(groupingFn)(arr)
const expected = {}
expect(result).toEqual(result2)
expect(result).toEqual(expected)
})
})