From ad883ea83a7516acdf42307b78219e8fd06bd5ea Mon Sep 17 00:00:00 2001 From: mama Date: Fri, 8 Dec 2017 12:03:46 +0100 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20de=20la=20lisibilit=C3=A9?= =?UTF-8?q?=20des=20tests=20de=20m=C3=A9canisme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/mecanisms.test.js | 96 +++++++++++++---------- test/mécanismes/aiguillage-numérique.yaml | 3 +- test/mécanismes/barème.yaml | 5 +- test/mécanismes/multiplication.yaml | 18 ++--- 4 files changed, 65 insertions(+), 57 deletions(-) diff --git a/test/mecanisms.test.js b/test/mecanisms.test.js index b1d2f78e0..f718f90c3 100644 --- a/test/mecanisms.test.js +++ b/test/mecanisms.test.js @@ -1,50 +1,66 @@ /* - Les mécanismes sont testés dans mécanismes/ comme le sont les variables directement dans la base YAML. - On y créée dans chaque fichier une base YAML autonome, dans laquelle intervient le mécanisme à tester, - puis on teste idéalement tous ses comportements sans en faire intervenir d'autres. + Les mécanismes sont testés dans mécanismes/ comme le sont les variables directement dans la base YAML. + On y créée dans chaque fichier une base YAML autonome, dans laquelle intervient le mécanisme à tester, + puis on teste idéalement tous ses comportements sans en faire intervenir d'autres. */ -import {expect} from 'chai' -import {enrichRule} from '../source/engine/rules' -import {analyse, parseAll} from '../source/engine/traverse' -import {collectMissingVariables} from '../source/engine/generateQuestions' -import testSuites from './load-mecanism-tests' -import R from 'ramda' +import { expect } from "chai" +import { enrichRule } from "../source/engine/rules" +import { analyse, parseAll } from "../source/engine/traverse" +import { collectMissingVariables } from "../source/engine/generateQuestions" +import testSuites from "./load-mecanism-tests" +import R from "ramda" // By luck this works as expected for both null and undefined, * but with different branches failing :O * let isFloat = n => Number(n) === n && n % 1 !== 0 -describe('Mécanismes', () => - testSuites.map( suite => - suite.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, 'variables manquantes': expectedMissing}) => - it(testTexte + '', () => { +describe("Mécanismes", () => + testSuites.map(suite => + suite.map( + ({ exemples, 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, + "variables manquantes": expectedMissing + }) => + it(testTexte == null ? "" : testTexte + "", () => { + let rules = parseAll( + suite + .map( + item => + item.test != null + ? R.assoc("nom", item.test, item) + : item + ) + .map(enrichRule) + ), + state = situation || {}, + stateSelector = name => state[name], + analysis = analyse(rules, test)(stateSelector), + missing = collectMissingVariables(analysis.targets), + target = analysis.targets[0] - let rules = parseAll(suite.map(enrichRule)), - state = situation || {}, - stateSelector = name => state[name], - analysis = analyse(rules, nom)(stateSelector), - missing = collectMissingVariables(analysis.targets), - target = analysis.targets[0] + // console.log('JSON.stringify(analysis', JSON.stringify(analysis)) + if (isFloat(valeur)) { + expect(target.nodeValue).to.be.closeTo(valeur, 0.001) + } else if (valeur !== undefined) { + expect(target).to.have.property("nodeValue", valeur) + } - if (isFloat(valeur)) { - expect(target.nodeValue).to.be.closeTo(valeur,0.001) - } - else if (valeur !== undefined) { - expect(target) - .to.have.property( - 'nodeValue', - valeur - ) - } - - if (expectedMissing) { - expect(R.keys(missing).sort()).to.eql(expectedMissing.sort()) - } - - }) + if (expectedMissing) { + expect(R.keys(missing).sort()).to.eql( + expectedMissing.sort() + ) + } + }) + ) ) - )) - ) -) + ) + )) diff --git a/test/mécanismes/aiguillage-numérique.yaml b/test/mécanismes/aiguillage-numérique.yaml index 2cdbe345b..4c1006450 100644 --- a/test/mécanismes/aiguillage-numérique.yaml +++ b/test/mécanismes/aiguillage-numérique.yaml @@ -36,8 +36,7 @@ - nom: montant caution format: € -- nom: deuxième retenue sur dépot de garantie - test: Imbrication d'aiguillages numériques +- test: Imbrication d'aiguillages numériques formule: aiguillage numérique: dégradation mineure: 5% diff --git a/test/mécanismes/barème.yaml b/test/mécanismes/barème.yaml index da6144578..6c12ed3dc 100644 --- a/test/mécanismes/barème.yaml +++ b/test/mécanismes/barème.yaml @@ -4,8 +4,7 @@ - nom: base format: € -- nom: premier barème - test: Barème en taux marginaux +- test: Barème en taux marginaux formule: barème: assiette: assiette @@ -17,7 +16,7 @@ taux: 0% exemples: - - nom: exemple + - nom: situation: assiette: 3000 base: 5000 diff --git a/test/mécanismes/multiplication.yaml b/test/mécanismes/multiplication.yaml index a5d2a48d0..96dba0c20 100644 --- a/test/mécanismes/multiplication.yaml +++ b/test/mécanismes/multiplication.yaml @@ -1,8 +1,7 @@ - nom: mon assiette format: € -- nom: cotisation - test: multiplication simple +- test: multiplication simple formule: multiplication: assiette: mon assiette @@ -18,8 +17,7 @@ mon assiette: 333.33 valeur attendue: 9.999 -- nom: cotisation 2 - test: multiplication à taux flottant +- test: multiplication à taux flottant formule: multiplication: assiette: 300 @@ -33,8 +31,7 @@ - nom: mon plafond format: € -- nom: cotisation 3 - test: multiplication plafonnée +- test: multiplication plafonnée formule: multiplication: assiette: mon assiette @@ -56,8 +53,7 @@ - nom: mon facteur format: nombre -- nom: cotisation 4 - test: multiplication à facteur +- test: multiplication à facteur formule: multiplication: assiette: 100 @@ -71,8 +67,7 @@ -- nom: cotisation 5 - test: multiplication complète +- test: multiplication complète formule: multiplication: assiette: mon assiette @@ -92,8 +87,7 @@ # TODO implémenter les taux variables # - nom: mon taux # format: pourcentage -# - nom: cotisation -# test: multiplication simple +# - test: multiplication simple # formule: # multiplication: # assiette: mon assiette