UNPKG

ts-prime

Version:

A utility library for JavaScript and Typescript.

63 lines (62 loc) 2.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // import { uniq } from './uniq'; var pipe_1 = require("./pipe"); var _counter_1 = require("./_counter"); var take_1 = require("./take"); var uniqBy_1 = require("./uniqBy"); var identity_1 = require("./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.uniqBy([1, 2, 2, 5, 1, 6, 7], identity_1.identity)).toEqual([1, 2, 5, 6, 7]); }); it('returns people with uniq names', function () { expect(uniqBy_1.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_1.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_1.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 = _counter_1.createCounter(); var result = pipe_1.pipe([1, 2, 2, 5, 1, 6, 7], counter.fn(), uniqBy_1.uniqBy(identity_1.identity), take_1.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 = _counter_1.createCounter(); var result = pipe_1.pipe([1, 2, 2, 5, 1, 6, 7], counter.fn(), take_1.take(3), uniqBy_1.uniqBy(identity_1.identity)); expect(counter.count).toHaveBeenCalledTimes(3); expect(result).toEqual([1, 2]); }); }); });