From d8772752dafec4fa1397b271409f742007cbfd47 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Mon, 15 Mar 2021 09:51:19 +0100 Subject: [PATCH] Factorize Unit Price into a single method: displayableUnitPrice - Code is at a single place - No need to import `localizeCurrencyFilter` into Controllers that required unit_prices - Add `currencyconfig` into unit_prices_spec as it's now dependant to localizeCurrencyFilter --- .../products/controllers/units_controller.js.coffee | 8 ++------ .../controllers/variant_units_controller.js.coffee | 8 ++------ .../admin/products/services/unit_prices.js.coffee | 9 ++++++++- .../admin/products/services/unit_prices_spec.js.coffee | 6 ++++++ 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/admin/products/controllers/units_controller.js.coffee b/app/assets/javascripts/admin/products/controllers/units_controller.js.coffee index cc1f4cc669..df4cb42df4 100644 --- a/app/assets/javascripts/admin/products/controllers/units_controller.js.coffee +++ b/app/assets/javascripts/admin/products/controllers/units_controller.js.coffee @@ -1,5 +1,5 @@ angular.module("admin.products") - .controller "unitsCtrl", ($scope, VariantUnitManager, OptionValueNamer, UnitPrices, localizeCurrencyFilter) -> + .controller "unitsCtrl", ($scope, VariantUnitManager, OptionValueNamer, UnitPrices) -> $scope.product = { master: {} } $scope.product.master.product = $scope.product $scope.placeholder_text = "" @@ -39,11 +39,7 @@ angular.module("admin.products") unit_type = $scope.product.variant_unit unit_value = $scope.product.master.unit_value variant_unit_name = $scope.product.variant_unit_name - $scope.unit_price = null - if price && !isNaN(price) && unit_type && unit_value - value = localizeCurrencyFilter(UnitPrices.price(price, scale, unit_type, unit_value, variant_unit_name)) - unit = UnitPrices.unit(scale, unit_type, variant_unit_name) - $scope.unit_price = value + " / " + unit + $scope.unit_price = UnitPrices.displayableUnitPrice(price, scale, unit_type, unit_value, variant_unit_name) $scope.hasVariants = (product) -> Object.keys(product.variants).length > 0 diff --git a/app/assets/javascripts/admin/products/controllers/variant_units_controller.js.coffee b/app/assets/javascripts/admin/products/controllers/variant_units_controller.js.coffee index 57ef120f1d..33c01542ff 100644 --- a/app/assets/javascripts/admin/products/controllers/variant_units_controller.js.coffee +++ b/app/assets/javascripts/admin/products/controllers/variant_units_controller.js.coffee @@ -1,4 +1,4 @@ -angular.module("admin.products").controller "variantUnitsCtrl", ($scope, VariantUnitManager, $timeout, UnitPrices, localizeCurrencyFilter) -> +angular.module("admin.products").controller "variantUnitsCtrl", ($scope, VariantUnitManager, $timeout, UnitPrices) -> $scope.unitName = (scale, type) -> VariantUnitManager.getUnitName(scale, type) @@ -17,11 +17,7 @@ angular.module("admin.products").controller "variantUnitsCtrl", ($scope, Variant else unit_value = 1 variant_unit_name = angular.element("#product_variant_unit_name").val() - $scope.unit_price = null - if price && !isNaN(price) && unit_type && unit_value - value = localizeCurrencyFilter(UnitPrices.price(price, scale, unit_type, unit_value, variant_unit_name)) - unit = UnitPrices.unit(scale, unit_type, variant_unit_name) - $scope.unit_price = value + " / " + unit + $scope.unit_price = UnitPrices.displayableUnitPrice(price, scale, unit_type, unit_value, variant_unit_name) $scope.scale = angular.element('#product_variant_unit_scale').val() diff --git a/app/assets/javascripts/admin/products/services/unit_prices.js.coffee b/app/assets/javascripts/admin/products/services/unit_prices.js.coffee index bf6655ae37..183c1576c4 100644 --- a/app/assets/javascripts/admin/products/services/unit_prices.js.coffee +++ b/app/assets/javascripts/admin/products/services/unit_prices.js.coffee @@ -1,5 +1,12 @@ -angular.module("admin.products").factory "UnitPrices", (VariantUnitManager) -> +angular.module("admin.products").factory "UnitPrices", (VariantUnitManager, localizeCurrencyFilter) -> class UnitPrices + @displayableUnitPrice: (price, scale, unit_type, unit_value, variant_unit_name) -> + if price && !isNaN(price) && unit_type && unit_value + value = localizeCurrencyFilter(UnitPrices.price(price, scale, unit_type, unit_value, variant_unit_name)) + unit = UnitPrices.unit(scale, unit_type, variant_unit_name) + return value + " / " + unit + return null + @price: (price, scale, unit_type, unit_value) -> price / @denominator(scale, unit_type, unit_value) diff --git a/spec/javascripts/unit/admin/products/services/unit_prices_spec.js.coffee b/spec/javascripts/unit/admin/products/services/unit_prices_spec.js.coffee index 1c5067f7ee..489a40abff 100644 --- a/spec/javascripts/unit/admin/products/services/unit_prices_spec.js.coffee +++ b/spec/javascripts/unit/admin/products/services/unit_prices_spec.js.coffee @@ -1,10 +1,16 @@ describe "UnitPrices service", -> UnitPrices = null + currencyconfig = + symbol: "$" + symbol_position: "before" + currency: "D" + hide_cents: "false" beforeEach -> module "admin.products" module ($provide)-> $provide.value "availableUnits", "g,kg,T,mL,L,kL,oz,lb" + $provide.value "currencyConfig", currencyconfig null inject (_UnitPrices_) -> UnitPrices = _UnitPrices_