💚 répare les tests
parent
bfac041bf2
commit
599212b378
|
@ -44,15 +44,18 @@ export let evaluateNode = (cache, situationGate, parsedRules, node) => {
|
|||
}
|
||||
const sameUnitValues = (explanation, contextRule, mecanismName) => {
|
||||
const firstNodeWithUnit = explanation.find(node => !!node.unit)
|
||||
if (!firstNodeWithUnit) {
|
||||
return [undefined, explanation.map(({ nodeValue }) => nodeValue)]
|
||||
}
|
||||
const values = explanation.map(node => {
|
||||
try {
|
||||
return convertNodeToUnit(firstNodeWithUnit.unit, node).nodeValue
|
||||
return convertNodeToUnit(firstNodeWithUnit?.unit, node).nodeValue
|
||||
} catch (e) {
|
||||
typeWarning(
|
||||
contextRule,
|
||||
`Dans le mécanisme ${mecanismName}, les unités des éléments suivants sont incompatibles entre elles : \n\t\t${node.name ||
|
||||
node.rawNode}\n\t\t${firstNodeWithUnit.name ||
|
||||
firstNodeWithUnit.rawNode}'`,
|
||||
`Dans le mécanisme ${mecanismName}, les unités des éléments suivants sont incompatibles entre elles : \n\t\t${node?.name ||
|
||||
node?.rawNode}\n\t\t${firstNodeWithUnit?.name ||
|
||||
firstNodeWithUnit?.rawNode}'`,
|
||||
e
|
||||
)
|
||||
return node.nodeValue
|
||||
|
|
|
@ -7,7 +7,7 @@ const colors = {
|
|||
'toutes ces conditions': '#3498db',
|
||||
composantes: '#3498db',
|
||||
variations: '#FF9800',
|
||||
complément: '#795548',
|
||||
'taux progressif': '#795548',
|
||||
barème: '#607D8B',
|
||||
grille: '#AD1457'
|
||||
}
|
||||
|
|
|
@ -328,7 +328,7 @@ contrat salarié . CDD . contrat jeune vacances:
|
|||
description.fr: >-
|
||||
Aussi appelé CDD vendanges. Contrat conclu avec un jeune pendant ses
|
||||
vacances scolaires ou universitaires.
|
||||
note.en: '[automatic] That''s not a reason for a fixed-term contract.'
|
||||
note.en: "[automatic] That's not a reason for a fixed-term contract."
|
||||
note.fr: Ce n'est pas un motif de CDD.
|
||||
question.en: Is it a young holiday contract?
|
||||
question.fr: Est-ce un contrat jeune vacances ?
|
||||
|
@ -706,7 +706,7 @@ contrat salarié . aides employeur:
|
|||
France. Découvrez-les sur le [portail
|
||||
officiel](http://www.aides-entreprises.fr).
|
||||
résumé.en: Deferred aids available to the employer.
|
||||
résumé.fr: 'Pour l''employeur, différées dans le temps'
|
||||
résumé.fr: "Pour l'employeur, différées dans le temps"
|
||||
titre.en: deferred employer aids
|
||||
titre.fr: aides à l'embauche
|
||||
contrat salarié . aides employeur . aide à l'embauche d'apprentis:
|
||||
|
@ -798,7 +798,7 @@ contrat salarié . apprentissage . diplôme préparé . niveau supérieur au bac
|
|||
titre.fr: Diplôme d'un niveau supérieur au bac
|
||||
contrat salarié . assiette CSG et CRDS:
|
||||
note.en: '[automatic] This plate is complex, this version is only a simplification.'
|
||||
note.fr: 'Cette assiette est complexe, cette version n''est qu''une simplification.'
|
||||
note.fr: "Cette assiette est complexe, cette version n'est qu'une simplification."
|
||||
titre.en: CSG and CRDS base
|
||||
titre.fr: assiette CSG et CRDS
|
||||
contrat salarié . assiette CSG et CRDS . assiette abattue:
|
||||
|
@ -993,12 +993,12 @@ contrat salarié . convention collective:
|
|||
Néanmoins, cela permet d'obtenir une première estimation, plus précise
|
||||
que le régime général.
|
||||
question.en: 'Which "convention collective" is applicable to the company ? [beta] '
|
||||
question.fr: 'Quelle convention collective est applicable à l''entreprise ? [beta] '
|
||||
question.fr: "Quelle convention collective est applicable à l'entreprise ? [beta] "
|
||||
titre.en: convention collective
|
||||
titre.fr: convention collective
|
||||
contrat salarié . convention collective . HCR:
|
||||
description.en: 'The company is a hotel, café, restaurant or similar.'
|
||||
description.fr: 'L''entreprise est un hôtel, café, restaurant ou assimilé.'
|
||||
description.fr: "L'entreprise est un hôtel, café, restaurant ou assimilé."
|
||||
titre.en: 'hotels, cafés restaurants HCR (beta)'
|
||||
titre.fr: 'hôtels, cafés restaurants HCR (beta)'
|
||||
contrat salarié . convention collective . HCR . majoration heures supplémentaires:
|
||||
|
@ -1566,7 +1566,7 @@ contrat salarié . frais professionnels . titres-restaurant . taux participation
|
|||
description.fr: >-
|
||||
Part du titre-restaurant payée par l'employeur. Doit être de 50% minimum et
|
||||
de 60% maximum.
|
||||
question.en: '[automatic] What is the employer''s paid portion?'
|
||||
question.en: "[automatic] What is the employer's paid portion?"
|
||||
question.fr: Quelle est la participation de l'employeur ?
|
||||
suggestions.50%.en: '[automatic] 50%'
|
||||
suggestions.50%.fr: 50%
|
||||
|
@ -1972,7 +1972,7 @@ contrat salarié . réduction générale . assiette:
|
|||
titre.fr: Assiette de la réduction générale
|
||||
contrat salarié . réduction générale . assiette . part de la cotisation ATMP:
|
||||
note.en: '[automatic] In practice, the ATMP is always higher than 0.78%.'
|
||||
note.fr: 'En pratique, l''ATMP est toujours supérieure à 0.78%'
|
||||
note.fr: "En pratique, l'ATMP est toujours supérieure à 0.78%"
|
||||
titre.en: share of ATMP contribution
|
||||
titre.fr: part de la cotisation ATMP
|
||||
contrat salarié . réduction générale . multiplicateur:
|
||||
|
@ -3692,7 +3692,7 @@ dirigeant . rattachement CIPAV:
|
|||
note.en: >-
|
||||
[automatic] for the time being, we have only retained the CIPAV for the
|
||||
calculations.
|
||||
note.fr: 'pour l''instant, nous n''avons retenu que la CIPAV pour les calculs'
|
||||
note.fr: "pour l'instant, nous n'avons retenu que la CIPAV pour les calculs"
|
||||
titre.en: CIPAV attachment
|
||||
titre.fr: rattachement CIPAV
|
||||
dirigeant . rattachement CIPAV . retraite complémentaire:
|
||||
|
@ -4022,7 +4022,7 @@ entreprise . catégorie d'activité . restauration ou hébergement:
|
|||
titre.fr: restauration ou hébergement
|
||||
entreprise . catégorie d'activité . service ou vente:
|
||||
question.en: 'Is it a service activity, or the purchase and sale of goods?'
|
||||
question.fr: 'Est-ce une activité de prestation de service, ou de l''achat-vente de biens ?'
|
||||
question.fr: "Est-ce une activité de prestation de service, ou de l'achat-vente de biens ?"
|
||||
titre.en: service or sale
|
||||
titre.fr: service ou vente
|
||||
entreprise . catégorie d'activité . service ou vente . service:
|
||||
|
@ -4141,7 +4141,7 @@ entreprise . chiffre d'affaires minimum:
|
|||
titre.en: Minimum turnover
|
||||
titre.fr: chiffre d'affaires minimum
|
||||
entreprise . date de création:
|
||||
contrôles.0.en: '[automatic] We can''t see that far into the future'
|
||||
contrôles.0.en: "[automatic] We can't see that far into the future"
|
||||
contrôles.0.fr: Nous ne pouvons voir aussi loin dans le futur
|
||||
contrôles.1.en: >-
|
||||
[automatic] This is a very old company! Are you sure you didn't make a
|
||||
|
@ -4358,7 +4358,7 @@ entreprise . établissement bancaire:
|
|||
L'entreprise est un établissement bancaire, financier ou d'assurance. Elle
|
||||
est non assujettie à la TVA.
|
||||
question.en: 'Is it a banking, financial or insurance institution?'
|
||||
question.fr: 'S''agit-il d''un établissement bancaire, financier, d''assurance ?'
|
||||
question.fr: "S'agit-il d'un établissement bancaire, financier, d'assurance ?"
|
||||
titre.en: banking institution
|
||||
titre.fr: établissement bancaire
|
||||
impôt:
|
||||
|
|
|
@ -18,8 +18,8 @@ describe('conversation', function() {
|
|||
{ nom: 'top . startHere', formule: { somme: ['a', 'b'] } },
|
||||
{ nom: 'top . a', formule: 'aa' },
|
||||
{ nom: 'top . b', formule: 'bb' },
|
||||
{ nom: 'top . aa', question: '?', titre: 'a' },
|
||||
{ nom: 'top . bb', question: '?', titre: 'b' }
|
||||
{ nom: 'top . aa', question: '?', titre: 'a', unité: '€' },
|
||||
{ nom: 'top . bb', question: '?', titre: 'b', unité: '€' }
|
||||
],
|
||||
rules = rawRules.map(enrichRule),
|
||||
state = merge(baseState, {
|
||||
|
@ -40,9 +40,9 @@ describe('conversation', function() {
|
|||
{ nom: 'top . a', formule: 'aa' },
|
||||
{ nom: 'top . b', formule: 'bb' },
|
||||
{ nom: 'top . c', formule: 'cc' },
|
||||
{ nom: 'top . aa', question: '?', titre: 'a' },
|
||||
{ nom: 'top . bb', question: '?', titre: 'b' },
|
||||
{ nom: 'top . cc', question: '?', titre: 'c' }
|
||||
{ nom: 'top . aa', question: '?', titre: 'a', unité: '€' },
|
||||
{ nom: 'top . bb', question: '?', titre: 'b', unité: '€' },
|
||||
{ nom: 'top . cc', question: '?', titre: 'c', unité: '€' }
|
||||
],
|
||||
rules = rawRules.map(enrichRule)
|
||||
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
ma cotisation:
|
||||
unité: €
|
||||
|
||||
Complément:
|
||||
formule:
|
||||
complément:
|
||||
cible: ma cotisation
|
||||
montant: 100
|
||||
|
||||
exemples:
|
||||
- nom:
|
||||
situation:
|
||||
ma cotisation: 33
|
||||
valeur attendue: 67
|
||||
|
||||
autre cotisation:
|
||||
unité: €
|
||||
|
||||
Complément à composantes:
|
||||
formule:
|
||||
complément:
|
||||
composantes:
|
||||
- nom: A
|
||||
cible: ma cotisation
|
||||
montant: 100
|
||||
- nom: B
|
||||
cible: autre cotisation
|
||||
montant: 200
|
||||
|
||||
exemples:
|
||||
- nom:
|
||||
situation:
|
||||
ma cotisation: 33
|
||||
autre cotisation: 133
|
||||
valeur attendue: 134
|
|
@ -294,41 +294,6 @@ describe('analyse with mecanisms', function() {
|
|||
).to.have.property('nodeValue', 3200)
|
||||
})
|
||||
|
||||
it('should handle complements', function() {
|
||||
let rawRules = [
|
||||
{ nom: 'top' },
|
||||
{
|
||||
nom: 'top . startHere',
|
||||
formule: { complément: { cible: 'dix', montant: 93 } }
|
||||
},
|
||||
{ nom: 'top . dix', formule: 17 }
|
||||
],
|
||||
rules = parseAll(rawRules.map(enrichRule))
|
||||
expect(
|
||||
analyse(rules, 'startHere')(stateSelector).targets[0]
|
||||
).to.have.property('nodeValue', 93 - 17)
|
||||
})
|
||||
|
||||
it('should handle components in complements', function() {
|
||||
let rawRules = [
|
||||
{ nom: 'top' },
|
||||
{
|
||||
nom: 'top . startHere',
|
||||
formule: {
|
||||
complément: {
|
||||
cible: 'dix',
|
||||
composantes: [{ montant: 93 }, { montant: 93 }]
|
||||
}
|
||||
}
|
||||
},
|
||||
{ nom: 'top . dix', formule: 17 }
|
||||
],
|
||||
rules = parseAll(rawRules.map(enrichRule))
|
||||
expect(
|
||||
analyse(rules, 'startHere')(stateSelector).targets[0]
|
||||
).to.have.property('nodeValue', 2 * (93 - 17))
|
||||
})
|
||||
|
||||
it('should handle filtering on components', function() {
|
||||
let rawRules = [
|
||||
{ nom: 'top' },
|
||||
|
|
Loading…
Reference in New Issue