2018-08-16 08:09:20 +00:00
|
|
|
import { expect } from 'chai'
|
2018-09-24 16:27:43 +00:00
|
|
|
import Syso from '../source/engine/index'
|
2018-08-16 08:09:20 +00:00
|
|
|
import { propEq } from 'ramda'
|
2018-09-26 09:35:29 +00:00
|
|
|
import sasuRules from '../source/règles/sasu.yaml'
|
2018-08-16 08:09:20 +00:00
|
|
|
|
|
|
|
describe('library', function() {
|
|
|
|
it('should evaluate one target with no input data', function() {
|
|
|
|
let target = 'contrat salarié . salaire . net'
|
2018-09-26 15:47:15 +00:00
|
|
|
let value = Syso.evaluate(target, {
|
2018-08-16 08:09:20 +00:00
|
|
|
'contrat salarié': { salaire: { 'brut de base': 2300 } }
|
|
|
|
})
|
2018-10-01 15:47:20 +00:00
|
|
|
expect(value).to.be.within(1800, 1803)
|
2018-08-16 08:09:20 +00:00
|
|
|
})
|
2018-09-24 16:27:43 +00:00
|
|
|
|
|
|
|
it('should let the user replace the default rules', function() {
|
2018-09-25 17:22:32 +00:00
|
|
|
let rules = `
|
2018-09-24 16:27:43 +00:00
|
|
|
- nom: yo
|
2018-09-26 15:47:15 +00:00
|
|
|
formule: 200
|
2018-09-24 16:27:43 +00:00
|
|
|
- nom: ya
|
|
|
|
formule: yo + 1
|
2018-09-26 15:47:15 +00:00
|
|
|
- nom: yi
|
|
|
|
formule: yo + 2
|
2018-09-24 16:27:43 +00:00
|
|
|
`
|
|
|
|
|
2018-09-26 15:47:15 +00:00
|
|
|
let values = Syso.evaluate(['ya', 'yi'], {}, { base: rules })
|
2018-09-24 16:27:43 +00:00
|
|
|
|
2018-09-26 15:47:15 +00:00
|
|
|
expect(values[0]).to.equal(201)
|
|
|
|
expect(values[1]).to.equal(202)
|
2018-09-24 16:27:43 +00:00
|
|
|
})
|
2018-09-25 17:22:32 +00:00
|
|
|
it('should let the user add rules to the default ones', function() {
|
|
|
|
let rules = `
|
|
|
|
- nom: yo
|
|
|
|
formule: 1
|
|
|
|
- nom: ya
|
|
|
|
formule: contrat salarié . salaire . net + yo
|
|
|
|
`
|
|
|
|
|
2018-09-26 15:47:15 +00:00
|
|
|
let value = Syso.evaluate(
|
|
|
|
'ya',
|
2018-09-25 17:22:32 +00:00
|
|
|
{
|
|
|
|
'contrat salarié . salaire . brut de base': 2300
|
|
|
|
},
|
|
|
|
{ extra: rules }
|
|
|
|
)
|
|
|
|
|
2018-10-01 15:47:20 +00:00
|
|
|
expect(value).to.be.closeTo(1802, 1)
|
2018-09-25 17:22:32 +00:00
|
|
|
})
|
|
|
|
it('should let the user extend the rules constellation in a serious manner', function() {
|
2018-09-26 15:47:15 +00:00
|
|
|
let salaireTotal = Syso.evaluate(
|
|
|
|
'salaire total',
|
2018-09-25 17:22:32 +00:00
|
|
|
{
|
2018-09-26 13:42:16 +00:00
|
|
|
'chiffre affaires': 5000
|
2018-09-25 17:22:32 +00:00
|
|
|
},
|
2018-09-26 09:35:29 +00:00
|
|
|
{ extra: sasuRules }
|
2018-09-25 17:22:32 +00:00
|
|
|
)
|
|
|
|
|
2018-09-26 15:47:15 +00:00
|
|
|
console.log(salaireTotal)
|
|
|
|
let salaireNetAprèsImpôt = Syso.evaluate(
|
|
|
|
'contrat salarié . salaire . net après impôt',
|
|
|
|
{
|
|
|
|
'contrat salarié': { rémunération: { total: salaireTotal } }
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
console.log(salaireNetAprèsImpôt)
|
|
|
|
|
|
|
|
let revenuDisponible = Syso.evaluate(
|
|
|
|
'revenu disponible',
|
|
|
|
{
|
|
|
|
'net après impôt': salaireNetAprèsImpôt,
|
|
|
|
'chiffre affaires': 5000
|
|
|
|
},
|
|
|
|
{ extra: sasuRules }
|
|
|
|
)
|
|
|
|
console.log(revenuDisponible)
|
2018-09-25 17:22:32 +00:00
|
|
|
})
|
2018-08-16 08:09:20 +00:00
|
|
|
})
|