range.test.js (2548B)
1 const tape = require('tape'); 2 const range = require('./range'); 3 4 tape('filter.number.range -- structure', async t => { 5 t.plan(2); 6 t.ok('detect' in range, 'range filter has detect method'); 7 t.ok('compile' in range, 'range filter has compile method'); 8 }); 9 10 tape('filter.number.range -- detect', async t => { 11 t.plan(8); 12 t.notOk(range.detect(false), 'contains.detect doesn\'t trigger on false query'); 13 t.notOk(range.detect(null), 'contains.detect doesn\'t trigger on null query'); 14 t.notOk(range.detect(true), 'contains.detect doesn\'t trigger on true query'); 15 t.notOk(range.detect([]), 'contains.detect doesn\'t trigger on empty array query'); 16 t.notOk(range.detect({}), 'contains.detect doesn\'t trigger on empty object query'); 17 t.notOk(range.detect({ field: 'something' }), 'contains.detect doesn\'t trigger on termless query'); 18 t.notOk(range.detect({ term: 'something' }), 'contains.detect doesn\'t trigger on fieldless query'); 19 t.ok(range.detect({ field: 'hello', term_min: 1, term_max: 10, inclusive: 'both' }), 'contains.detect triggers on properly structured query'); 20 }); 21 22 tape('filter.number.range, both inclusive -- compile', async t => { 23 t.plan(6); 24 25 const extractor = range.compile({ field: 'age', term_min: 18, term_max: 21, inclusive: 'both' }); 26 t.equal(typeof extractor, 'function', 'range.compile returns a function'); 27 28 t.ok(extractor({ age: 20 }), 'finds term in range'); 29 t.ok(extractor({ age: 21 }), 'finds term in range'); 30 t.ok(extractor({ age: 18 }), 'finds term in range'); 31 t.notOk(extractor({ age: 17 }), 'doesn\'t find term in range'); 32 t.notOk(extractor({ age: 22 }), 'doesn\'t find term in range'); 33 }); 34 35 tape('filter.number.range, left inclusive -- compile', async t => { 36 t.plan(4); 37 38 const extractor = range.compile({ field: 'age', term_min: 18, term_max: 21, inclusive: 'left' }); 39 t.equal(typeof extractor, 'function', 'range.compile returns a function'); 40 41 t.ok(extractor({ age: 18 }), 'finds term in range'); 42 t.ok(extractor({ age: 20 }), 'finds term in range'); 43 t.notOk(extractor({ age: 21 }), 'doesn\'t find term in range'); 44 }); 45 46 tape('filter.number.range, right inclusive -- compile', async t => { 47 t.plan(4); 48 49 const extractor = range.compile({ field: 'age', term_min: 18, term_max: 21, inclusive: 'right' }); 50 t.equal(typeof extractor, 'function', 'range.compile returns a function'); 51 52 t.ok(extractor({ age: 20 }), 'finds term in range'); 53 t.ok(extractor({ age: 21 }), 'finds term in range'); 54 t.notOk(extractor({ age: 18 }), 'doesn\'t find term in range'); 55 });