diff --git a/app/services/variant_units/option_value_namer.rb b/app/services/variant_units/option_value_namer.rb index 155fb33a4d..66e50833ba 100644 --- a/app/services/variant_units/option_value_namer.rb +++ b/app/services/variant_units/option_value_namer.rb @@ -56,7 +56,7 @@ module VariantUnits def option_value_value_unit_scaled unit_scale, unit_name = scale_for_unit_value - value = BigDecimal(@variant.unit_value / unit_scale, 6) + value = BigDecimal(@variant.unit_value / unit_scale, 6).truncate(2) [value, unit_name] end diff --git a/spec/services/variant_units/option_value_namer_spec.rb b/spec/services/variant_units/option_value_namer_spec.rb index da3124c19c..936edbbfb6 100644 --- a/spec/services/variant_units/option_value_namer_spec.rb +++ b/spec/services/variant_units/option_value_namer_spec.rb @@ -145,6 +145,15 @@ module VariantUnits allow(v).to receive(:unit_value) { nil } expect(subject.send(:option_value_value_unit)).to eq [nil, nil] end + + it "truncates value to 2 decimals maximum" do + oz_scale = 28.35 + p = double(:product, variant_unit: 'weight', variant_unit_scale: oz_scale) + allow(v).to receive(:product) { p } + # The unit_value is stored rounded to 2 decimals + allow(v).to receive(:unit_value) { (12.5 * oz_scale).round(2) } + expect(subject.send(:option_value_value_unit)).to eq [BigDecimal(12.5, 6), 'oz'] + end end end end