UNPKG

ts-prime

Version:

A utility library for JavaScript and Typescript.

61 lines (60 loc) 2.39 kB
// import { uniq } from './uniq'; import { pipe } from './pipe'; import { createCounter } from './_counter'; import { take } from './take'; import { uniqBy } from './uniqBy'; import { identity } from './identity'; describe('uniqBy', function () { var people = [ { name: 'John', age: 42 }, { name: 'Jörn', age: 30 }, { name: 'Sarah', age: 33 }, { name: 'Kim', age: 22 }, { name: 'Sarah', age: 38 }, { name: 'John', age: 33 }, { name: 'Emily', age: 42 }, ]; it('handles uniq by identity', function () { expect(uniqBy([1, 2, 2, 5, 1, 6, 7], identity)).toEqual([1, 2, 5, 6, 7]); }); it('returns people with uniq names', function () { expect(uniqBy(people, function (p) { return p.name; })).toEqual([ { name: 'John', age: 42 }, { name: 'Jörn', age: 30 }, { name: 'Sarah', age: 33 }, { name: 'Kim', age: 22 }, { name: 'Emily', age: 42 }, ]); }); it('returns people with uniq ages', function () { expect(uniqBy(people, function (p) { return p.age; })).toEqual([ { name: 'John', age: 42 }, { name: 'Jörn', age: 30 }, { name: 'Sarah', age: 33 }, { name: 'Kim', age: 22 }, { name: 'Sarah', age: 38 }, ]); }); it('returns people with uniq first letter of name', function () { expect(uniqBy(people, function (p) { return p.name.substring(0, 1); })).toEqual([ { name: 'John', age: 42 }, { name: 'Sarah', age: 33 }, { name: 'Kim', age: 22 }, { name: 'Emily', age: 42 }, ]); }); describe('pipe', function () { it('gets executed until target length is reached', function () { var counter = createCounter(); var result = pipe([1, 2, 2, 5, 1, 6, 7], counter.fn(), uniqBy(identity), take(3)); expect(counter.count).toHaveBeenCalledTimes(4); expect(result).toEqual([1, 2, 5]); }); it('get executed 3 times when take before uniqBy', function () { var counter = createCounter(); var result = pipe([1, 2, 2, 5, 1, 6, 7], counter.fn(), take(3), uniqBy(identity)); expect(counter.count).toHaveBeenCalledTimes(3); expect(result).toEqual([1, 2]); }); }); });