Commit Graph

669 Commits (5901f589d6706d748c47375e81ed613be8c2ad8f)

Author SHA1 Message Date
Maxime Quandalle 1e7730dd25
Snapshot testing
Ajout de tests de non-regressions des calculs afin d'éviter de déployer
silencieusement des effets de bord non-désirés dans les règles de calculs.

J'ai ajouté Jest pour sa fonction de snapshot testing qui est
particulièrement adaptée pour ce type de cas (voir #717). J'ai essayé
avec mocha-snapshot sans succès.

J'ai eu un petit peu de mal à configurer Jest, car il n'est pas possible
de ré-utiliser la configuration Webpack, qu'il faut alors dupliquer. C'est
pourquoi j'ai limité l'utilisation de Jest aux seuls tests de snapshot.
À voir s'il y a un intérêt à migrer les tests Mocha vers Jest ultérieurement.

Fixes #717
2019-10-22 10:35:31 +02:00
Maxime Quandalle 9be4ff0ca3
⚙️ Support des unités dans les formules litérales
Implémentation de #730
2019-10-17 15:04:06 +02:00
Maxime Quandalle f67098a29b
🐛 Serialisation d'une unité nulle
Corrige #737
2019-10-17 09:33:00 +02:00
Maxime Quandalle 6440b3fad4
Test de la traduction et pluralisation des unités
Implémentés dans 139ca46
2019-10-17 09:33:00 +02:00
Maxime Quandalle bcb251923c
🎨 Meilleur affichage des multiplicateurs
Affichage des multiplicateurs directement au niveau des tranches et
supprime l'affichage du label "multiplicateur" qui était difficile à
comprendre.

Ajout d'un attribut de règle "acronyme", utilisé pour afficher un nom de
règle plus court au niveau des tranches d'un barème.
2019-10-17 09:33:00 +02:00
Maxime Quandalle dccf41e31b
🎨 Meilleur affichage du taux moyen
Affichage du "%" dans l'unité calculée et renomme "taux final" en "taux moyen"
2019-10-17 09:32:15 +02:00
Maxime Quandalle af79eb01fd
🐛 Coquille orthographique 2019-10-16 12:05:01 +02:00
Maxime Quandalle 139ca46ad1
⚙️ Traduction des unités
Gestion du pluriel (1 jour, 2 jours) et de la traduction (3 days).

Fixes #729
2019-10-13 20:36:22 +02:00
Maxime Quandalle 1ccaf94a1c
⚙️ Nouvelle syntaxe de définition publicodes
* Définition à partir du nom complet en notation pointée (plutôt que
  comme deux attributs indépendants "name" et "espace")
* Structure de données de premier niveau "dictionnaire" plutôt que liste,
  s'aligne mieux avec notre contrainte d'unicité des noms
* Possibilité de définir les règles à partir d'une liste dans les tests,
  dans ce cas il ne faut plus utiliser l'attribut "espace" mais renseigner
  directement la notation pointée dans le "nom".
2019-10-13 11:46:29 +02:00
Maxime Quandalle de3d42d188 Ajout de tests unitaires sur le formatage des valeurs 2019-10-10 14:38:44 +02:00
Maxime Quandalle c3b465bdef Améliore le formatage des montants en euro
Fixes #725
2019-10-10 14:38:44 +02:00
Maxime Quandalle 545e1cef69
Merge pull request #724 from betagouv/smallthings-max
Lien vers les releases et formatage des constantes dans la documentation
2019-10-10 13:26:39 +02:00
Maxime Quandalle e0e1e97de9
Ne pas arrondir les constantes dans la documentation
C'était perturbant d'afficher un taux à 0,03% alors que la valeur utilisée
est 0,024%
2019-10-10 11:58:31 +02:00
Mael 0eba339309 La librairie prend la notation pointée en entrée 2019-10-07 16:38:29 +02:00
Maxime Quandalle fa5157d6ba
Ajout d'une option pour retourner seulement le taux d'un barème linéaire
Option analogue à celle déjà disponible sur "barème continu"
2019-09-27 17:04:30 +02:00
Maxime Quandalle 8daa80974c
🐛 Corrige l'unité affichée dans le résultat des barèmes 2019-09-27 12:30:17 +02:00
Maxime Quandalle 5e5933d35d
Simplification de Engine/format
getFormatersFromUnit n'est plus utilisé depuis 5879c9bc
2019-09-27 11:36:15 +02:00
Maxime Quandalle f0f2123924
Revert "Simplification de Engine/format"
This reverts commit 3971496e28.
2019-09-26 10:06:46 +02:00
Maxime Quandalle 3971496e28
Simplification de Engine/format
getFormatersFromUnit n'est plus utilisé depuis 5879c9bc
2019-09-26 09:58:14 +02:00
Maxime Quandalle 5879c9bcf5
Utilise NumberFormat pour les Input des questions
Meilleure gestion du formatage (séparateur des milliers et décimal) et
début de convergence entre Input.js et CurrencyInput.js
2019-09-25 17:29:02 +02:00
Maxime Quandalle 0fcade76e1
Formatage des nombres dans les réponses aux questions
Fixes #683
2019-09-25 17:10:02 +02:00
Maxime Quandalle 579a385b41
Regroupe les fonctions de formatage
Par ailleurs ce commit formate les taux les tableaux des barèmes linéaires
2019-09-25 17:09:59 +02:00
Maxime Quandalle c418a63d06
🎨 Change le symbole de la multiplication 2019-09-25 15:00:03 +02:00
Johan Girod d95a5b7a34
🐛 corrige l'affichage de la fiche de paie 2019-09-25 10:01:34 +02:00
Johan Girod d1f9ef383b
🎨 améliore l'affichage des valeurs négatives 2019-09-25 10:01:34 +02:00
Johan Girod 33cc92a397
⚙️ ajoute l'opération unaire de négation à la grammaire 2019-09-25 10:01:33 +02:00
Maxime Quandalle dbbb67ee7f
Ajout du lint pour les hooks React
Comme recommandé dans la documentation des hooks React, ajout des deux
linters suivants : react-hooks/rules-of-hooks et react-hooks/exhaustive-deps

Mise à jour des composants, en particulier les useEffect pour y spécifier
toutes les dépendances.
2019-09-17 12:54:54 +02:00
Maxime Quandalle 3fbd94bc65
🔥 Suppression de redux-form
Supprime aussi redux-batched-action. Le code résultant est plus concis
(alors que l'on supprime une dépendance !), et plus clair car il y a moins
d'indirections pour se conformer aux API de redux-form.
2019-09-17 12:54:18 +02:00
Johan Girod 59d4054e5d
ajoute des tests pour les expressionsé 2019-09-13 10:23:55 +02:00
Johan Girod 28d70b44d2
🔨 remplace 'auto entrepreneur' par 'auto-entrepreneur' 2019-09-13 10:23:55 +02:00
Johan Girod b2d0d4624a
🐎 améliore la performance du parsing
A peu près ~50% de gagné lors du parsing
Problème : long temps de blocage de l'UI lors du premier parsing des règles

Il reste encore quelques bugs
2019-09-13 10:23:55 +02:00
Johan Girod a60d86a6d5
remove unecessary abstraction: rewriteNode 2019-09-13 10:23:55 +02:00
Maxime Quandalle 0663c97204 Utilisation du hook useTranslation de react-i18next
Suppression de notre composant withLanguage qui rajoutait une abstraction
inutile.

Note: de nombreux appels à withTranslation et withLanguage était inutile
car le composant augmenté n'utilisait pas les paramètres fournis (language, t, i18n).
L'utilisation des hooks nous permet de mieux gérer le code mort, car il s'agit
de simples variables dont le non-usage est détecté par l'analyse statique.
2019-09-11 11:17:23 +02:00
Maxime Quandalle 6ea5dd0870 Migration de React "class" à "function"
Le but de la refacto est de généraliser l'utilisation des hook

Nombre de composants convertis: 52
Nombre de composants restants: 12

Il est possible de compter les composants class restants en utilisant
grep "render()"

L'occasion aussi de remplacer la dernière occurence de UNSAFE_componentWillMount
2019-09-11 11:17:23 +02:00
Maxime Quandalle a1b99fdc64 Suppression des do-expression
Il s'agit d'une fonctionnalité non standard de JavaScript qui est peu
utilisée dans la base de code. Ajoute de la complexité pour les nouveaux
développeurs (configuration spécifique de l'environnement de dév) pour
trop peu de bénéfices.
2019-09-11 11:17:23 +02:00
Maxime Quandalle 4e4caab3da ⚙️ Ne pas afficher les fonctions désactivées
TODO: Mettre à jour immédiatement la liste des questions suivantes (QuickLinks) ?
2019-09-09 11:33:47 +02:00
Maxime Quandalle 01bb90e61f 🔨 Amélioration du support des stages
- Ajout d'un avertissement (le stage n'est pas un contrat de travail)
- Ajout des traductions
- D'avantage d'utilisation de "rend non applicable"
- Une modification de parentDependency pour prendre un compte que
  "contrat stage" est maintenant un enum CDI | CDD | Stage plutôt qu'un
  boolean true | false.
2019-09-09 11:33:47 +02:00
Maxime Quandalle aa36b1c481 🔨 Type de contrat à choix multiple
Pour l'instant les choix sont CDI, CDD, ou Stage.

Modification du moteur concernant la désactivations des règles spécifiques
au CDD (la logique précédente nécessitait que `contrat . salarié . cdd`
soit une question, elle fonctionne maintenant avec une formule)
2019-09-09 11:33:47 +02:00
Maxime Quandalle 461d789535
🐛 Unité de l'impôt sur le revenu
Était affiché en pourcentage au lieu d'euros depuis a30e0a86
Prise en compte de l'unité dans le mécanisme allègement
2019-09-06 16:23:26 +02:00
Johan Girod 02410f61b9
🎨 enlève le hover entrée
Lorsque l'on aura une navigation au clavier complète et fonctionnelle, on pourra préciser tous les raccourci via une page dédiée. En attendant, inutile de polluer l'interface
2019-09-06 15:31:17 +02:00
Johan Girod 37a3f5a139
🔨 meilleure gestion de l'ACRE / année de création
- On utilise la date de création avant 2019 / après 2019 pour savoir si la profession libérale est rattachée à la CIPAV
- On pose directement la question de l'ACRE, ce qui permet de ne pas faire d'approximation par défaut.
2019-09-06 15:31:17 +02:00
Maxime Quandalle 6344d2f2e1
Amélioration des pages de documentations pour rend non applicable
- ajout des traductions
- ajout d'une notice "désactivée par" quand une règle est désactivée
  par un régime d'exception actif
2019-09-04 09:14:28 +02:00
Maxime Quandalle 1ffb97c2f6
Renomme "désactive" en "rend non applicable"
Ajout de tests, amélioration de la doc
2019-09-03 22:45:54 +02:00
Maxime Quandalle 89f370b182
Ajout d'une ruleProp "désactive" 2019-09-03 22:45:48 +02:00
Johan Girod a247e5d57c
🔨 Ajoute la reduction de cotisations pour les heures supplémentaires
TODO: uniformiser la façon de gérer les réductions sur la fiche de paie, entre employeur et salarié
2019-09-03 18:11:41 +02:00
Maxime Quandalle 0fa69dfbbc
Améliore l'affichage des unités sur les barèmes 2019-09-03 09:39:36 +02:00
Maxime Quandalle 9327847360 ⚙️ Support des unités dans un barème linéaire 2019-09-02 18:17:02 +02:00
Mael 1431c02f34 Introduction du faux pourcentage (%)
Quand une variable est destinée à être saisie par l'utilisateur, on veut
qu'il saisisse 50, pas 0.5 pour exprimer 50%.

On pourrait lui faire saisir 50 et convertir en direct vers la vraie
valeur de 0.5, mais c'est compliqué aujourd'hui dans reduxForm
(l'attribut "normalize" ne suffit pas, car la valeur 0.5 sera visible
après un bref instant de debounce).

Je pense qu'il serai quand même mieux que nous stockions les variables
qui sont des ratios comme 0.5 et que l'UI se charge d'afficher et de
faire saisir ces valeurs sous forme 50%.
2019-07-23 19:07:40 +02:00
Mael 7ae3eaca60 🎨 Espacement sous les noms des mécanismes 2019-07-23 18:44:26 +02:00
Mael a0e534324d 🎨 Valeur des méca : signe = en dehors de la boîte 2019-07-23 18:44:26 +02:00