/
optionsMatches.test.js
39 lines (29 loc) · 1.67 KB
/
optionsMatches.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'use strict';
const optionsMatches = require('../optionsMatches');
it('optionsMatches matches a string', () => {
expect(optionsMatches({ foo: 'bar' }, 'foo', 'bar')).toBeTruthy();
expect(optionsMatches({ foo: 'bar' }, 'foo', 'BAR')).toBeFalsy();
expect(optionsMatches('not an object', 'foo', 'bar')).toBeFalsy();
expect(optionsMatches({ baz: 'bar' }, 'foo', 'bar')).toBeFalsy();
expect(optionsMatches({ foo: '100' }, 'foo', 100)).toBeFalsy();
expect(optionsMatches({ foo: 'baz' }, 'foo', 'bar')).toBeFalsy();
expect(optionsMatches({ foo: ['baz', 'bar'] }, 'foo', 'bar')).toBeTruthy();
expect(optionsMatches({ foo: ['baz', 'qux'] }, 'foo', 'bar')).toBeFalsy();
});
it('optionsMatches matches a RegExp', () => {
expect(optionsMatches({ foo: '/\\.bar/' }, 'foo', '.bar')).toBeTruthy();
expect(optionsMatches({ foo: '/\\.baz$/' }, 'foo', '.bar')).toBeFalsy();
expect(optionsMatches({ foo: '/[a-z]+/' }, 'foo', 'BAR')).toBeFalsy();
expect(optionsMatches({ foo: '/[A-Z]+/' }, 'foo', 'BAR')).toBeTruthy();
expect(optionsMatches({ foo: '/[a-z]+/i' }, 'foo', 'BAR')).toBeTruthy();
expect(optionsMatches({ foo: '/[A-Z]+/i' }, 'foo', 'bar')).toBeTruthy();
expect(optionsMatches({ foo: ['/\\.bar$/', '.baz'] }, 'foo', '.bar')).toBeTruthy();
expect(optionsMatches({ foo: ['/\\.bar$/', '.baz'] }, 'foo', '.baz')).toBeTruthy();
expect(optionsMatches({ foo: ['/\\.bar$/', 'qux'] }, 'foo', '.baz')).toBeFalsy();
});
it('optionsMatches does not match any value without the property', () => {
expect(optionsMatches({}, 'foo', 'bar')).toBeFalsy();
});
it('optionsMatches does not match any value with the empty array property', () => {
expect(optionsMatches({ foo: [] }, 'foo', 'bar')).toBeFalsy();
});