From 38c8bc187c28d428ba51027ed19655dee2a6132a Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Mon, 30 Mar 2026 17:34:13 +0100 Subject: [PATCH] CLDC-4289: Ensure numbers can be parsed to floats before totaling --- app/frontend/controllers/numeric_question_controller.js | 2 +- spec/features/form/progressive_total_field_spec.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/frontend/controllers/numeric_question_controller.js b/app/frontend/controllers/numeric_question_controller.js index 56c76f636..83f8e2fef 100644 --- a/app/frontend/controllers/numeric_question_controller.js +++ b/app/frontend/controllers/numeric_question_controller.js @@ -11,7 +11,7 @@ export default class extends Controller { calculateFields () { const affectedField = this.element.dataset.target const fieldsToAdd = JSON.parse(this.element.dataset.calculated).map(x => `lettings-log-${x.replaceAll('_', '-')}-field`) - const valuesToAdd = fieldsToAdd.map(x => getFieldValue(x)).filter(x => x) + const valuesToAdd = fieldsToAdd.map(x => getFieldValue(x)).filter(x => x && !isNaN(parseFloat(x))) const newValue = valuesToAdd.map(x => parseFloat(x)).reduce((a, b) => a + b, 0).toFixed(2) const elementToUpdate = document.getElementById(affectedField) elementToUpdate.value = newValue diff --git a/spec/features/form/progressive_total_field_spec.rb b/spec/features/form/progressive_total_field_spec.rb index 1f90a4483..814eefb1d 100644 --- a/spec/features/form/progressive_total_field_spec.rb +++ b/spec/features/form/progressive_total_field_spec.rb @@ -58,4 +58,13 @@ RSpec.describe "Accessible Autocomplete" do fill_in("lettings-log-supcharg-field-error", with: 50) expect(find("#lettings-log-tcharge-field").value).to eq("550.00") end + + it "does not show 'NaN' if one of the inputs is not a number", :js do + visit("/lettings-logs/#{lettings_log.id}/rent") + expect(page).to have_selector("#tcharge_div") + fill_in("lettings-log-brent-field", with: 5) + expect(find("#lettings-log-tcharge-field").value).to eq("5.00") + fill_in("lettings-log-pscharge-field", with: "something else") + expect(find("#lettings-log-tcharge-field").value).to eq("5.00") + end end