diff --git a/app/assets/javascripts/admin/products/services/variant_unit_manager.js.coffee b/app/assets/javascripts/admin/products/services/variant_unit_manager.js.coffee index d48ca458cd..244d51cde6 100644 --- a/app/assets/javascripts/admin/products/services/variant_unit_manager.js.coffee +++ b/app/assets/javascripts/admin/products/services/variant_unit_manager.js.coffee @@ -14,7 +14,7 @@ angular.module("admin.products").factory "VariantUnitManager", -> 453.6: name: 'lb' system: 'imperial' - 28.34952: + 28.35: name: 'oz' system: 'imperial' 'volume': diff --git a/app/models/product_import/unit_converter.rb b/app/models/product_import/unit_converter.rb index f9467f4ac5..c5321a4990 100644 --- a/app/models/product_import/unit_converter.rb +++ b/app/models/product_import/unit_converter.rb @@ -32,7 +32,7 @@ module ProductImport { 'g' => { scale: 1, unit: 'weight' }, 'kg' => { scale: 1000, unit: 'weight' }, - 'oz' => { scale: 28.34952, unit: 'weight' }, + 'oz' => { scale: 28.35, unit: 'weight' }, 'lb' => { scale: 453.6, unit: 'weight' }, 't' => { scale: 1_000_000, unit: 'weight' }, 'ml' => { scale: 0.001, unit: 'volume' }, diff --git a/lib/open_food_network/option_value_namer.rb b/lib/open_food_network/option_value_namer.rb index e7b929a029..f47bddc20a 100644 --- a/lib/open_food_network/option_value_namer.rb +++ b/lib/open_food_network/option_value_namer.rb @@ -39,7 +39,6 @@ module OpenFoodNetwork if @variant.unit_value.present? if %w(weight volume).include? @variant.product.variant_unit value, unit_name = option_value_value_unit_scaled - else value = @variant.unit_value unit_name = pluralize(@variant.product.variant_unit_name, value) @@ -66,7 +65,7 @@ module OpenFoodNetwork units = { 'weight' => { 1.0 => { 'name' => 'g', 'system' => 'metric' }, - 28.34952 => { 'name' => 'oz', 'system' => 'imperial' }, + 28.35 => { 'name' => 'oz', 'system' => 'imperial' }, 453.6 => { 'name' => 'lb', 'system' => 'imperial' }, 1000.0 => { 'name' => 'kg', 'system' => 'metric' }, 1_000_000.0 => { 'name' => 'T', 'system' => 'metric' } diff --git a/spec/javascripts/unit/admin/services/variant_unit_manager_spec.js.coffee b/spec/javascripts/unit/admin/services/variant_unit_manager_spec.js.coffee index f9664ad55b..40f03cf8cb 100644 --- a/spec/javascripts/unit/admin/services/variant_unit_manager_spec.js.coffee +++ b/spec/javascripts/unit/admin/services/variant_unit_manager_spec.js.coffee @@ -29,7 +29,7 @@ describe "VariantUnitManager", -> describe "unitScales", -> it "returns a sorted set of scales for unit type weight", -> - expect(VariantUnitManager.unitScales('weight')).toEqual [1.0, 28.34952, 453.6, 1000.0, 1000000.0] + expect(VariantUnitManager.unitScales('weight')).toEqual [1.0, 28.35, 453.6, 1000.0, 1000000.0] it "returns a sorted set of scales for unit type volume", -> expect(VariantUnitManager.unitScales('volume')).toEqual [0.001, 1.0, 1000.0] @@ -37,13 +37,13 @@ describe "VariantUnitManager", -> describe "compatibleUnitScales", -> it "returns a sorted set of compatible scales based on the scale and unit type provided", -> expect(VariantUnitManager.compatibleUnitScales(1, "weight")).toEqual [1.0, 1000.0, 1000000.0] - expect(VariantUnitManager.compatibleUnitScales(453.6, "weight")).toEqual [28.34952, 453.6] + expect(VariantUnitManager.compatibleUnitScales(453.6, "weight")).toEqual [28.35, 453.6] describe "variantUnitOptions", -> it "returns an array of options", -> expect(VariantUnitManager.variantUnitOptions()).toEqual [ ["Weight (g)", "weight_1"], - ["Weight (oz)", "weight_28.34952"], + ["Weight (oz)", "weight_28.35"], ["Weight (lb)", "weight_453.6"], ["Weight (kg)", "weight_1000"], ["Weight (T)", "weight_1000000"], diff --git a/spec/lib/open_food_network/option_value_namer_spec.rb b/spec/lib/open_food_network/option_value_namer_spec.rb index 1e3ec2944c..88e215d5b6 100644 --- a/spec/lib/open_food_network/option_value_namer_spec.rb +++ b/spec/lib/open_food_network/option_value_namer_spec.rb @@ -83,12 +83,21 @@ module OpenFoodNetwork expect(subject.send(:option_value_value_unit)).to eq [1, 'kg'] end + it "returns only values that are in the same measurement systems" do + p = double(:product, variant_unit: 'weight', variant_unit_scale: 1.0) + allow(v).to receive(:product) { p } + allow(v).to receive(:unit_value) { 500 } + # 500g would convert to > 1 pound, but we don't want the namer to use + # pounds since it's in a different measurement system. + expect(subject.send(:option_value_value_unit)).to eq [500, 'g'] + end + it "generates values for all weight scales" do - [[1.0, 'g'], [1000.0, 'kg'], [1_000_000.0, 'T']].each do |scale, unit| + [[1.0, 'g'], [28.35, 'oz'], [453.6, 'lb'], [1000.0, 'kg'], [1_000_000.0, 'T']].each do |scale, unit| p = double(:product, variant_unit: 'weight', variant_unit_scale: scale) allow(v).to receive(:product) { p } - allow(v).to receive(:unit_value) { 100 * scale } - expect(subject.send(:option_value_value_unit)).to eq [100, unit] + allow(v).to receive(:unit_value) { 10.0 * scale } + expect(subject.send(:option_value_value_unit)).to eq [10, unit] end end