✅ Introduit des tests sur le calcul des extraSteps
parent
2f58bd5388
commit
3337c91df6
|
@ -65,13 +65,14 @@ describe('fold', function() {
|
|||
expect(result.foldedSteps[0]).to.equal("top . aa")
|
||||
});
|
||||
|
||||
it('should not list the same question in folded and unfolded', function() {
|
||||
it('should list questions with defaults as extra steps', function() {
|
||||
let fakeState = {}
|
||||
let stateSelector = state => name => fakeState[name]
|
||||
|
||||
let rawRules = [
|
||||
// TODO - this won't work without the indirection, figure out why
|
||||
{nom: "startHere", formule: {somme: ["a","b","c"]}, espace: "top"},
|
||||
{nom: "startHere", formule: {somme: ["a","b","c"]}, espace: "top",
|
||||
simulateur: {"par défaut": {"top . bb": 1, "top . cc":0}}},
|
||||
{nom: "a", espace: "top", formule: "aa"},
|
||||
{nom: "b", espace: "top", formule: "bb"},
|
||||
{nom: "c", espace: "top", formule: "cc"},
|
||||
|
@ -84,20 +85,53 @@ describe('fold', function() {
|
|||
var step1 = reducer({},{type:'START_CONVERSATION', rootVariable: 'startHere'})
|
||||
fakeState['top . aa'] = 1
|
||||
var step2 = reducer(step1,{type:'STEP_ACTION', name: 'fold', step: 'top . aa'})
|
||||
fakeState['top . bb'] = 1
|
||||
var step3 = reducer(step2,{type:'STEP_ACTION', name: 'fold', step: 'top . bb'})
|
||||
var step4 = reducer(step3,{type:'STEP_ACTION', name: 'unfold', step: 'top . aa'})
|
||||
var step5 = reducer(step4,{type:'STEP_ACTION', name: 'unfold', step: 'top . bb'})
|
||||
var step6 = reducer(step5,{type:'STEP_ACTION', name: 'fold', step: 'top . bb'})
|
||||
|
||||
let result = step6
|
||||
let result = step2
|
||||
|
||||
expect(result).to.have.property('currentQuestion')
|
||||
expect(result.currentQuestion).to.be.an('null')
|
||||
expect(result).to.have.property('foldedSteps')
|
||||
expect(result.foldedSteps).to.have.lengthOf(1)
|
||||
expect(result.foldedSteps[0]).to.equal("top . aa")
|
||||
expect(result).to.have.property('extraSteps')
|
||||
expect(result.extraSteps).to.have.lengthOf(2)
|
||||
expect(result.extraSteps[0]).to.equal("top . bb")
|
||||
expect(result.extraSteps[1]).to.equal("top . cc")
|
||||
});
|
||||
|
||||
it('should return questions with a default to extra steps', function() {
|
||||
let fakeState = {}
|
||||
let stateSelector = state => name => fakeState[name]
|
||||
|
||||
let rawRules = [
|
||||
// TODO - this won't work without the indirection, figure out why
|
||||
{nom: "startHere", formule: {somme: ["a","b","c"]}, espace: "top",
|
||||
simulateur: {"par défaut": {"top . bb": 1, "top . cc":0}}},
|
||||
{nom: "a", espace: "top", formule: "aa"},
|
||||
{nom: "b", espace: "top", formule: "bb"},
|
||||
{nom: "c", espace: "top", formule: "cc"},
|
||||
{nom: "aa", question: "?", titre: "a", espace: "top"},
|
||||
{nom: "bb", question: "?", titre: "b", espace: "top"},
|
||||
{nom: "cc", question: "?", titre: "c", espace: "top"}],
|
||||
rules = rawRules.map(enrichRule),
|
||||
reducer = reduceSteps(tracker, rules, stateSelector)
|
||||
|
||||
var step1 = reducer({},{type:'START_CONVERSATION', rootVariable: 'startHere'})
|
||||
fakeState['top . aa'] = 1
|
||||
var step2 = reducer(step1,{type:'STEP_ACTION', name: 'fold', step: 'top . aa'})
|
||||
var step3 = reducer(step2,{type:'STEP_ACTION', name: 'unfold', step: 'top . bb'})
|
||||
var step4 = reducer(step3,{type:'STEP_ACTION', name: 'unfold', step: 'top . cc'})
|
||||
|
||||
let result = step4
|
||||
|
||||
expect(result).to.have.property('currentQuestion')
|
||||
expect(result.currentQuestion).to.equal("top . cc")
|
||||
expect(result).to.have.property('foldedSteps')
|
||||
expect(result.foldedSteps).to.have.lengthOf(2)
|
||||
expect(result.foldedSteps).to.have.lengthOf(1)
|
||||
expect(result.foldedSteps[0]).to.equal("top . aa")
|
||||
expect(result.foldedSteps[1]).to.equal("top . bb")
|
||||
expect(result).to.have.property('extraSteps')
|
||||
expect(result.extraSteps).to.have.lengthOf(1)
|
||||
expect(result.extraSteps[0]).to.equal("top . bb")
|
||||
});
|
||||
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue