json-logic-js-graphql
Version:
Graphql query support for json-logic-js using Lodash methods
443 lines (438 loc) • 10.1 kB
JavaScript
var _chai = require('chai')
var _index = require('./index.js')
var _mocha = require('mocha')
;(0, _mocha.describe)('Custom operators', function () {
;(0, _mocha.describe)('Custom', function () {
;(0, _mocha.it)('nonZeroMin', function () {
var logic = {
_nonZeroMin: [[100, 0, 30]],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(30)
})
;(0, _mocha.it)('nonZeroMax', function () {
var logic = {
_nonZeroMax: [[100, 0, 30]],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(100)
})
})
})
;(0, _mocha.describe)('Moment operators', function () {
;(0, _mocha.describe)('Dates', function () {
;(0, _mocha.it)('_isPastDate', function () {
var rules = {
_isPastDate: [
{
var: 'date',
},
],
}
var data = {
date: '2020-10-01',
}
;(0, _chai.expect)(_index.jsonLogic.apply(rules, data)).to.be.equal(true)
})
;(0, _mocha.it)('_isFutureDate', function () {
var rules = {
_isFutureDate: [
{
var: 'date',
},
],
}
var data = {
date: '2080-10-01',
}
;(0, _chai.expect)(_index.jsonLogic.apply(rules, data)).to.be.equal(true)
})
;(0, _mocha.it)('_gteDate', function () {
var rules = {
_gteDate: [
[
{
var: 'from',
},
{
var: 'to',
},
],
[364, 'days'],
],
}
var data = {
from: '2020-10-01',
to: '2021-10-01',
}
;(0, _chai.expect)(_index.jsonLogic.apply(rules, data)).to.be.equal(true)
})
;(0, _mocha.it)('_gtDate', function () {
var rules = {
_lteDate: [
[
{
var: 'from',
},
{
var: 'to',
},
],
[364, 'days'],
],
}
var data = {
from: '2020-10-01',
to: '2020-11-01',
}
;(0, _chai.expect)(_index.jsonLogic.apply(rules, data)).to.be.equal(true)
})
;(0, _mocha.it)('_lteDate', function () {
var rules = {
_lteDate: [
[
{
var: 'from',
},
{
var: 'to',
},
],
[364, 'days'],
],
}
var data = {
from: '2020-10-01',
to: '2020-11-01',
}
;(0, _chai.expect)(_index.jsonLogic.apply(rules, data)).to.be.equal(true)
})
;(0, _mocha.it)('_ltDate', function () {
var rules = {
_ltDate: [
[
{
var: 'from',
},
{
var: 'to',
},
],
[364, 'days'],
],
}
var data = {
from: '2020-10-01',
to: '2020-11-01',
}
;(0, _chai.expect)(_index.jsonLogic.apply(rules, data)).to.be.equal(true)
})
;(0, _mocha.it)('_eqDate', function () {
var rules = {
_eqDate: [
[
{
var: 'from',
},
{
var: 'to',
},
],
[1, 'days'],
],
}
var data = {
from: '2020-10-01',
to: '2020-10-02',
}
;(0, _chai.expect)(_index.jsonLogic.apply(rules, data)).to.be.equal(true)
})
})
})
;(0, _mocha.describe)('Lodash operators', function () {
;(0, _mocha.describe)('Arrays', function () {})
;(0, _mocha.describe)('Collection', function () {})
;(0, _mocha.describe)('Date', function () {})
;(0, _mocha.describe)('Function', function () {})
;(0, _mocha.describe)('Lang', function () {
;(0, _mocha.it)('isEqual', function () {
var logicTrue = {
_isEqual: [1, 1],
}
var logicFalse = {
_isEqual: ['foo', 'bar'],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logicTrue)).to.be.equal(true)
;(0, _chai.expect)(_index.jsonLogic.apply(logicFalse)).to.be.equal(false)
})
;(0, _mocha.it)('_neq', function () {
var logicTrue = {
_neq: ['foo', 'bar'],
}
var logicFalse = {
_neq: [1, 1],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logicTrue)).to.be.equal(true)
;(0, _chai.expect)(_index.jsonLogic.apply(logicFalse)).to.be.equal(false)
})
})
;(0, _mocha.describe)('Math', function () {
;(0, _mocha.it)('add', function () {
var logic = {
_add: [2, 3],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(5)
})
;(0, _mocha.it)('ceil', function () {
var logic = {
_ceil: [4.006],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(5)
})
;(0, _mocha.it)('divide', function () {
var logic = {
_divide: [6, 3],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(2)
})
;(0, _mocha.it)('floor', function () {
var logic = {
_floor: [4.906],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(4)
})
;(0, _mocha.it)('max', function () {
var logic = {
_max: [[2, 5, 6, 3]],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(6)
})
;(0, _mocha.it)('maxBy', function () {
var data = [
{
n: 4,
},
{
n: 2,
},
{
n: 8,
},
{
n: 6,
},
]
var logic1 = {
_maxBy: [
{
var: '',
},
'n',
],
}
var logic2 = {
_maxBy: [
{
var: '',
},
{
_property: 'n',
},
],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic1, data)).to.be.equal(
data[2]
)
;(0, _chai.expect)(_index.jsonLogic.apply(logic2, data)).to.be.equal(
data[2]
)
})
;(0, _mocha.it)('mean', function () {
var logic = {
_mean: [[2, 5, 6, 3]],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(4)
})
;(0, _mocha.it)('meanBy', function () {
var data = [
{
n: 4,
},
{
n: 2,
},
{
n: 8,
},
{
n: 6,
},
]
var logic1 = {
_meanBy: [
{
var: '',
},
'n',
],
}
var logic2 = {
_meanBy: [
{
var: '',
},
{
_property: 'n',
},
],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic1, data)).to.be.equal(5)
;(0, _chai.expect)(_index.jsonLogic.apply(logic2, data)).to.be.equal(5)
})
;(0, _mocha.it)('min', function () {
var logic = {
_min: [[2, 5, 6, 3]],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(2)
})
;(0, _mocha.it)('minBy', function () {
var data = [
{
n: 4,
},
{
n: 2,
},
{
n: 8,
},
{
n: 6,
},
]
var logic1 = {
_minBy: [
{
var: '',
},
'n',
],
}
var logic2 = {
_minBy: [
{
var: '',
},
{
_property: 'n',
},
],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic1, data)).to.be.equal(
data[1]
)
;(0, _chai.expect)(_index.jsonLogic.apply(logic2, data)).to.be.equal(
data[1]
)
})
;(0, _mocha.it)('multiply', function () {
var logic = {
_multiply: [2, 3],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(6)
})
;(0, _mocha.it)('round', function () {
var logic1 = {
_round: [4.006],
}
var logic2 = {
_round: [4.906],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic1)).to.be.equal(4)
;(0, _chai.expect)(_index.jsonLogic.apply(logic2)).to.be.equal(5)
})
;(0, _mocha.it)('multiply', function () {
var logic = {
_multiply: [2, 3],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(6)
})
;(0, _mocha.it)('subtract', function () {
var logic = {
_subtract: [2, 3],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(-1)
})
;(0, _mocha.it)('sum', function () {
var logic = {
_sum: [[2, 3]],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic)).to.be.equal(5)
})
;(0, _mocha.it)('sumBy', function () {
var data = [
{
n: 4,
},
{
n: 2,
},
{
n: 8,
},
{
n: 6,
},
]
var logic1 = {
_sumBy: [
{
var: '',
},
'n',
],
}
var logic2 = {
_sumBy: [
{
var: '',
},
{
_property: 'n',
},
],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic1, data)).to.be.equal(20)
;(0, _chai.expect)(_index.jsonLogic.apply(logic2, data)).to.be.equal(20)
})
})
;(0, _mocha.describe)('Number', function () {})
;(0, _mocha.describe)('Object', function () {})
;(0, _mocha.describe)('String', function () {})
;(0, _mocha.describe)('Util', function () {
;(0, _mocha.it)('property', function () {
var data = [
{
a: {
b: 2,
},
},
{
a: {
b: 1,
},
},
]
var logic = {
_sumBy: [
{
var: '',
},
{
_property: 'a.b',
},
],
}
;(0, _chai.expect)(_index.jsonLogic.apply(logic, data)).to.be.equal(3)
})
})
})