diff --git a/engines/dfc_provider/app/services/quantitative_value_builder.rb b/engines/dfc_provider/app/services/quantitative_value_builder.rb index 3779463115..6baac1eecf 100644 --- a/engines/dfc_provider/app/services/quantitative_value_builder.rb +++ b/engines/dfc_provider/app/services/quantitative_value_builder.rb @@ -33,7 +33,7 @@ class QuantitativeValueBuilder < DfcBuilder product.variant_unit = measure product.variant_unit_name = unit_name if measure == "items" product.variant_unit_scale = unit_scale - product.unit_value = quantity.value * unit_scale + product.unit_value = quantity.value.to_f * unit_scale end # Map DFC units to OFN fields: diff --git a/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb b/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb index 4c5403e7e7..f18a58b561 100644 --- a/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb +++ b/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb @@ -104,6 +104,20 @@ RSpec.describe QuantitativeValueBuilder do expect(product.unit_value).to eq 0.005 end + it "interpretes values given as a string" do + quantity = DataFoodConsortium::Connector::QuantitativeValue.new( + unit: quantity_unit.KILOGRAM, + value: "0.4", + ) + + builder.apply(quantity, product) + + expect(product.variant_unit).to eq "weight" + expect(product.variant_unit_name).to eq nil + expect(product.variant_unit_scale).to eq 1_000 + expect(product.unit_value).to eq 400 + end + it "knows imperial units" do quantity = DataFoodConsortium::Connector::QuantitativeValue.new( unit: quantity_unit.POUNDMASS,