import { map } from 'ramda' import { expect } from 'chai' import { rules, enrichRule, translateAll, findVariantsAndRecords } from '../source/engine/rules' let stateSelector = (state, name) => null describe('enrichRule', function() { it('should extract the type of the rule', function() { let rule = { nom: 'retraite', cotisation: {} } expect(enrichRule(rule)).to.have.property('type', 'cotisation') }) it('should load external data into the rule', function() { let data = { taux_versement_transport: { one: 'two' } } let rule = { nom: 'retraite', cotisation: {}, données: 'taux_versement_transport' } expect(enrichRule(rule, data)).to.have.deep.property('data', { one: 'two' }) }) it('should extract the dotted name of the rule', function() { let rule = { espace: 'contrat salarié', nom: 'CDD' } expect(enrichRule(rule)).to.have.property('name', 'CDD') expect(enrichRule(rule)).to.have.property( 'dottedName', 'contrat salarié . CDD' ) }) it('should render Markdown in sub-questions', function() { let rule = { nom: 'quoi', 'sous-question': '**wut**' } expect(enrichRule(rule)).to.have.property( 'subquestion', '
wut
\n' ) }) }) describe('rule checks', function() { it('most input rules should have defaults', function() { let rulesNeedingDefault = rules.filter( r => r.espace && !r.simulateur && (!r.formule || r.formule['une possibilité']) && r.defaultValue == null ) rulesNeedingDefault.map(r => console.log( 'cette règle, ', r.dottedName, 'devrait avoir une valeur par défaut' ) ) expect(rulesNeedingDefault).to.be.empty }) }) describe('translateAll', function() { it('should translate flat rules', function() { let rules = [{ "espace":"foo", "nom":"bar", "titre":"Titre", "description":"Description", "question":"Question", "sous-question":"Sous Question", }] let translations = { "foo . bar":{ "titre.en":"TITRE", "description.en":"DESC", "question.en":"QUEST", "sous-question.en":"SOUSQ", } } let result = translateAll(translations, map(enrichRule,rules)) expect(result[0]).to.have.property("titre","TITRE") expect(result[0]).to.have.property("description","DESC") expect(result[0]).to.have.property("question","QUEST") expect(result[0]).to.have.property("sous-question","SOUSQ") }) })