diff --git a/test/generateQuestions.test.js b/test/generateQuestions.test.js index 7975ede17..9fb5fa91f 100644 --- a/test/generateQuestions.test.js +++ b/test/generateQuestions.test.js @@ -35,7 +35,6 @@ describe('collectMissingVariables', function() { rules = rawRules.map(enrichRule), situation = analyseTopDown(rules,"startHere")(stateSelector), result = collectMissingVariables()(stateSelector,situation) - expect(result).to.have.property('sum . evt . ko') }); diff --git a/test/mecanisms.test.js b/test/mecanisms.test.js index 1131b70b7..b18e38df2 100644 --- a/test/mecanisms.test.js +++ b/test/mecanisms.test.js @@ -6,26 +6,36 @@ import {expect} from 'chai' import {enrichRule} from '../source/engine/rules' -import {analyseSituation} from '../source/engine/traverse' +import {analyseTopDown} from '../source/engine/traverse' +import {collectMissingVariables} from '../source/engine/generateQuestions' import testBatteries from './load-mecanism-tests' - +import R from 'ramda' describe('Mécanismes', () => testBatteries.map( battery => battery.map(({exemples, nom, test}) => exemples && describe(test || 'Nom de test (propriété "test") manquant dans la variable contenant ces "exemples"', () => - exemples.map(({nom: testTexte, situation, 'valeur attendue': valeur}) => + exemples.map(({nom: testTexte, situation, 'valeur attendue': valeur, 'variables manquantes': expectedMissing}) => it(testTexte + '', () => { - let rules = battery.map(enrichRule), - state = situation || {}, - analysis = analyseSituation(rules, nom)(name => state[name]) - // console.log('JSON.stringify(analysis', JSON.stringify(analysis)) - expect(analysis) + let rules = [...battery, {nom: "startHereHack", formule: {somme: [nom]}}].map(enrichRule), + state = situation || {}, + stateSelector = name => state[name], + analysis = analyseTopDown(rules, "startHereHack")(stateSelector), + missing = collectMissingVariables()(stateSelector,analysis) + + // console.log('JSON.stringify(analysis', JSON.stringify(analysis)) + + expect(analysis.root) .to.have.property( 'nodeValue', valeur ) + + if (expectedMissing) { + expect(R.keys(missing)).to.eql(expectedMissing) + } + }) ) )) diff --git a/test/mécanismes/aiguillage-numérique.yaml b/test/mécanismes/aiguillage-numérique.yaml index c996f5f98..feebd429e 100644 --- a/test/mécanismes/aiguillage-numérique.yaml +++ b/test/mécanismes/aiguillage-numérique.yaml @@ -4,7 +4,7 @@ - nom: dégradation majeure -- nom: retenue sur dépot de garantie 1 +- nom: retenue sur dépot de garantie test: Aiguillage numérique simple formule: aiguillage numérique: @@ -36,7 +36,7 @@ - nom: montant caution format: € -- nom: retenue sur dépot de garantie 2 +- nom: deuxième retenue sur dépot de garantie test: Imbrication d'aiguillages numériques formule: aiguillage numérique: @@ -59,6 +59,13 @@ dégradation majeure: oui montant caution: 1200 valeur attendue: 0.10 + - nom: imbrication nulle + valeur attendue: null + variables manquantes: + - dégradation mineure + - dégradation majeure + - montant caution + # pouvoir tester les variables inconnues mais requises ?