-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.ts
61 lines (56 loc) · 1.96 KB
/
index.ts
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import * as match from '../../build/index'
import {expect} from 'chai'
let obj = {
user: {
name: 'john',
age: 34
},
country: 'China',
jobs: {
current: {
title: 'Senior software developer'
},
previous: {
title: 'Junior software developer'
},
wished: null
}
};
describe('Simple cases', ()=>{
it('Stupid', ()=>{
expect(match.check(obj, obj)).to.eq(true);
expect(match.check(obj, {})).to.eq(true);
expect(match.check(obj, {country:'China'})).to.eq(true);
expect(match.check(obj, {country:'Brazil'})).to.eq(false);
expect(match.check(obj, {country:'china'})).to.eq(false);
expect(match.check(obj, {foo:1})).to.eq(false);
expect(match.check(obj, {foo:undefined})).to.eq(true);
});
it('Nested', ()=>{
expect(match.check(obj, {user:{}})).to.eq(true, 'case 0');
expect(match.check(obj, {user:{age:34}})).to.eq(true, 'case 1');
expect(match.check(obj, {user:{name:'john'}})).to.eq(true, 'case 2');
expect(match.check(obj, {user:{name:'john'}, country:'China'})).to.eq(true, 'case 3');
expect(match.check(obj, {user:{name:'john'}, country:'Brazil'})).to.eq(false, 'case 4');
expect(match.check(obj, {jobs:{current:{title:'Senior software developer'}}})).to.eq(true, 'case 5');
expect(match.check(obj, {jobs:{wished:null}})).to.eq(true, 'case 6');
expect(match.check(obj, {jobs:{nonexistent:null}})).to.eq(false, 'case 7');
});
});
describe('Criterion cases', ()=>{
it('Custom', ()=>{
expect(match.check(obj, {
jobs: match.criteria.custom( value => {return value.wished == null} )
})).to.eq(true, 'case 1');
});
});
describe('Filtering cases', ()=>{
it('Simple', ()=>{
let objects = [
{},
{id:1},
{id:2}
];
expect(match.filter(objects, {id:1}).length).to.eq(1, 'case 1');
});
});