diff --git a/app/assets/javascripts/admin/bulk_product_update.js.coffee b/app/assets/javascripts/admin/bulk_product_update.js.coffee index ce198c4a74..3d13e0423c 100644 --- a/app/assets/javascripts/admin/bulk_product_update.js.coffee +++ b/app/assets/javascripts/admin/bulk_product_update.js.coffee @@ -216,8 +216,13 @@ productEditModule.controller "AdminProductEditCtrl", [ if product.variants for variant in product.variants - unit_value = $scope.variantUnitValue product, variant - variant.unit_value_with_description = "#{unit_value || ''} #{variant.unit_description || ''}".trim() + $scope.loadVariantVariantUnit product, variant + $scope.loadVariantVariantUnit product, product.master if product.master + + + $scope.loadVariantVariantUnit = (product, variant) -> + unit_value = $scope.variantUnitValue product, variant + variant.unit_value_with_description = "#{unit_value || ''} #{variant.unit_description || ''}".trim() $scope.variantUnitValue = (product, variant) -> @@ -369,6 +374,7 @@ productEditModule.controller "AdminProductEditCtrl", [ else product.variant_unit = product.variant_unit_with_scale product.variant_unit_scale = null + $scope.packVariant product, product.master if product.master if product.variants for id, variant of product.variants $scope.packVariant product, variant diff --git a/spec/javascripts/unit/bulk_product_update_spec.js.coffee b/spec/javascripts/unit/bulk_product_update_spec.js.coffee index 4381bec9e1..769f6cf8c8 100644 --- a/spec/javascripts/unit/bulk_product_update_spec.js.coffee +++ b/spec/javascripts/unit/bulk_product_update_spec.js.coffee @@ -427,12 +427,24 @@ describe "AdminProductEditCtrl", -> scope.loadVariantUnit product expect(product.variant_unit_with_scale).toEqual "items" + it "loads data for variants (inc. master)", -> + spyOn scope, "loadVariantVariantUnit" + + product = + variant_unit_scale: 1.0 + master: {id: 1, unit_value: 1, unit_description: '(one)'} + variants: [{id: 2, unit_value: 2, unit_description: '(two)'}] + scope.loadVariantUnit product + + expect(scope.loadVariantVariantUnit).toHaveBeenCalledWith product, product.variants[0] + expect(scope.loadVariantVariantUnit).toHaveBeenCalledWith product, product.master + describe "setting variant unit_value_with_description", -> it "sets by combining unit_value and unit_description", -> product = variant_unit_scale: 1.0 variants: [{id: 1, unit_value: 1, unit_description: '(bottle)'}] - scope.loadVariantUnit product + scope.loadVariantVariantUnit product, product.variants[0] expect(product.variants[0]).toEqual id: 1 unit_value: 1 @@ -443,21 +455,21 @@ describe "AdminProductEditCtrl", -> product = variant_unit_scale: 1.0 variants: [{id: 1, unit_value: 1}] - scope.loadVariantUnit product + scope.loadVariantVariantUnit product, product.variants[0] expect(product.variants[0].unit_value_with_description).toEqual '1' it "uses unit_description when value is missing", -> product = variant_unit_scale: 1.0 variants: [{id: 1, unit_description: 'Small'}] - scope.loadVariantUnit product + scope.loadVariantVariantUnit product, product.variants[0] expect(product.variants[0].unit_value_with_description).toEqual 'Small' it "converts values from base value to chosen unit", -> product = variant_unit_scale: 1000.0 variants: [{id: 1, unit_value: 2500}] - scope.loadVariantUnit product + scope.loadVariantVariantUnit product, product.variants[0] expect(product.variants[0].unit_value_with_description).toEqual '2.5' @@ -617,6 +629,17 @@ describe "AdminProductEditCtrl", -> variant_unit_scale: null variant_unit_with_scale: 'items' + it "packs the master variant", -> + spyOn scope, "packVariant" + testVariant = {id: 1} + testProduct = + id: 1 + master: testVariant + + scope.packProduct(testProduct) + + expect(scope.packVariant).toHaveBeenCalledWith(testProduct, testVariant) + it "packs each variant", -> spyOn scope, "packVariant" testVariant = {id: 1}