mirror of
https://github.com/betagouv/mon-entreprise
synced 2025-02-09 05:15:02 +00:00
L'ordonnance n°2017-1389 du 22 septembre 2017 transforme le compte personnel de prévention de pénibilité (C3P) en compte professionnel de prévention (C2P).
121 lines
4.6 KiB
JavaScript
121 lines
4.6 KiB
JavaScript
import R from 'ramda'
|
|
import {expect} from 'chai'
|
|
import {rules as realRules, enrichRule} from '../source/engine/rules'
|
|
import {analyse, parseAll} from '../source/engine/traverse'
|
|
import {reduceSteps} from '../source/reducers'
|
|
|
|
import {byBranch, byName, cell, subCell} from '../source/components/ResultsGrid.js'
|
|
|
|
let tracker = {push: array => null}
|
|
|
|
describe('results grid', function() {
|
|
|
|
it('should collect branches', function() {
|
|
let fakeState = {}
|
|
let stateSelector = state => name => fakeState[name]
|
|
|
|
let rules = realRules.map(enrichRule),
|
|
reducer = reduceSteps(tracker, rules, stateSelector)
|
|
|
|
var step1 = reducer({foldedSteps: []},{type:'START_CONVERSATION', targetNames: ['salaire net']})
|
|
fakeState['contrat salarié . salaire de base'] = 2300
|
|
var step2 = reducer(step1,{type:'STEP_ACTION', name: 'fold', step: 'contrat salarié . salaire de base'})
|
|
|
|
let analysis = step2.analysis,
|
|
result = byBranch(analysis),
|
|
branches = R.keys(result)
|
|
|
|
expect(branches).to.have.lengthOf(4)
|
|
expect(branches).to.include("chômage")
|
|
expect(branches).to.include("santé")
|
|
expect(branches).to.include("retraite")
|
|
expect(branches).to.include("autre")
|
|
});
|
|
|
|
it('should collect branches with both targets', function() {
|
|
let fakeState = {}
|
|
let stateSelector = state => name => fakeState[name]
|
|
|
|
let rules = realRules.map(enrichRule),
|
|
reducer = reduceSteps(tracker, rules, stateSelector)
|
|
|
|
var step1 = reducer({foldedSteps: []},{type:'START_CONVERSATION', targetNames: ['salaire net', 'salaire total']})
|
|
fakeState['contrat salarié . salaire de base'] = 2300
|
|
var step2 = reducer(step1,{type:'STEP_ACTION', name: 'fold', step: 'contrat salarié . salaire de base'})
|
|
|
|
let analysis = step2.analysis,
|
|
result = byBranch(analysis),
|
|
branches = R.keys(result)
|
|
|
|
expect(branches).to.have.lengthOf(8)
|
|
expect(branches).to.include("chômage")
|
|
expect(branches).to.include("santé")
|
|
expect(branches).to.include("retraite")
|
|
expect(branches).to.include("logement")
|
|
expect(branches).to.include("famille")
|
|
expect(branches).to.include("autre")
|
|
expect(branches).to.include("transport")
|
|
expect(branches).to.include("formation")
|
|
});
|
|
|
|
it('should collect cells by name', function() {
|
|
let fakeState = {}
|
|
let stateSelector = state => name => fakeState[name]
|
|
|
|
let rules = realRules.map(enrichRule),
|
|
reducer = reduceSteps(tracker, rules, stateSelector)
|
|
|
|
var step1 = reducer({foldedSteps: []},{type:'START_CONVERSATION', targetNames: ['salaire net', 'salaire total']})
|
|
fakeState['contrat salarié . salaire de base'] = 2300
|
|
var step2 = reducer(step1,{type:'STEP_ACTION', name: 'fold', step: 'contrat salarié . salaire de base'})
|
|
|
|
let analysis = step2.analysis,
|
|
result = byBranch(analysis),
|
|
maladie = byName(result['santé']),
|
|
names = R.keys(maladie)
|
|
|
|
expect(names).to.have.lengthOf(5)
|
|
expect(names).to.include("contrat salarié . maladie")
|
|
expect(names).to.include("contrat salarié . ATMP")
|
|
expect(names).to.include("contrat salarié . complémentaire santé")
|
|
expect(names).to.include("contrat salarié . prévoyance obligatoire cadre")
|
|
expect(names).to.include("contrat salarié . médecine du travail")
|
|
});
|
|
|
|
it('should sum cells by branch and payer', function() {
|
|
let fakeState = {}
|
|
let stateSelector = state => name => fakeState[name]
|
|
|
|
let rules = realRules.map(enrichRule),
|
|
reducer = reduceSteps(tracker, rules, stateSelector)
|
|
|
|
var step1 = reducer({foldedSteps: []},{type:'START_CONVERSATION', targetNames: ['salaire net', 'salaire total']})
|
|
fakeState['contrat salarié . salaire de base'] = 2300
|
|
var step2 = reducer(step1,{type:'STEP_ACTION', name: 'fold', step: 'contrat salarié . salaire de base'})
|
|
|
|
let analysis = step2.analysis
|
|
|
|
expect(cell("retraite","salarié",analysis)).to.be.closeTo(257, 5)
|
|
expect(cell("autre","salarié",analysis)).to.be.closeTo(220, 5)
|
|
});
|
|
|
|
it('should access cell values', function() {
|
|
let fakeState = {}
|
|
let stateSelector = state => name => fakeState[name]
|
|
|
|
let rules = realRules.map(enrichRule),
|
|
reducer = reduceSteps(tracker, rules, stateSelector)
|
|
|
|
var step1 = reducer({foldedSteps: []},{type:'START_CONVERSATION', targetNames: ['salaire net', 'salaire total']})
|
|
fakeState['contrat salarié . salaire de base'] = 2300
|
|
var step2 = reducer(step1,{type:'STEP_ACTION', name: 'fold', step: 'contrat salarié . salaire de base'})
|
|
|
|
let analysis = step2.analysis,
|
|
result = byBranch(analysis),
|
|
maladie = byName(result['santé'])
|
|
|
|
expect(subCell(maladie,"contrat salarié . ATMP","salarié")).to.be.closeTo(0, 0.1)
|
|
expect(subCell(maladie,"contrat salarié . ATMP","employeur")).to.be.closeTo(54, 1)
|
|
});
|
|
|
|
});
|