mon-entreprise/test/results.grid.test.js

119 lines
4.4 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("maladie")
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(6)
expect(branches).to.include("chômage")
expect(branches).to.include("maladie")
expect(branches).to.include("retraite")
expect(branches).to.include("logement")
expect(branches).to.include("famille")
expect(branches).to.include("autre")
});
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.maladie),
names = R.keys(maladie)
expect(names).to.have.lengthOf(4)
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é . cotisation pénibilité")
});
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(180, 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.maladie)
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)
});
});