mon-entreprise/test/contrôles.test.js

63 lines
1.6 KiB
JavaScript

import { expect } from 'chai'
import { enrichRule } from '../source/engine/rules'
import { analyseMany, parseAll } from '../source/engine/traverse'
describe('controls', function() {
let rawRules = [
{
nom: 'net',
formule: 'brut - cotisation'
},
{ nom: 'cotisation', formule: 235 },
{ nom: 'résident en France', formule: 'oui' },
{
nom: 'brut',
format: 'euro',
question: 'Quel est le salaire brut ?',
contrôles: [
{
si: 'brut < 300',
niveau: 'bloquant',
message:
'Malheureux, je crois que vous vous êtes trompé dans votre saisie.'
},
{
si: 'brut < 1000',
niveau: 'bloquant',
message: 'Toujours pas, nous avons des standards en France !'
},
{
si: 'brut < 1500',
niveau: 'avertissement',
message: 'Toujours pas, nous avons des standards en France !'
},
{
si: 'brut > 100000',
niveau: 'information',
message: 'Oulah ! Oulah !'
},
{
si: {
'toutes ces conditions': ['brut > 1000000', 'résident en France']
},
niveau: 'information',
message: 'Vous êtes un contribuable hors-pair !'
}
]
}
],
rules = rawRules.map(enrichRule),
parsedRules = parseAll(rules)
it('Should allow imbricated conditions', function() {
let situationGate = dottedName => ({ brut: 2000000 }[dottedName]),
{ controls } = analyseMany(parsedRules, ['net'])(situationGate)
expect(
controls.find(
({ message }) => message === 'Vous êtes un contribuable hors-pair !'
)
).to.exist
})
})