From 547f46fbc9d73ba1985b0f17bea698e7f67efab8 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Tue, 18 Feb 2014 10:32:36 +1100 Subject: [PATCH] Deal with unit_value of zero correctly - do not treat as nil --- .../admin/bulk_product_update.js.coffee | 8 ++++--- .../unit/bulk_product_update_spec.js.coffee | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/admin/bulk_product_update.js.coffee b/app/assets/javascripts/admin/bulk_product_update.js.coffee index a9735aca4e..83590ba45d 100644 --- a/app/assets/javascripts/admin/bulk_product_update.js.coffee +++ b/app/assets/javascripts/admin/bulk_product_update.js.coffee @@ -222,11 +222,12 @@ productEditModule.controller "AdminProductEditCtrl", [ $scope.loadVariantVariantUnit = (product, variant) -> unit_value = $scope.variantUnitValue product, variant - variant.unit_value_with_description = "#{unit_value || ''} #{variant.unit_description || ''}".trim() + unit_value = if unit_value? then unit_value else '' + variant.unit_value_with_description = "#{unit_value} #{variant.unit_description || ''}".trim() $scope.variantUnitValue = (product, variant) -> - if variant.unit_value + if variant.unit_value? if product.variant_unit_scale variant.unit_value / product.variant_unit_scale else @@ -421,7 +422,8 @@ productEditModule.controller "AdminProductEditCtrl", [ match = variant.unit_value_with_description.match(/^([\d\.]+|)( |)(.*)$/) if match product = $scope.findProduct(product.id) - variant.unit_value = parseFloat(match[1]) || null + variant.unit_value = parseFloat(match[1]) + variant.unit_value = null if isNaN(variant.unit_value) variant.unit_value *= product.variant_unit_scale if variant.unit_value && product.variant_unit_scale variant.unit_description = match[3] diff --git a/spec/javascripts/unit/bulk_product_update_spec.js.coffee b/spec/javascripts/unit/bulk_product_update_spec.js.coffee index e0d3f33660..d88bb1e34e 100644 --- a/spec/javascripts/unit/bulk_product_update_spec.js.coffee +++ b/spec/javascripts/unit/bulk_product_update_spec.js.coffee @@ -499,6 +499,13 @@ describe "AdminProductEditCtrl", -> scope.loadVariantVariantUnit product, product.variants[0] expect(product.variants[0].unit_value_with_description).toEqual '2.5' + it "displays a unit_value of zero", -> + product = + variant_unit_scale: 1.0 + variants: [{id: 1, unit_value: 0}] + scope.loadVariantVariantUnit product, product.variants[0] + expect(product.variants[0].unit_value_with_description).toEqual '0' + describe "calculating the scaled unit value for a variant", -> it "returns the scaled value when variant has a unit_value", -> @@ -511,6 +518,11 @@ describe "AdminProductEditCtrl", -> variant = {unit_value: 5} expect(scope.variantUnitValue(product, variant)).toEqual 5 + it "returns zero when the value is zero", -> + product = {} + variant = {unit_value: 0} + expect(scope.variantUnitValue(product, variant)).toEqual 0 + it "returns null when the variant has no unit_value", -> product = {} variant = {} @@ -761,6 +773,15 @@ describe "AdminProductEditCtrl", -> scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual {} + it "sets zero when the field is zero", -> + testProduct = {id: 123, variant_unit_scale: 1.0} + testVariant = {unit_value_with_description: "0"} + scope.packVariant(testProduct, testVariant) + expect(testVariant).toEqual + unit_value: 0 + unit_description: '' + unit_value_with_description: "0" + it "converts value from chosen unit to base unit", -> testProduct = {id: 123, variant_unit_scale: 1000} testVariant = {unit_value_with_description: "250.5"}