Skip to content

Commit

Permalink
test: setup inline tests
Browse files Browse the repository at this point in the history
  • Loading branch information
EmileRolley committed Sep 25, 2024
1 parent a947a1e commit 1e37458
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 3 deletions.
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@
"scripts": {
"clean": "rm -r publicodes-voiture.model.json index.d.ts index.js",
"build": "node build.js",
"test": "vitest run",
"generate": "node scripts/generate-empreinte.js",
"doc": "yarn run build && cd online-doc && yarn run dev",
"doc:build": "yarn run build && cd online-doc && yarn run build"
},
"devDependencies": {
"@publicodes/tools": "^1.2.5",
"csv-parser": "^3.0.0",
"vitest": "^2.1.1"
},
"peerDependencies": {
"publicodes": "^1.5.1"
Expand Down
10 changes: 9 additions & 1 deletion rules/couts/voiture-decote.publicodes
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,16 @@ décote:
alors: 45%
- si: durée décote <= 4
alors: 55%
- sinon: 60%
- sinon: 60 + (5 * (durée décote - 5))
plafond: 80%
unité: "%"
note: |
Nous avons choisi un plafond de 80% pour la décote. Cette valeur est
arbitraire mais nous considérons que la valeur de revente d'une voiture
ne peut pas descendre en dessous de 20% de sa valeur d'achat. Nous
n'avons pas trouvé de sources fiables pour justifier ce choix, cela
pourrait être un point d'amélioration pour ce modèle.
### Sources
Selon cet
Expand Down
11 changes: 9 additions & 2 deletions rules/voiture.publicodes
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,21 @@ voiture . prix d'achat:
par défaut:
variations:
- si: voiture . occasion
#FIXME: décote depend de prix d'achat -> non applicable.
alors: prix d'achat . estimé * décote
alors: prix d'achat . estimé * (100% - décote)
- sinon: prix d'achat . estimé
plancher: 1
unité:
description: |
Renseignez le montant que vous avez payé pour l'achat de votre voiture
(hors primes ou aides à l'achat) qu'elle soit neuve ou d'occasion.
test:
prix d'achat par défaut:
contexte: []
valeur attendue: 38000 €
prix d'achat occasion:
contexte:
voiture . occasion: oui
valeur attendue: 38000 € * 20%

voiture . occasion:
titre: Achat d'occasion
Expand Down
27 changes: 27 additions & 0 deletions test/inline.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import Engine from "publicodes"
import { getModelFromSource } from "@publicodes/tools/compilation"
import { expect, test, describe } from "vitest"

const model = getModelFromSource("rules/**/*.publicodes")

const engine = new Engine(model)
const defaultEngine = engine.shallowCopy()

Object.entries(model).forEach(([ruleName, rule]) => {
if (rule && "test" in rule) {
describe(ruleName, () => {
Object.entries(rule.test).forEach(([testName, testInfos]) => {
test(testName, () => {
const context = testInfos.contexte || {}
const expected = defaultEngine.evaluate(testInfos["valeur attendue"])

engine.setSituation(context)
const actual = engine.evaluate(ruleName)

expect(actual.nodeValue).toEqual(expected.nodeValue)
expect(actual.unit).toEqual(expected.unit)
})
})
})
}
})

0 comments on commit 1e37458

Please sign in to comment.