diff --git a/app/imports/api/engine/computation/buildComputation/tests/linkCalculationDependencies.testFn.js b/app/imports/api/engine/computation/buildComputation/tests/linkCalculationDependencies.testFn.js index ca81ae6e..3996b5a3 100644 --- a/app/imports/api/engine/computation/buildComputation/tests/linkCalculationDependencies.testFn.js +++ b/app/imports/api/engine/computation/buildComputation/tests/linkCalculationDependencies.testFn.js @@ -5,6 +5,8 @@ import clean from '../../utility/cleanProp.testFn.js'; export default function(){ const computation = buildComputationFromProps(testProperties); const hasLink = computation.dependencyGraph.hasLink; + const prop = (id) => computation.propsById[id]; + assert.isTrue( !!hasLink('childId', 'spellListId'), 'Ancestor references of parent in inline calculations should create dependency' @@ -21,6 +23,10 @@ export default function(){ !!hasLink('grandchildId', 'wisdom'), 'Variable references create dependencies even if the attributes don\'t exist' ); + assert.equal( + prop('strengthId').baseValue.errors.length, 1, + 'Parse errors should be added to calculation errors' + ); } var testProperties = [ @@ -49,6 +55,9 @@ var testProperties = [ _id: 'strengthId', type: 'attribute', variableName: 'strength', + baseValue: { + calculation: '15 + ', + }, ancestors: [{id: 'charId'}], }), ]; diff --git a/app/imports/api/engine/computation/computeComputation/computeCalculations.js b/app/imports/api/engine/computation/computeComputation/computeCalculations.js index 04212b13..b78bc5fc 100644 --- a/app/imports/api/engine/computation/computeComputation/computeCalculations.js +++ b/app/imports/api/engine/computation/computeComputation/computeCalculations.js @@ -24,7 +24,11 @@ function evaluateCalculation(calculation, scope){ } else { calculation.value = NaN; } - calculation.errors = context.errors; + if (calculation.errors){ + calculation.errors = [...calculation.errors, ...context.errors] + } else { + calculation.errors = context.errors + } } function embedInlineCalculations(inlineCalcObj){ diff --git a/app/imports/api/engine/computation/computeComputation/tests/computeAttribute.testFn.js b/app/imports/api/engine/computation/computeComputation/tests/computeAttribute.testFn.js index 37c30504..7cc0a32e 100644 --- a/app/imports/api/engine/computation/computeComputation/tests/computeAttribute.testFn.js +++ b/app/imports/api/engine/computation/computeComputation/tests/computeAttribute.testFn.js @@ -13,6 +13,10 @@ export default function(){ assert.equal(prop('strengthId').modifier, 1); assert.equal(prop('referencesDexId').value, 4); assert.equal(prop('hitDiceId').constitutionMod, 5); + assert.equal( + prop('parseErrorId').baseValue.errors.length, 1, + 'Parse errors should be added to calculation errors' + ); } var testProperties = [ @@ -74,4 +78,13 @@ var testProperties = [ calculation: '4' }, }), + clean({ + _id: 'parseErrorId', + variableName: 'parseError', + type: 'attribute', + attributeType: 'ability', + baseValue: { + calculation: '12 +' + }, + }), ];