request-validator
Version:
Schema-based request validation middleware for express and connect.
71 lines (62 loc) • 2.21 kB
JavaScript
/* global describe, it */
;
var assert = require('assert'),
unique = require('../lib/unique.js');
describe('unique', function () {
it('filters unique values', function () {
var inputs = [
[1, 'a', 3, false, null, undefined],
['abc', 123, true, 123, false, Math.PI, 'abc', true, null, null]
],
expected = [
[1, 'a', 3, false, null, undefined],
['abc', 123, true, false, Math.PI, null]
],
i;
for (i = 0; i < inputs.length; i++) {
assert.deepEqual(unique(inputs[i]), expected[i]);
}
});
it('performs deep equality checks', function () {
var input = [
{ },
{ a: 1 },
{ b: { c: { d: 123, f: null }, e: 'abc' } },
[1, 2, 3],
[{ a: 213 }],
{ b: 1 },
{ a: 1, b: undefined },
{ b: { e: 'abc', c: { f: null, d: 123 } } },
[1, 2, 3],
[{ a: 213 }]
],
expected = [
{ },
{ a: 1 },
{ b: { c: { d: 123, f: null }, e: 'abc' } },
[1, 2, 3],
[{ a: 213 }],
{ b: 1 },
{ a: 1, b: undefined }
];
assert.deepEqual(unique(input), expected);
});
});
describe('unique.findIndex', function () {
it('finds an item index with comparator', function () {
var arr = [{ }, { a: 1 }, { a: 1, b: 2 }],
expected = 2,
comparator = function (obj1, obj2) {
return obj1.a === obj2.a && obj1.b === obj2.b;
};
assert.strictEqual(unique.findIndex(arr, { a: 1, b: 2}, comparator), expected);
});
it('returns -1 when item cannot be found', function () {
var arr = [{ }, { a: 1 }, { a: 1, b: 2 }],
expected = -1,
comparator = function (obj1, obj2) {
return obj1.a === obj2.a && obj1.b === obj2.b;
};
assert.strictEqual(unique.findIndex(arr, { a: 1, b: null }, comparator), expected);
});
});