1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-02-09 22:45:01 +00:00
mon-entreprise/publicodes/test/cycles.test.js
Alexandre Hajjar 343ca00a27 ⚙️ Detect cycles in parsed rules
Build a dependencies graph and detect cycles:
* Types and guards for nodes of the ParsedRules AST
* Simple visitor framework for the nodes and their `formule` sub-nodes
* Build a directed graph for dependencies using @dagrejs/graphlib
2020-10-09 13:30:39 +02:00

29 lines
702 B
JavaScript

import { expect } from 'chai'
import dedent from 'dedent-js'
import { cyclesInDependenciesGraph } from '../source/cyclesLib/graph'
describe('Cyclic dependencies detectron 3000 ™', () => {
it('should detect the trivial formule cycle', () => {
const rules = dedent`
a:
formule: a + 1
`
const cycles = cyclesInDependenciesGraph(rules)
expect(cycles).to.deep.equal([['a']])
})
it('should detect nested and parallel formule cycles', () => {
const rules = dedent`
a:
formule: b + 1
b:
formule: c + d + 1
c:
formule: a + 1
d:
formule: b + 1
`
const cycles = cyclesInDependenciesGraph(rules)
expect(cycles).to.deep.equal([['d', 'c', 'b', 'a']])
})
})