ts-prime
Version:
A utility library for JavaScript and Typescript.
63 lines (62 loc) • 2.6 kB
JavaScript
;
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]);
});
});
});