blob: 509e003d8d827da4a8921e3d64e1bfd3abaafbfd [file] [log] [blame]
import { expect } from 'chai';
import * as paramset from './index';
/* eslint-disable no-unused-expressions */
describe('ParamSet',
() => {
function testParamSet() {
const ps = {};
// The empty paramset matches everything.
expect(paramset.match(ps, {})).to.be.true;
expect(paramset.match(ps, { foo: '2', bar: 'a' })).to.be.true;
const p = {
foo: '1',
bar: 'a',
};
paramset.add(ps, p);
expect(paramset.match(ps, p)).to.be.true;
expect(paramset.match(ps, {})).to.be.false;
paramset.add(ps, {
foo: '2',
bar: 'b',
});
paramset.add(ps, {
foo: '1',
bar: 'b',
});
expect(paramset.match(ps, { foo: '2', bar: 'a' })).to.be.true;
expect(paramset.match(ps, { foo: '2', bar: 'a', baz: 'other' })).to.be.true;
expect(paramset.match(ps, { bar: 'a' })).to.be.false;
expect(paramset.match(ps, { foo: '2' })).to.be.false;
expect(paramset.match(ps, { })).to.be.false;
expect(paramset.match(ps, { foo: '3', bar: 'a' })).to.be.false;
expect(paramset.match(ps, { foo: '2', bar: 'c' })).to.be.false;
}
function testParamSetWithIgnore() {
const ps = {};
const p = {
foo: '1',
bar: 'a',
description: 'long rambling text',
};
paramset.add(ps, p, ['description']);
expect(paramset.match(ps, p)).to.be.true;
expect(paramset.match(ps, {
foo: '1',
bar: 'a',
})).to.be.true;
expect(paramset.match(ps, {})).to.be.false;
}
function testParamSetWithRegex() {
const ps = {};
paramset.add(ps, { foo: '2.*' });
expect(paramset.match(ps, { foo: '2345', bar: 'aa' })).to.be.true;
expect(paramset.match(ps, { foo: '345', bar: 'bb' })).to.be.false;
paramset.add(ps, { bar: '.*a' });
expect(paramset.match(ps, { foo: '2345', bar: 'aa' })).to.be.true;
expect(paramset.match(ps, { foo: '2345', bar: 'bb' })).to.be.false;
// Test with paramset with both regex and non-regex by adding another
// value to existing key.
paramset.add(ps, { foo: 'blah' });
expect(paramset.match(ps, { foo: '2345', bar: 'aa' })).to.be.true;
expect(paramset.match(ps, { foo: 'blah', bar: 'aa' })).to.be.true;
expect(paramset.match(ps, { foo: '345', bar: 'aa' })).to.be.false;
expect(paramset.match(ps, { foo: '2345', bar: 'bb' })).to.be.false;
}
it('should be able get match against params', () => {
testParamSet();
testParamSetWithIgnore();
testParamSetWithRegex();
});
});