Ajout de snapshots pour les variables manquantes (#2115)

* Ajout de snapshots pour les variables manquantes

* Parallelise l'execution des tests de non regression

Sur mon ordi le temps total d'exectution des tests est divisé par 2 :
~60s → ~30s

* Déplace les tests de régression "rémunération dirigeant"

Au sein des différentes catégories auto-entrepreneur, indépendant et
assimilé salarié. Évite de jouer certains tests en double, ainsi que
certains tests qui correspondent à des situations impossibles (exemple
dirigeant SASU avec ACRE).
pull/2126/head
Maxime Quandalle 2022-05-03 15:44:56 +02:00 committed by GitHub
parent 103f47f64f
commit 1aba41ebf1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 1186 additions and 1385 deletions

View File

@ -0,0 +1,19 @@
// Vitest Snapshot v1
exports[`calculate simulations-artiste-auteur > bnc 1`] = `"[763]"`;
exports[`calculate simulations-artiste-auteur > bnc 2`] = `"[1156]"`;
exports[`calculate simulations-artiste-auteur > bnc 3`] = `
"[578]
Notifications affichées : artiste-auteur . cotisations . avertissement trimestres retraite"
`;
exports[`calculate simulations-artiste-auteur > salarié 1`] = `
"[99]
Notifications affichées : artiste-auteur . cotisations . avertissement trimestres retraite"
`;
exports[`calculate simulations-artiste-auteur > salarié 2`] = `"[988]"`;
exports[`calculate simulations-artiste-auteur > salarié 3`] = `"[9880]"`;

View File

@ -0,0 +1,72 @@
// Vitest Snapshot v1
exports[`calculate simulations-auto-entrepreneur > ACRE 1`] = `"[22962,247,20000,0,20000]"`;
exports[`calculate simulations-auto-entrepreneur > ACRE 2`] = `
"[22630,219,20000,0,20000]
Notifications affichées : dirigeant . auto-entrepreneur . notification calcul ACRE annuel"
`;
exports[`calculate simulations-auto-entrepreneur > ACRE 3`] = `"[34443,370,30000,0,30000]"`;
exports[`calculate simulations-auto-entrepreneur > ACRE 4`] = `
"[45273,439,40000,0,40000]
Notifications affichées : dirigeant . auto-entrepreneur . notification calcul ACRE annuel"
`;
exports[`calculate simulations-auto-entrepreneur > ACRE 5`] = `
"[21390,116,20000,0,20000]
Notifications affichées : dirigeant . auto-entrepreneur . notification calcul ACRE annuel"
`;
exports[`calculate simulations-auto-entrepreneur > activité mixte 1`] = `"[20000,292,16500,0,16500]"`;
exports[`calculate simulations-auto-entrepreneur > activité mixte 2`] = `"[20000,318,16180,0,16180]"`;
exports[`calculate simulations-auto-entrepreneur > activité mixte 3`] = `"[20000,301,16388,0,16388]"`;
exports[`calculate simulations-auto-entrepreneur > activité mixte 4`] = `"[null,715,null,null,null]"`;
exports[`calculate simulations-auto-entrepreneur > activités 1`] = `"[20000,370,15560,0,15560]"`;
exports[`calculate simulations-auto-entrepreneur > activités 2`] = `"[20000,373,15520,0,15520]"`;
exports[`calculate simulations-auto-entrepreneur > activités 3`] = `"[20000,222,17332,0,17332]"`;
exports[`calculate simulations-auto-entrepreneur > activités 4`] = `"[20000,380,15444,0,15444]"`;
exports[`calculate simulations-auto-entrepreneur > activités 5`] = `"[20000,215,17420,0,17420]"`;
exports[`calculate simulations-auto-entrepreneur > activités 6`] = `"[20000,369,15568,0,15568]"`;
exports[`calculate simulations-auto-entrepreneur > aides 1`] = `"[5741,62,5000,0,5000]"`;
exports[`calculate simulations-auto-entrepreneur > aides 2`] = `"[57419,618,50000,237,49763]"`;
exports[`calculate simulations-auto-entrepreneur > impôt sur le revenu 1`] = `"[32134,594,25000,707,24293]"`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 1`] = `"[574,6,500,0,500]"`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 2`] = `"[1148,12,1000,0,1000]"`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 3`] = `"[2296,25,2000,0,2000]"`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 4`] = `"[5741,62,5000,0,5000]"`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 5`] = `"[11481,123,10000,0,10000]"`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 6`] = `"[22962,247,20000,0,20000]"`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 7`] = `"[57419,618,50000,237,49763]"`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 8`] = `"[80381,865,70000,1301,68699]"`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 9`] = `
"[114824,1235,100000,3912,96088]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-auto-entrepreneur > échelle de revenus 10`] = `
"[1148298,12358,1000000,131652,868348]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement, entreprise . imposition . régime . micro-entreprise . alerte seuil dépassés"
`;

View File

@ -0,0 +1,21 @@
// Vitest Snapshot v1
exports[`calculate simulations-dividendes > barème couple 2 enfants 1`] = `"[200,166,34,0,112,112,0]"`;
exports[`calculate simulations-dividendes > barème couple 2 enfants 2`] = `"[20000000,11149363,3440000,5410637,11184000,11184000,48]"`;
exports[`calculate simulations-dividendes > barème couple 2 enfants 3`] = `"[200,112,34,40,112,112,36]"`;
exports[`calculate simulations-dividendes > barème couple 2 enfants 4`] = `"[20000,14985,3440,613,11184,11184,5]"`;
exports[`calculate simulations-dividendes > barème défauts 1`] = `"[200,166,34,0,112,112,0]"`;
exports[`calculate simulations-dividendes > barème défauts 2`] = `"[20000000,11113031,3440000,5446969,11184000,11184000,49]"`;
exports[`calculate simulations-dividendes > barème défauts 3`] = `"[200,111,34,47,112,112,42]"`;
exports[`calculate simulations-dividendes > barème défauts 4`] = `"[20000,13205,3440,2244,11184,11184,20]"`;
exports[`calculate simulations-dividendes > pfu 1`] = `"[200,140,34,26,120,120,0]"`;
exports[`calculate simulations-dividendes > pfu 2`] = `"[20000000,14000000,3440000,2560000,12000000,12000000,0]"`;

View File

@ -0,0 +1,24 @@
// Vitest Snapshot v1
exports[`calculate simulations-impot-société > bénéfices 1`] = `
"[0,0]
Notifications affichées : entreprise . imposition . IS . information sur le report de déficit"
`;
exports[`calculate simulations-impot-société > bénéfices 2`] = `"[0,0]"`;
exports[`calculate simulations-impot-société > bénéfices 3`] = `"[300,0]"`;
exports[`calculate simulations-impot-société > bénéfices 4`] = `"[3000,0]"`;
exports[`calculate simulations-impot-société > bénéfices 5`] = `"[48628,0]"`;
exports[`calculate simulations-impot-société > bénéfices 6`] = `"[525628,0]"`;
exports[`calculate simulations-impot-société > bénéfices 7`] = `"[5295628,149646]"`;
exports[`calculate simulations-impot-société > prorata temporis 1`] = `"[260628,0]"`;
exports[`calculate simulations-impot-société > prorata temporis 2`] = `"[277936,0]"`;
exports[`calculate simulations-impot-société > prorata temporis 3`] = `"[272981,0]"`;

View File

@ -0,0 +1,124 @@
// Vitest Snapshot v1
exports[`calculate simulations-indépendant > acre 1`] = `"[73019,23019,50000,51980,9516,40484,0,73019,1408]"`;
exports[`calculate simulations-indépendant > activité 1`] = `"[29086,9086,20000,20787,898,19102,0,29086,3559]"`;
exports[`calculate simulations-indépendant > activité 2`] = `"[29102,9102,20000,20787,898,19102,0,29102,3575]"`;
exports[`calculate simulations-indépendant > conjoint collaborateur 1`] = `"[77175,27175,50000,52092,9550,40450,0,77175,7308]"`;
exports[`calculate simulations-indépendant > conjoint collaborateur 2`] = `"[78236,28236,50000,52121,9558,40442,0,78236,4487]"`;
exports[`calculate simulations-indépendant > conjoint collaborateur 3`] = `"[80757,30757,50000,52189,9579,40421,0,80757,4811]"`;
exports[`calculate simulations-indépendant > conjoint collaborateur 4`] = `"[75298,25298,50000,52041,9534,40466,0,75298,3809]"`;
exports[`calculate simulations-indépendant > conjoint collaborateur 5`] = `"[75297,25297,50000,52041,9534,40466,0,75297,3951]"`;
exports[`calculate simulations-indépendant > conjoint collaborateur 6`] = `
"[652221,152221,500000,517706,220485,279515,0,652221,4487]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-indépendant > contrats madelin 1`] = `"[30000,13181,16819,17881,433,16386,10000,40000,3559]"`;
exports[`calculate simulations-indépendant > contrats madelin 2`] = `"[30000,14381,15619,17881,433,15186,10000,40000,3559]"`;
exports[`calculate simulations-indépendant > contrats madelin 3`] = `"[30000,10381,19619,20431,841,18778,10000,40000,3559]"`;
exports[`calculate simulations-indépendant > contrats madelin 4`] = `"[20000,6732,13268,13809,0,13268,1000,21000,3559]"`;
exports[`calculate simulations-indépendant > contrats madelin 5`] = `
"[300000,79617,220383,228526,82145,138238,15000,315000,3559]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-indépendant > contrats madelin 6`] = `"[20000,6832,13168,13709,0,13168,500,20500,3559]"`;
exports[`calculate simulations-indépendant > contrats madelin 7`] = `"[20000,13132,6868,9695,0,6868,0,20000,3559]"`;
exports[`calculate simulations-indépendant > cotisations facultatives 1`] = `"[30000,13181,16819,17881,433,16386,0,30000,3559]"`;
exports[`calculate simulations-indépendant > cotisations facultatives 2`] = `"[30000,14381,15619,17881,433,15186,0,30000,3559]"`;
exports[`calculate simulations-indépendant > cotisations facultatives 3`] = `"[30000,10381,19619,20431,841,18778,0,30000,3559]"`;
exports[`calculate simulations-indépendant > cotisations facultatives 4`] = `"[20000,6732,13268,13809,0,13268,0,20000,3559]"`;
exports[`calculate simulations-indépendant > cotisations facultatives 5`] = `
"[300000,79617,220383,228526,82145,138238,0,300000,3559]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-indépendant > cotisations facultatives 6`] = `
"[300000,83117,216883,225026,80570,136313,0,300000,3559]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-indépendant > cotisations minimales 1`] = `"[1375,1275,100,135,0,100,0,1375,3559]"`;
exports[`calculate simulations-indépendant > cotisations minimales 2`] = `"[244,144,100,104,0,100,0,244,3211]"`;
exports[`calculate simulations-indépendant > exonération covid 1`] = `"[71347,21347,50000,51815,9550,40450,0,71347,103]"`;
exports[`calculate simulations-indépendant > exonération covid 2`] = `"[500,12977,50000,51032,9315,40685,0,62977,103]"`;
exports[`calculate simulations-indépendant > exonération covid 3`] = `"[50000,17475,50000,51440,9438,40562,0,67475,140]"`;
exports[`calculate simulations-indépendant > exonération pension invalidité 1`] = `
"[45000,10908,34092,35311,4515,29577,0,45000,2350]
Notifications affichées : dirigeant . indépendant . cotisations et contributions . exonérations . pension invalidité"
`;
exports[`calculate simulations-indépendant > imposition à l'IS 1`] = `
"[100000,30100,69900,72612,15030,54870,0,100000,3559]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-indépendant > imposition à l'IS 2`] = `
"[100000,30100,69900,72612,15030,54870,0,100000,3559]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-indépendant > impôt sur le revenu 1`] = `"[29086,9086,20000,20787,603,19397,0,29086,3559]"`;
exports[`calculate simulations-indépendant > impôt sur le revenu 2`] = `"[73019,23019,50000,51980,8213,41787,0,73019,3559]"`;
exports[`calculate simulations-indépendant > impôt sur le revenu 3`] = `"[29086,9086,20000,20787,2079,17921,0,29086,3559]"`;
exports[`calculate simulations-indépendant > inversions 1`] = `"[2000,1386,614,666,0,614,0,2000,3559]"`;
exports[`calculate simulations-indépendant > inversions 2`] = `"[50000,16004,33996,35351,4527,29469,0,50000,3559]"`;
exports[`calculate simulations-indépendant > inversions 3`] = `"[14597,4597,10000,10394,0,10000,0,14597,3559]"`;
exports[`calculate simulations-indépendant > inversions 4`] = `"[72000,22703,49297,51249,9297,40000,0,72000,3559]"`;
exports[`calculate simulations-indépendant > inversions 5`] = `"[14597,4597,10000,10394,0,10000,1000,15597,3559]"`;
exports[`calculate simulations-indépendant > inversions 6`] = `"[19000,5929,13071,13584,0,13071,1000,20000,3559]"`;
exports[`calculate simulations-indépendant > inversions 7`] = `"[18000,5627,12373,12860,0,12373,2000,20000,3559]"`;
exports[`calculate simulations-indépendant > échelle de revenus 1`] = `"[1861,1361,500,548,0,500,0,1861,3559]"`;
exports[`calculate simulations-indépendant > échelle de revenus 2`] = `"[2466,1466,1000,1064,0,1000,0,2466,3559]"`;
exports[`calculate simulations-indépendant > échelle de revenus 3`] = `"[3075,1575,1500,1581,0,1500,0,3075,3559]"`;
exports[`calculate simulations-indépendant > échelle de revenus 4`] = `"[3683,1683,2000,2097,0,2000,0,3683,3559]"`;
exports[`calculate simulations-indépendant > échelle de revenus 5`] = `"[7428,2428,5000,5199,0,5000,0,7428,3559]"`;
exports[`calculate simulations-indépendant > échelle de revenus 6`] = `"[14597,4597,10000,10394,0,10000,0,14597,3559]"`;
exports[`calculate simulations-indépendant > échelle de revenus 7`] = `
"[139589,39589,100000,103788,28275,71725,0,139589,3559]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-indépendant > échelle de revenus 8`] = `
"[1239948,239948,1000000,1033666,473305,526695,0,1239948,3559]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;

View File

@ -0,0 +1,146 @@
// Vitest Snapshot v1
exports[`calculate simulations-professions-libérales > CIPAV ACRE 1`] = `"[7434,0,2434,5000,0,5000,36,3,67]"`;
exports[`calculate simulations-professions-libérales > CIPAV ACRE 2`] = `"[24242,0,4242,20000,876,19124,36,4,266]"`;
exports[`calculate simulations-professions-libérales > CIPAV ACRE 3`] = `
"[69846,0,19846,50000,9490,40510,108,4,531]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV conjoint collaborateur 1`] = `
"[90886,0,30886,60000,12661,47339,180,4,533]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV conjoint collaborateur 2`] = `
"[90334,0,30334,60000,12657,47343,180,4,533]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV conjoint collaborateur 3`] = `
"[90012,0,30012,60000,12654,47346,180,4,708]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV conjoint collaborateur 4`] = `
"[92076,0,32076,60000,12671,47329,180,4,533]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV conjoint collaborateur 5`] = `
"[90530,0,30530,60000,12658,47342,180,4,805]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV conjoint collaborateur 6`] = `"[4895,0,3895,1000,0,1000,36,2,122]"`;
exports[`calculate simulations-professions-libérales > CIPAV conjoint collaborateur 7`] = `
"[93016,0,33016,60000,12679,47321,180,4,533]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV exonération incapacité 1`] = `
"[47070,0,7070,40000,6304,33696,36,4,400]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV réduction et surcotisation 1`] = `"[16239,0,6239,10000,0,10000,72,4,135]"`;
exports[`calculate simulations-professions-libérales > CIPAV réduction et surcotisation 2`] = `
"[73230,0,23230,50000,9518,40482,180,4,531]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV réduction et surcotisation 3`] = `
"[149211,0,49211,100000,28382,71618,468,4,538]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV échelle de revenu 1`] = `"[3277,0,2777,500,0,500,36,2,61]"`;
exports[`calculate simulations-professions-libérales > CIPAV échelle de revenu 2`] = `"[3838,0,2838,1000,0,1000,36,2,61]"`;
exports[`calculate simulations-professions-libérales > CIPAV échelle de revenu 3`] = `"[4398,0,2898,1500,0,1500,36,2,61]"`;
exports[`calculate simulations-professions-libérales > CIPAV échelle de revenu 4`] = `"[4959,0,2959,2000,0,2000,36,2,61]"`;
exports[`calculate simulations-professions-libérales > CIPAV échelle de revenu 5`] = `"[8377,0,3377,5000,0,5000,36,3,67]"`;
exports[`calculate simulations-professions-libérales > CIPAV échelle de revenu 6`] = `"[14552,0,4552,10000,0,10000,36,4,134]"`;
exports[`calculate simulations-professions-libérales > CIPAV échelle de revenu 7`] = `
"[147523,0,47523,100000,28363,71637,432,4,538]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > CIPAV échelle de revenu 8`] = `
"[1239427,0,239427,1000000,473298,526702,468,4,550]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > auxiliaire médical 1`] = `"[30000,0,8078,21922,1208,20714,0,4,293]"`;
exports[`calculate simulations-professions-libérales > auxiliaire médical 2`] = `"[30000,0,8398,21602,1157,20445,0,4,289]"`;
exports[`calculate simulations-professions-libérales > auxiliaire médical 3`] = `"[300000,0,62883,237117,89673,147444,0,4,550]"`;
exports[`calculate simulations-professions-libérales > avocat 1`] = `
"[50000,0,11135,38865,5988,32877,0,4,518]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > avocat 2`] = `
"[50000,0,11805,38195,5787,32408,0,4,510]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > expert-comptable 1`] = `"[20000,0,5014,14986,57,14929,0,4,200]"`;
exports[`calculate simulations-professions-libérales > expert-comptable 2`] = `
"[50000,0,14816,35184,4884,30300,0,4,471]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > médecin 1`] = `"[50000,0,14385,35615,5011,30604,0,4,476]"`;
exports[`calculate simulations-professions-libérales > médecin 2`] = `"[50000,0,22059,27941,2710,25231,0,4,378]"`;
exports[`calculate simulations-professions-libérales > médecin 3`] = `"[300000,0,87915,212085,78409,133676,0,4,550]"`;
exports[`calculate simulations-professions-libérales > médecin 4`] = `"[400000,0,108031,291969,117164,174805,0,4,550]"`;
exports[`calculate simulations-professions-libérales > médecin 5`] = `
"[120000,0,36415,83585,21327,62258,0,4,536]
Notifications affichées : entreprise . chiffre d'affaires . franchise de TVA . dépassement"
`;
exports[`calculate simulations-professions-libérales > médecin 6`] = `"[50000,0,14385,35615,5011,30604,0,4,476]"`;
exports[`calculate simulations-professions-libérales > sage-femme 1`] = `"[50000,0,12479,37521,5584,31937,0,4,501]"`;
exports[`calculate simulations-professions-libérales > sage-femme 2`] = `
"[20000,0,5190,14810,29,14781,0,4,198]
Notifications affichées : dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire . réduction applicable"
`;
exports[`calculate simulations-professions-libérales > sage-femme 3`] = `
"[4000,0,1315,2685,0,2685,0,2,61]
Notifications affichées : dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire . réduction applicable, dirigeant . indépendant . PL . CARCDSF . sage-femme . exonération PCV"
`;
exports[`calculate simulations-professions-libérales > sage-femme 4`] = `
"[20000,0,5190,14810,29,14781,0,4,198]
Notifications affichées : dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire . réduction applicable"
`;
exports[`calculate simulations-professions-libérales > sage-femme 5`] = `
"[20000,0,5267,14733,17,14716,0,4,197]
Notifications affichées : dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire . réduction applicable"
`;
exports[`calculate simulations-professions-libérales > sage-femme 6`] = `
"[20000,0,5343,14657,4,14653,0,4,196]
Notifications affichées : dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire . réduction applicable"
`;

View File

@ -0,0 +1,439 @@
// Vitest Snapshot v1
exports[`calculate simulations-salarié > CCN HCR 1`] = `
"[3499,0,2500,2005,1894]
Notifications affichées : contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > CCN batiment 1`] = `
"[3912,0,2500,1987,1878]
Notifications affichées : contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > CCN batiment 2`] = `
"[3881,0,2500,1972,1864]
Notifications affichées : contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > CCN batiment 3`] = `
"[3939,0,2500,1979,1867]
Notifications affichées : contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > CCN compta 1`] = `
"[3394,0,2500,2006,1898]
Notifications affichées : contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > CCN optique 1`] = `
"[3585,0,2500,2068,1953]
Notifications affichées : contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > CCN spectacle vivant 1`] = `
"[3796,0,2500,2155,2039]
Notifications affichées : contrat salarié . CDD . information, contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > CCN sport 1`] = `
"[535,0,500,374,374]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > JEI 1`] = `"[3434,0,3000,2353,2168]"`;
exports[`calculate simulations-salarié > JEI 2`] = `
"[26535,0,20000,15969,10359]
Notifications affichées : contrat salarié . rémunération . contrôle salaire élevé"
`;
exports[`calculate simulations-salarié > activité partielle 1`] = `
"[53,0,1560,1281,1281]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > activité partielle 2`] = `"[980,0,4000,2220,2098]"`;
exports[`calculate simulations-salarié > activité partielle 3`] = `"[2154,0,8000,4462,3639]"`;
exports[`calculate simulations-salarié > activité partielle 4`] = `"[1614,0,4000,2405,2217]"`;
exports[`calculate simulations-salarié > activité partielle 5`] = `"[2867,0,4000,2683,2406]"`;
exports[`calculate simulations-salarié > activité partielle 6`] = `"[740,3750,3000,1660,1609]"`;
exports[`calculate simulations-salarié > activité partielle 7`] = `"[980,0,4000,2220,2185]"`;
exports[`calculate simulations-salarié > activité partielle 8`] = `"[351,0,2000,1578,1544]"`;
exports[`calculate simulations-salarié > activité partielle 9`] = `"[1216,0,2000,1570,1536]"`;
exports[`calculate simulations-salarié > activité partielle 10`] = `"[2360,0,6000,4182,3498]"`;
exports[`calculate simulations-salarié > activité partielle 11`] = `"[4323,0,9000,6147,4790]"`;
exports[`calculate simulations-salarié > aides 1`] = `"[2296,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > aides 2`] = `
"[12819,0,10000,8911,7538]
Notifications affichées : contrat salarié . rémunération . contrôle salaire élevé, contrat salarié . régime des impatriés . information"
`;
exports[`calculate simulations-salarié > aides 3`] = `"[1966,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > aides 4`] = `
"[2573,0,2000,1720,1656]
Notifications affichées : contrat salarié . CDD . information"
`;
exports[`calculate simulations-salarié > aides 5`] = `"[1800,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > aides 6`] = `"[2050,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > aides embauche covid 1`] = `
"[1232,0,1500,1165,1165]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > aides embauche covid 2`] = `"[7079,0,5000,3948,3298]"`;
exports[`calculate simulations-salarié > aides embauche covid 3`] = `
"[1407,0,1500,1284,1284]
Notifications affichées : contrat salarié . CDD . information, contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > aides embauche covid 4`] = `
"[881,0,1500,1457,1457]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > apprentissage 1`] = `
"[1547,0,1500,1457,1457]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > apprentissage 2`] = `
"[1381,0,1500,1457,1457]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > atmp 1`] = `"[2438,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > avantages 1`] = `"[2571,0,2000,1540,1490]"`;
exports[`calculate simulations-salarié > avantages 2`] = `"[2581,0,2000,1539,1489]"`;
exports[`calculate simulations-salarié > avantages 3`] = `"[2491,0,2000,1549,1500]"`;
exports[`calculate simulations-salarié > cadre 1`] = `"[4116,0,3000,2348,2160]"`;
exports[`calculate simulations-salarié > cdd 1`] = `
"[3198,0,2200,1894,1815]
Notifications affichées : contrat salarié . CDD . information"
`;
exports[`calculate simulations-salarié > cdd 2`] = `
"[3472,0,2200,2009,1897]
Notifications affichées : contrat salarié . CDD . information"
`;
exports[`calculate simulations-salarié > cdd 3`] = `
"[3765,0,2200,2197,2084]
Notifications affichées : contrat salarié . CDD . information"
`;
exports[`calculate simulations-salarié > cdd 4`] = `
"[4416,0,2200,2370,2179]
Notifications affichées : contrat salarié . CDD . information"
`;
exports[`calculate simulations-salarié > cdd 5`] = `
"[3759,0,2200,1920,1841]
Notifications affichées : contrat salarié . CDD . information, contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > contrat pro 1`] = `"[899,0,1500,1165,1165]"`;
exports[`calculate simulations-salarié > contrat pro 2`] = `"[1566,0,1500,1165,1165]"`;
exports[`calculate simulations-salarié > effectif 1`] = `"[2383,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > effectif 2`] = `"[2430,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > effectif 3`] = `"[2442,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > effectif 4`] = `"[2442,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > frais pro - DFS 1`] = `"[2105,0,2000,1625,1625]"`;
exports[`calculate simulations-salarié > frais pro - DFS 2`] = `"[2212,0,2000,1584,1549]"`;
exports[`calculate simulations-salarié > frais pro - DFS 3`] = `"[2158,0,2000,1601,1553]"`;
exports[`calculate simulations-salarié > frais pro - DFS 4`] = `"[2158,0,2000,1601,1553]"`;
exports[`calculate simulations-salarié > frais pro - DFS 5`] = `"[2383,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > frais pro - DFS 6`] = `"[1765,0,1700,1354,1354]"`;
exports[`calculate simulations-salarié > frais pro - DFS 7`] = `"[3258,0,2600,2125,2092]"`;
exports[`calculate simulations-salarié > frais pro - abo transports + transports personnels 1`] = `"[4382,0,3200,2553,2356]"`;
exports[`calculate simulations-salarié > frais pro - abo transports + transports personnels 2`] = `"[5012,0,3200,2916,2619]"`;
exports[`calculate simulations-salarié > frais pro - abo transports + transports personnels 3`] = `"[4688,0,3200,2836,2637]"`;
exports[`calculate simulations-salarié > frais pro - abonnement transports publics 1`] = `"[4380,0,3200,2551,2354]"`;
exports[`calculate simulations-salarié > frais pro - abonnement transports publics 2`] = `"[5090,0,3200,3261,3064]"`;
exports[`calculate simulations-salarié > frais pro - abonnement transports publics 3`] = `"[4380,0,3200,2551,2354]"`;
exports[`calculate simulations-salarié > frais pro - abonnement transports publics 4`] = `"[4356,0,3200,2527,2330]"`;
exports[`calculate simulations-salarié > frais pro - titres restaurant 1`] = `"[2423,0,2000,1521,1487]"`;
exports[`calculate simulations-salarié > frais pro - titres restaurant 2`] = `"[4300,0,3000,2135,1945]"`;
exports[`calculate simulations-salarié > frais pro - titres restaurant 3`] = `"[2467,0,2000,1493,1458]"`;
exports[`calculate simulations-salarié > frais pro - transports personnels seul 1`] = `"[4382,0,3200,2553,2356]"`;
exports[`calculate simulations-salarié > frais pro - transports personnels seul 2`] = `"[4382,0,3200,2553,2356]"`;
exports[`calculate simulations-salarié > frais pro - transports personnels seul 3`] = `"[5008,0,3200,2913,2617]"`;
exports[`calculate simulations-salarié > frais pro - transports personnels seul 4`] = `"[4382,0,3200,2553,2356]"`;
exports[`calculate simulations-salarié > frais pro - transports personnels seul 5`] = `"[4390,0,3200,2548,2349]"`;
exports[`calculate simulations-salarié > frais pro - transports personnels seul 6`] = `"[4135,0,3200,2589,2480]"`;
exports[`calculate simulations-salarié > heures supplémentaires et complémentaires 1`] = `"[2484,0,2000,1636,1601]"`;
exports[`calculate simulations-salarié > heures supplémentaires et complémentaires 2`] = `"[2444,0,2000,1606,1572]"`;
exports[`calculate simulations-salarié > heures supplémentaires et complémentaires 3`] = `"[2554,0,2000,1636,1601]"`;
exports[`calculate simulations-salarié > heures supplémentaires et complémentaires 4`] = `
"[2481,0,2000,1632,1598]
Notifications affichées : contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > heures supplémentaires et complémentaires 5`] = `
"[2448,0,2000,1606,1572]
Notifications affichées : contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > heures supplémentaires et complémentaires 6`] = `
"[2432,0,2000,1601,1566]
Notifications affichées : contrat salarié . convention collective . contrôle décharge"
`;
exports[`calculate simulations-salarié > heures supplémentaires et complémentaires 7`] = `
"[3330,2446,2000,1919,1886]
Notifications affichées : contrat salarié . temps de travail . contrôle heures complémentaires 10 pourcents"
`;
exports[`calculate simulations-salarié > heures supplémentaires et complémentaires 8`] = `
"[3279,2286,2000,1889,1856]
Notifications affichées : contrat salarié . temps de travail . contrôle heures complémentaires 10 pourcents"
`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 1`] = `"[4070,0,3000,2353,2336]"`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 2`] = `"[4070,0,3000,2353,2353]"`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 3`] = `"[4070,0,3000,2353,2353]"`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 4`] = `"[4070,0,3000,2353,1911]"`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 5`] = `"[4070,0,3000,2353,2219]"`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 6`] = `"[12886,0,9000,7156,6052]"`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 7`] = `"[12886,0,9000,7156,6342]"`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 8`] = `"[12886,0,9000,7156,6859]"`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 9`] = `"[4070,0,3000,2353,2178]"`;
exports[`calculate simulations-salarié > impôt sur le revenu - quotient familial 10`] = `"[4070,0,3000,2353,2353]"`;
exports[`calculate simulations-salarié > impôt sur le revenu 1`] = `"[4070,0,3000,2353,2168]"`;
exports[`calculate simulations-salarié > impôt sur le revenu 2`] = `
"[41833,0,30000,24227,14685]
Notifications affichées : contrat salarié . rémunération . contrôle salaire élevé"
`;
exports[`calculate simulations-salarié > impôt sur le revenu 3`] = `
"[4960,0,3000,2846,2559]
Notifications affichées : contrat salarié . CDD . information"
`;
exports[`calculate simulations-salarié > impôt sur le revenu 4`] = `"[3782,0,3000,2353,2252]"`;
exports[`calculate simulations-salarié > impôt sur le revenu 5`] = `
"[41833,0,30000,24227,14685]
Notifications affichées : contrat salarié . rémunération . contrôle salaire élevé"
`;
exports[`calculate simulations-salarié > impôt sur le revenu 6`] = `"[4070,0,3000,2626,2485]"`;
exports[`calculate simulations-salarié > impôt sur le revenu 7`] = `
"[41833,0,30000,26966,16655]
Notifications affichées : contrat salarié . rémunération . contrôle salaire élevé"
`;
exports[`calculate simulations-salarié > impôt sur le revenu 8`] = `"[4070,0,3000,2353,2107]"`;
exports[`calculate simulations-salarié > inversions 1`] = `"[2000,0,1797,1400,1393]"`;
exports[`calculate simulations-salarié > inversions 2`] = `"[3426,0,2554,2000,1889]"`;
exports[`calculate simulations-salarié > inversions 3`] = `"[3668,0,2703,2117,2000]"`;
exports[`calculate simulations-salarié > lodeom 1`] = `
"[1588,0,1521,1182,1182]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > lodeom 2`] = `"[2081,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > lodeom 3`] = `"[3782,0,3000,2353,2168]"`;
exports[`calculate simulations-salarié > lodeom 4`] = `"[5428,0,4000,3146,2755]"`;
exports[`calculate simulations-salarié > lodeom 5`] = `"[7784,0,5500,4349,3634]"`;
exports[`calculate simulations-salarié > lodeom compétitivité renforcée 1`] = `
"[1588,0,1521,1182,1182]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > lodeom compétitivité renforcée 2`] = `"[2081,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > lodeom compétitivité renforcée 3`] = `"[3281,0,3000,2353,2168]"`;
exports[`calculate simulations-salarié > lodeom compétitivité renforcée 4`] = `"[5186,0,4000,3146,2755]"`;
exports[`calculate simulations-salarié > lodeom compétitivité renforcée 5`] = `"[7784,0,5500,4349,3634]"`;
exports[`calculate simulations-salarié > lodeom innovation et croissance 1`] = `
"[1588,0,1521,1182,1182]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > lodeom innovation et croissance 2`] = `"[2081,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > lodeom innovation et croissance 3`] = `"[3171,0,3000,2353,2168]"`;
exports[`calculate simulations-salarié > lodeom innovation et croissance 4`] = `"[4529,0,4000,3146,2755]"`;
exports[`calculate simulations-salarié > lodeom innovation et croissance 5`] = `"[7643,0,5500,4349,3634]"`;
exports[`calculate simulations-salarié > stage 1`] = `
"[500,0,500,500,500]
Notifications affichées : contrat salarié . stage . avertissement, contrat salarié . stage . contrôle gratification minimale"
`;
exports[`calculate simulations-salarié > stage 2`] = `
"[2484,0,2000,1750,1750]
Notifications affichées : contrat salarié . stage . avertissement"
`;
exports[`calculate simulations-salarié > taux spécifiques retraite complémentaire 1`] = `
"[1601,0,1521,1195,1195]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > taux spécifiques retraite complémentaire 2`] = `"[3346,0,2500,1979,1869]"`;
exports[`calculate simulations-salarié > taux spécifiques retraite complémentaire 3`] = `
"[1588,0,1521,1170,1170]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > taux spécifiques retraite complémentaire 4`] = `"[3306,0,2500,1938,1830]"`;
exports[`calculate simulations-salarié > temps partiel 1`] = `"[2503,2188,2000,1561,1527]"`;
exports[`calculate simulations-salarié > temps partiel 2`] = `"[2475,2500,1857,1448,1428]"`;
exports[`calculate simulations-salarié > temps partiel 3`] = `
"[1101,1750,1000,770,770]
Notifications affichées : contrat salarié . temps de travail . temps partiel . contrôle temps min"
`;
exports[`calculate simulations-salarié > treizième mois 1`] = `"[3308,0,2300,1950,1842]"`;
exports[`calculate simulations-salarié > treizième mois 2`] = `"[3794,2965,2300,2186,2071]"`;
exports[`calculate simulations-salarié > treizième mois 3`] = `"[2948,0,2300,1799,1733]"`;
exports[`calculate simulations-salarié > échelle de salaires 1`] = `
"[123,0,100,57,57]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > échelle de salaires 2`] = `
"[278,0,250,176,176]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > échelle de salaires 3`] = `
"[535,0,500,374,374]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > échelle de salaires 4`] = `
"[793,0,750,572,572]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > échelle de salaires 5`] = `
"[1050,0,1000,770,770]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > échelle de salaires 6`] = `
"[1308,0,1250,968,968]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > échelle de salaires 7`] = `
"[1566,0,1500,1165,1165]
Notifications affichées : contrat salarié . rémunération . contrôle smic"
`;
exports[`calculate simulations-salarié > échelle de salaires 8`] = `"[2383,0,2000,1561,1527]"`;
exports[`calculate simulations-salarié > échelle de salaires 9`] = `"[3324,0,2500,1957,1848]"`;
exports[`calculate simulations-salarié > échelle de salaires 10`] = `"[4070,0,3000,2353,2168]"`;
exports[`calculate simulations-salarié > échelle de salaires 11`] = `"[5428,0,4000,3146,2755]"`;
exports[`calculate simulations-salarié > échelle de salaires 12`] = `"[7079,0,5000,3948,3298]"`;
exports[`calculate simulations-salarié > échelle de salaires 13`] = `
"[14315,0,10000,7958,5892]
Notifications affichées : contrat salarié . rémunération . contrôle salaire élevé"
`;
exports[`calculate simulations-salarié > échelle de salaires 14`] = `
"[28342,0,20000,15969,10359]
Notifications affichées : contrat salarié . rémunération . contrôle salaire élevé"
`;
exports[`calculate simulations-salarié > échelle de salaires 15`] = `
"[128588,0,100000,87157,45821]
Notifications affichées : contrat salarié . rémunération . contrôle salaire élevé"
`;
exports[`calculate simulations-salarié > échelle de salaires 16`] = `
"[1244012,0,1000000,896257,445643]
Notifications affichées : contrat salarié . rémunération . contrôle salaire élevé"
`;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
import { it } from 'vitest'
import artisteAuteurConfig from '../../source/pages/Simulateurs/configs/artiste-auteur.yaml'
import artisteAuteurSituations from './simulations-artiste-auteur.yaml'
import { runSimulations } from './utils'
it('calculate simulations-artiste-auteur', () => {
runSimulations(
artisteAuteurSituations,
artisteAuteurConfig.objectifs,
artisteAuteurConfig.situation
)
})

View File

@ -0,0 +1,15 @@
import { it } from 'vitest'
import remunerationDirigeantConfig from '../../source/pages/Simulateurs/configs/rémunération-dirigeant.yaml'
import remunerationDirigeantSituations from './simulations-rémunération-dirigeant.yaml'
import { runSimulations } from './utils'
it('calculate assimilé salarié', () => {
runSimulations(
remunerationDirigeantSituations,
remunerationDirigeantConfig.objectifs,
{
...remunerationDirigeantConfig.situation,
'dirigeant . régime social': "'assimilé salarié'",
}
)
})

View File

@ -0,0 +1,31 @@
échelle de rémunération:
- dirigeant . rémunération . totale: 100 €/an
- dirigeant . rémunération . totale: 1000 €/an
- dirigeant . rémunération . totale: 2000 €/an
- dirigeant . rémunération . totale: 5000 €/an
- dirigeant . rémunération . totale: 10000 €/an
- dirigeant . rémunération . totale: 20000 €/an
- dirigeant . rémunération . totale: 50000 €/an
- dirigeant . rémunération . totale: 100000 €/an
avec charges:
- dirigeant . rémunération . totale: 10000 €/an
entreprise . charges: 2000 €/an
- dirigeant . rémunération . totale: 20000 €/an
entreprise . charges: 15000 €/an
ACRE:
- dirigeant . rémunération . totale: 10000 €/an
entreprise . date de création: 01/01/2022
entreprise . ACRE: oui
- dirigeant . rémunération . totale: 20000 €/an
entreprise . date de création: 01/01/2022
entreprise . ACRE: oui
- dirigeant . rémunération . totale: 30000 €/an
entreprise . date de création: 01/06/2021
entreprise . ACRE: oui
JEI:
- dirigeant . rémunération . totale: 4000 €/mois
dirigeant . régime social: "'assimilé salarié'"
contrat salarié . statut JEI: oui

View File

@ -0,0 +1,35 @@
import { expect, it } from 'vitest'
import autoentrepreneurConfig from '../../source/pages/Simulateurs/configs/auto-entrepreneur.yaml'
import autoEntrepreneurSituations from './simulations-auto-entrepreneur.yaml'
import { engine, getMissingVariables, runSimulations } from './utils'
it('calculate simulations-auto-entrepreneur', () => {
runSimulations(
autoEntrepreneurSituations,
autoentrepreneurConfig.objectifs,
autoentrepreneurConfig.situation
)
expect(
getMissingVariables(
engine
.setSituation({
...autoentrepreneurConfig.situation,
"dirigeant . auto-entrepreneur . chiffre d'affaires": '30000 €/an',
})
.evaluate('dirigeant . auto-entrepreneur . net après impôt')
)
).toMatchInlineSnapshot(`
[
"entreprise . activité . mixte",
"entreprise . activité",
"impôt . foyer fiscal . enfants à charge",
"entreprise . activité . service ou vente",
"impôt . foyer fiscal . situation de famille",
"dirigeant . auto-entrepreneur . impôt . versement libératoire",
"entreprise . date de création",
"impôt . foyer fiscal . revenu imposable . autres revenus imposables",
"impôt . méthode de calcul",
]
`)
})

View File

@ -38,6 +38,25 @@ ACRE:
entreprise . date de création: 01/01/2022
entreprise . ACRE: oui
activités:
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'libérale'"
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'libérale'"
entreprise . activité . libérale réglementée: oui
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'artisanale'"
entreprise . activité . service ou vente: "'vente'"
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'artisanale'"
entreprise . activité . service ou vente: "'service'"
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'commerciale'"
entreprise . activité . service ou vente: "'vente'"
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'commerciale'"
entreprise . activité . service ou vente: "'service'"
activité mixte:
- dirigeant . auto-entrepreneur . chiffre d'affaires: 20000 €/an
entreprise . activité . mixte: oui

View File

@ -0,0 +1,19 @@
import { it } from 'vitest'
import dividendesConfig from '../../source/pages/Simulateurs/configs/dividendes.yaml'
import dividendesSituations from './simulations-dividendes.yaml'
import { runSimulations } from './utils'
it('calculate simulations-dividendes', () => {
runSimulations(
dividendesSituations,
[
...dividendesConfig.objectifs,
'bénéficiaire . dividendes . cotisations et contributions',
'impôt . montant',
'impôt . revenu imposable',
'bénéficiaire . dividendes . imposables',
"impôt . taux d'imposition",
],
dividendesConfig.situation
)
})

View File

@ -0,0 +1,17 @@
import { it } from 'vitest'
import impotSocieteSituations from './simulations-impôt-société.yaml'
import { runSimulations } from './utils'
it('calculate simulations-impot-société', () => {
runSimulations(
impotSocieteSituations,
[
'entreprise . imposition . IS . montant',
'entreprise . imposition . IS . contribution sociale',
],
{
'entreprise . imposition': "'IS'",
'entreprise . imposition . IS . éligible taux réduit': 'oui',
}
)
})

View File

@ -0,0 +1,20 @@
import { DottedName } from 'modele-social'
import { it } from 'vitest'
import independantConfig from '../../source/pages/Simulateurs/configs/indépendant.yaml'
import independentSituations from './simulations-indépendant.yaml'
import { runSimulations } from './utils'
it('calculate simulations-indépendant', () => {
const objectifs = [
'dirigeant . rémunération . totale',
'dirigeant . rémunération . cotisations',
'dirigeant . rémunération . nette',
'dirigeant . indépendant . revenu professionnel',
'impôt . montant',
'dirigeant . rémunération . nette après impôt',
'entreprise . charges',
"entreprise . chiffre d'affaires",
'dirigeant . indépendant . cotisations et contributions . début activité',
] as DottedName[]
runSimulations(independentSituations, objectifs, independantConfig.situation)
})

View File

@ -120,3 +120,47 @@ imposition à l'IS:
exonération pension invalidité:
- dirigeant . rémunération . totale: 45000 €/an
dirigeant . indépendant . cotisations et contributions . exonérations . pension invalidité: oui
contrats madelin:
# Cas retraite: la cotisation Madelin est inferieure au plafond => le revenu net de
# cotisations (résultat comptable) n'est pas affecté car l'assiette des
# cotisations ne change pas:
- dirigeant . rémunération . totale: 30000 €/an
entreprise . charges: 10000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 3800 €/an # plafond: 10% PSS donc environ 4100
# Cas retraite: la cotisation Madelin est supérieure au plafond => le revenu net de
# cotisations est affecté car l'assiette des cotisations est plus élevée
- dirigeant . rémunération . totale: 30000 €/an
entreprise . charges: 10000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 5000 €/an # plafond: 10% PSS donc environ 4100
# Cas mutuelle
- dirigeant . rémunération . totale: 30000 €/an
entreprise . charges: 10000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 1000 €/an
# Cas global madelin faible
- dirigeant . rémunération . totale: 20000 €/an
entreprise . charges: 1000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 200 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite: 300 €/an
# Cas global madelin grand (plafonds calculés différemment)
- dirigeant . rémunération . totale: 300000 €/an
entreprise . charges: 15000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 1500 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite: 5000 €/an
# Cas charges plus faibles que total madelin
- dirigeant . rémunération . totale: 20000 €/an
entreprise . charges: 500 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 300 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite: 300 €/an
# PER
- dirigeant . rémunération . totale: 20000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . PER: 5500 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 500 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite: 900 €/an

View File

@ -0,0 +1,15 @@
import { it } from 'vitest'
import professionLibéraleConfig from '../../source/pages/Simulateurs/configs/profession-libérale.yaml'
import professionsLibéralesSituations from './simulations-professions-libérales.yaml'
import { runSimulations } from './utils'
it('calculate simulations-professions-libérales', () => {
runSimulations(
professionsLibéralesSituations,
professionLibéraleConfig.objectifs,
{
...professionLibéraleConfig.situation,
'entreprise . activité . libérale réglementée': 'oui',
}
)
})

View File

@ -1,94 +0,0 @@
échelle de rémunération:
- dirigeant . rémunération . totale: 100 €/an
- dirigeant . rémunération . totale: 1000 €/an
- dirigeant . rémunération . totale: 2000 €/an
- dirigeant . rémunération . totale: 5000 €/an
- dirigeant . rémunération . totale: 10000 €/an
- dirigeant . rémunération . totale: 20000 €/an
- dirigeant . rémunération . totale: 50000 €/an
- dirigeant . rémunération . totale: 100000 €/an
avec charges:
- dirigeant . rémunération . totale: 10000 €/an
entreprise . charges: 2000 €/an
- dirigeant . rémunération . totale: 20000 €/an
entreprise . charges: 15000 €/an
ACRE:
- dirigeant . rémunération . totale: 10000 €/an
entreprise . date de création: 01/01/2022
entreprise . ACRE: oui
- dirigeant . rémunération . totale: 20000 €/an
entreprise . date de création: 01/01/2022
entreprise . ACRE: oui
- dirigeant . rémunération . totale: 30000 €/an
entreprise . date de création: 01/06/2021
entreprise . ACRE: oui
activités:
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'libérale'"
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'libérale'"
entreprise . activité . libérale réglementée: oui
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'artisanale'"
entreprise . activité . service ou vente: "'vente'"
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'artisanale'"
entreprise . activité . service ou vente: "'service'"
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'commerciale'"
entreprise . activité . service ou vente: "'vente'"
- dirigeant . rémunération . totale: 20000 €/an
entreprise . activité: "'commerciale'"
entreprise . activité . service ou vente: "'service'"
Contrats Madelin:
# Cas retraite: la cotisation Madelin est inferieure au plafond => le revenu net de
# cotisations (résultat comptable) n'est pas affecté car l'assiette des
# cotisations ne change pas:
- dirigeant . rémunération . totale: 30000 €/an
entreprise . charges: 10000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 3800 €/an # plafond: 10% PSS donc environ 4100
# Cas retraite: la cotisation Madelin est supérieure au plafond => le revenu net de
# cotisations est affecté car l'assiette des cotisations est plus élevée
- dirigeant . rémunération . totale: 30000 €/an
entreprise . charges: 10000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 5000 €/an # plafond: 10% PSS donc environ 4100
# Cas mutuelle
- dirigeant . rémunération . totale: 30000 €/an
entreprise . charges: 10000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 1000 €/an
# Cas global madelin faible
- dirigeant . rémunération . totale: 20000 €/an
entreprise . charges: 1000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 200 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite: 300 €/an
# Cas global madelin grand (plafonds calculés différemment)
- dirigeant . rémunération . totale: 300000 €/an
entreprise . charges: 15000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 1500 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite: 5000 €/an
# Cas charges plus faibles que total madelin
- dirigeant . rémunération . totale: 20000 €/an
entreprise . charges: 500 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 300 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite: 300 €/an
# PER
- dirigeant . rémunération . totale: 20000 €/an
dirigeant . indépendant . cotisations facultatives: oui
dirigeant . indépendant . cotisations facultatives . PER: 5500 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance: 500 €/an
dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite: 900 €/an
JEI:
- dirigeant . rémunération . totale: 4000 €/mois
dirigeant . régime social: "'assimilé salarié'"
contrat salarié . statut JEI: oui

View File

@ -0,0 +1,45 @@
import { expect, it } from 'vitest'
import employeeConfig from '../../source/pages/Simulateurs/configs/salarié.yaml'
import employeeSituations from './simulations-salarié.yaml'
import { engine, getMissingVariables, runSimulations } from './utils'
it('calculate simulations-salarié', () => {
runSimulations(
employeeSituations,
employeeConfig.objectifs,
employeeConfig.situation
)
expect(
getMissingVariables(
engine
.setSituation({
...employeeConfig.situation,
'contrat salarié . rémunération . brut de base': '3000 €/mois',
})
.evaluate('contrat salarié . rémunération . net après impôt')
)
).toMatchInlineSnapshot(`
[
"contrat salarié",
"contrat salarié . convention collective",
"contrat salarié . temps de travail . temps partiel",
"contrat salarié . rémunération . primes . activité . base",
"contrat salarié . temps de travail . heures supplémentaires",
"contrat salarié . frais professionnels . abonnement transports publics . montant",
"contrat salarié . frais professionnels . transports personnels . carburant faible émission . montant",
"contrat salarié . déduction forfaitaire spécifique",
"contrat salarié . frais professionnels . titres-restaurant",
"contrat salarié . frais professionnels . transports personnels . forfait mobilités durables . montant",
"contrat salarié . rémunération . avantages en nature",
"contrat salarié . rémunération . primes . fin d'année . treizième mois",
"contrat salarié . complémentaire santé . forfait",
"contrat salarié . complémentaire santé . part employeur",
"situation personnelle . domiciliation fiscale à l'étranger",
"contrat salarié . statut cadre",
"contrat salarié . régime des impatriés",
"établissement . localisation",
"impôt . méthode de calcul",
]
`)
})

View File

@ -1,200 +0,0 @@
// The goal of these tests is to avoid deploying unwanted changes in the calculations. We run a number
// of simulations and persist their results in a snapshot (ie, a file commited in git). Our test runner,
// Jest, then compare the existing snapshot with the current Engine calculation and reports any difference.
//
// We only persist targets values in the file system, in order to be resilient to rule renaming (if a rule is
// renamed the test configuration may be adapted but the persisted snapshot will remain unchanged).
import rules, { DottedName } from 'modele-social'
import { expect, it } from 'vitest'
import { engineFactory } from '../../source/components/utils/EngineContext'
import aideDéclarationConfig from '../../source/pages/gerer/declaration-charges-sociales-independant/_config.yaml'
import artisteAuteurConfig from '../../source/pages/Simulateurs/configs/artiste-auteur.yaml'
import autoentrepreneurConfig from '../../source/pages/Simulateurs/configs/auto-entrepreneur.yaml'
import dividendesConfig from '../../source/pages/Simulateurs/configs/dividendes.yaml'
import independantConfig from '../../source/pages/Simulateurs/configs/indépendant.yaml'
import professionLibéraleConfig from '../../source/pages/Simulateurs/configs/profession-libérale.yaml'
import remunerationDirigeantConfig from '../../source/pages/Simulateurs/configs/rémunération-dirigeant.yaml'
import employeeConfig from '../../source/pages/Simulateurs/configs/salarié.yaml'
import { Simulation } from '../../source/reducers/rootReducer'
import aideDéclarationIndépendantsSituations from './assistant-charges-sociales.yaml'
import artisteAuteurSituations from './simulations-artiste-auteur.yaml'
import autoEntrepreneurSituations from './simulations-auto-entrepreneur.yaml'
import dividendesSituations from './simulations-dividendes.yaml'
import impotSocieteSituations from './simulations-impôt-société.yaml'
import independentSituations from './simulations-indépendant.yaml'
import professionsLibéralesSituations from './simulations-professions-libérales.yaml'
import remunerationDirigeantSituations from './simulations-rémunération-dirigeant.yaml'
import employeeSituations from './simulations-salarié.yaml'
type SituationsSpecs = Record<string, Simulation['situation'][]>
const roundResult = (arr: number[]) => arr.map((x) => Math.round(x))
const engine = engineFactory(rules, {
logger: {
warn: () => undefined,
error: (m: string) => console.error(m),
log: () => undefined,
},
})
const runSimulations = (
situationsSpecs: SituationsSpecs,
objectifs: DottedName[],
baseSituation: Simulation['situation'] = {}
) =>
Object.entries(situationsSpecs).map(([name, situations]) =>
situations.forEach((situation) => {
Object.keys(situation).forEach((situationRuleName) => {
// TODO: This check may be moved in the `engine.setSituation` method
if (!Object.keys(engine.getParsedRules()).includes(situationRuleName)) {
throw new Error(
`La règle ${situationRuleName} n'existe pas dans la base de règles.`
)
}
})
engine.setSituation({ ...baseSituation, ...situation })
const res = objectifs.map(
(objectif) => engine.evaluate(objectif).nodeValue
)
const evaluatedNotifications = Object.values(engine.getParsedRules())
.filter(
(rule) =>
rule.rawNode.type === 'notification' &&
engine.evaluate(rule.dottedName).nodeValue === true
)
.map((node) => node.dottedName)
const snapshotedDisplayedNotifications = evaluatedNotifications.length
? `\nNotifications affichées : ${evaluatedNotifications.join(', ')}`
: ''
// Stringify is not required, but allows the result to be displayed in a single
// line in the snapshot, which considerably reduce the number of lines of this snapshot
// and improve its readability.
expect(
JSON.stringify(roundResult(res as number[])) +
snapshotedDisplayedNotifications
).toMatchSnapshot(name)
})
)
it('calculate simulations-salarié', () => {
runSimulations(
employeeSituations,
employeeConfig.objectifs,
employeeConfig.situation
)
})
it('calculate simulations-indépendant', () => {
const objectifs = [
'dirigeant . rémunération . totale',
'dirigeant . rémunération . cotisations',
'dirigeant . rémunération . nette',
'dirigeant . indépendant . revenu professionnel',
'impôt . montant',
'dirigeant . rémunération . nette après impôt',
'entreprise . charges',
"entreprise . chiffre d'affaires",
'dirigeant . indépendant . cotisations et contributions . début activité',
] as DottedName[]
runSimulations(independentSituations, objectifs, independantConfig.situation)
})
it('calculate simulations-auto-entrepreneur', () => {
runSimulations(
autoEntrepreneurSituations,
autoentrepreneurConfig.objectifs,
autoentrepreneurConfig.situation
)
})
it('calculate simulations-rémunération-dirigeant (assimilé salarié)', () => {
runSimulations(
remunerationDirigeantSituations,
remunerationDirigeantConfig.objectifs,
{
...remunerationDirigeantConfig.situation,
'dirigeant . régime social': "'assimilé salarié'",
}
)
})
it('calculate simulations-rémunération-dirigeant (auto-entrepreneur)', () => {
runSimulations(
remunerationDirigeantSituations,
remunerationDirigeantConfig.objectifs,
{
...remunerationDirigeantConfig.situation,
'entreprise . catégorie juridique': "'EI'",
'entreprise . catégorie juridique . EI . auto-entrepreneur': 'oui',
}
)
})
it('calculate simulations-rémunération-dirigeant (indépendant)', () => {
runSimulations(
remunerationDirigeantSituations,
remunerationDirigeantConfig.objectifs,
remunerationDirigeantConfig.situation
)
})
it('calculate simulations-artiste-auteur', () => {
runSimulations(
artisteAuteurSituations,
artisteAuteurConfig.objectifs,
artisteAuteurConfig.situation
)
})
it('calculate assistant-charges-sociales', () => {
runSimulations(
aideDéclarationIndépendantsSituations,
aideDéclarationConfig.objectifs,
{
'déclaration charge sociales . comptabilité': "'engagement'",
'entreprise . imposition . régime . micro-fiscal': "'non'",
...aideDéclarationConfig.situation,
}
)
})
it('calculate simulations-professions-libérales', () => {
runSimulations(
professionsLibéralesSituations,
professionLibéraleConfig.objectifs,
{
...professionLibéraleConfig.situation,
'entreprise . activité . libérale réglementée': 'oui',
}
)
})
it('calculate simulations-impot-société', () => {
runSimulations(
impotSocieteSituations,
[
'entreprise . imposition . IS . montant',
'entreprise . imposition . IS . contribution sociale',
],
{
'entreprise . imposition': "'IS'",
'entreprise . imposition . IS . éligible taux réduit': 'oui',
}
)
})
it('calculate simulations-dividendes', () => {
runSimulations(
dividendesSituations,
[
...dividendesConfig.objectifs,
'bénéficiaire . dividendes . cotisations et contributions',
'impôt . montant',
'impôt . revenu imposable',
'bénéficiaire . dividendes . imposables',
"impôt . taux d'imposition",
],
dividendesConfig.situation
)
})

View File

@ -0,0 +1,69 @@
// The goal of these tests is to avoid deploying unwanted changes in the calculations. We run a number
// of simulations and persist their results in a snapshot (ie, a file commited in git). Our test runner,
// Jest, then compare the existing snapshot with the current Engine calculation and reports any difference.
//
// We only persist targets values in the file system, in order to be resilient to rule renaming (if a rule is
// renamed the test configuration may be adapted but the persisted snapshot will remain unchanged).
import rules, { DottedName } from 'modele-social'
import { expect } from 'vitest'
import { engineFactory } from '../../source/components/utils/EngineContext'
import { Simulation } from '../../source/reducers/rootReducer'
type SituationsSpecs = Record<string, Simulation['situation'][]>
const roundResult = (arr: number[]) => arr.map((x) => Math.round(x))
export const engine = engineFactory(rules, {
logger: {
warn: () => undefined,
error: (m: string) => console.error(m),
log: () => undefined,
},
})
export const runSimulations = (
situationsSpecs: SituationsSpecs,
objectifs: DottedName[],
baseSituation: Simulation['situation'] = {}
) =>
Object.entries(situationsSpecs).map(([name, situations]) =>
situations.forEach((situation) => {
Object.keys(situation).forEach((situationRuleName) => {
// TODO: This check may be moved in the `engine.setSituation` method
if (!Object.keys(engine.getParsedRules()).includes(situationRuleName)) {
throw new Error(
`La règle ${situationRuleName} n'existe pas dans la base de règles.`
)
}
})
engine.setSituation({ ...baseSituation, ...situation })
const res = objectifs.map(
(objectif) => engine.evaluate(objectif).nodeValue
)
const evaluatedNotifications = Object.values(engine.getParsedRules())
.filter(
(rule) =>
rule.rawNode.type === 'notification' &&
engine.evaluate(rule.dottedName).nodeValue === true
)
.map((node) => node.dottedName)
const snapshotedDisplayedNotifications = evaluatedNotifications.length
? `\nNotifications affichées : ${evaluatedNotifications.join(', ')}`
: ''
// Stringify is not required, but allows the result to be displayed in a single
// line in the snapshot, which considerably reduce the number of lines of this snapshot
// and improve its readability.
expect(
JSON.stringify(roundResult(res as number[])) +
snapshotedDisplayedNotifications
).toMatchSnapshot(name)
})
)
export const getMissingVariables = (
evaluatedNode: ReturnType<typeof engine['evaluate']>
) =>
Object.entries(evaluatedNode.missingVariables)
.sort(([, scoreA], [, scoreB]) => scoreB - scoreA)
.map(([name]) => name)