From 44e9cf5ade5561fb44c38ecf061ca0b5e45cfcf6 Mon Sep 17 00:00:00 2001 From: Rafael Schouten Date: Wed, 10 Sep 2014 18:22:33 +1000 Subject: [PATCH] add currency spec file and update some class names --- .../filters/localise_currency.js.coffee | 17 -------- .../filters/localize_currency.js.coffee | 17 ++++++++ .../templates/price_breakdown.html.haml | 14 +++---- .../templates/shop_variant.html.haml | 4 +- ...lizer.rb => currency_config_serializer.rb} | 2 +- app/views/shared/menu/_cart.html.haml | 6 +-- .../filters/localize_currency_spec.js.coffee | 41 +++++++++++++++++++ .../services/variants_spec.js.coffee | 4 +- 8 files changed, 73 insertions(+), 32 deletions(-) delete mode 100644 app/assets/javascripts/darkswarm/filters/localise_currency.js.coffee create mode 100644 app/assets/javascripts/darkswarm/filters/localize_currency.js.coffee rename app/serializers/api/{currency_localization_serializer.rb => currency_config_serializer.rb} (89%) create mode 100644 spec/javascripts/unit/darkswarm/filters/localize_currency_spec.js.coffee diff --git a/app/assets/javascripts/darkswarm/filters/localise_currency.js.coffee b/app/assets/javascripts/darkswarm/filters/localise_currency.js.coffee deleted file mode 100644 index 52c7013a9f..0000000000 --- a/app/assets/javascripts/darkswarm/filters/localise_currency.js.coffee +++ /dev/null @@ -1,17 +0,0 @@ -# Convert number to string currency using injected currency localisation settings. -# -# Injected: currencyLocalisation - see /app/serializers/api/currency_localization_serializer.rb - -Darkswarm.filter "localiseCurrency", (currencyLocalization)-> - (amount) -> - decimals = if currencyLocalization.hide_cents then 0 else 2 - amount_fixed = amount.toFixed(decimals) - currency_str = "" - currency_str = " " + currencyLocalization.currency if currencyLocalization.display_currency - - # Return string - if currencyLocalization.symbol_position == 'before' - currencyLocalization.symbol + amount_fixed + currency_str - else - amount_fixed + " " + currencyLocalization.symbol + currency_str - diff --git a/app/assets/javascripts/darkswarm/filters/localize_currency.js.coffee b/app/assets/javascripts/darkswarm/filters/localize_currency.js.coffee new file mode 100644 index 0000000000..1a62a5c4e5 --- /dev/null +++ b/app/assets/javascripts/darkswarm/filters/localize_currency.js.coffee @@ -0,0 +1,17 @@ +# Convert number to string currency using injected currency localisation settings. +# +# @requires currencyConfig json - /app/serializers/api/currency_localization_serializer.rb +# @return string +Darkswarm.filter "localizeCurrency", (currencyConfig)-> + (amount) -> + decimals = if currencyConfig.hide_cents then 0 else 2 + amount_fixed = amount.toFixed(2) + currency_str = "" + currency_str = " " + currencyConfig.currency if currencyConfig.display_currency + + # Return: string. Varies with symbol position. + if currencyConfig.symbol_position == 'before' + currencyConfig.symbol + amount_fixed + currency_str + else + amount_fixed + " " + currencyConfig.symbol + currency_str + diff --git a/app/assets/javascripts/templates/price_breakdown.html.haml b/app/assets/javascripts/templates/price_breakdown.html.haml index 5214c489c7..95ec795988 100644 --- a/app/assets/javascripts/templates/price_breakdown.html.haml +++ b/app/assets/javascripts/templates/price_breakdown.html.haml @@ -10,26 +10,26 @@ .expanded{"ng-show" => "expanded"} %ul %li.cost - .right {{ variant.price | localiseCurrency }} + .right {{ variant.price | localizeCurrency }} Item cost %li{"bo-if" => "variant.fees.admin"} - .right {{ variant.fees.admin | localiseCurrency }} + .right {{ variant.fees.admin | localizeCurrency }} Admin fee %li{"bo-if" => "variant.fees.sales"} - .right {{ variant.fees.sales | localiseCurrency }} + .right {{ variant.fees.sales | localizeCurrency }} Sales fee %li{"bo-if" => "variant.fees.packing"} - .right {{ variant.fees.packing | localiseCurrency }} + .right {{ variant.fees.packing | localizeCurrency }} Packing fee %li{"bo-if" => "variant.fees.transport"} - .right {{ variant.fees.transport | localiseCurrency }} + .right {{ variant.fees.transport | localizeCurrency }} Transport fee %li{"bo-if" => "variant.fees.fundraising"} - .right {{ variant.fees.fundraising | localiseCurrency }} + .right {{ variant.fees.fundraising | localizeCurrency }} Fundraising fee %li %strong - .right = {{ variant.price | localiseCurrency }} + .right = {{ variant.price | localizeCurrency }}   %a{"ng-click" => "expanded = !expanded"} diff --git a/app/assets/javascripts/templates/shop_variant.html.haml b/app/assets/javascripts/templates/shop_variant.html.haml index 655488a469..607e770e31 100644 --- a/app/assets/javascripts/templates/shop_variant.html.haml +++ b/app/assets/javascripts/templates/shop_variant.html.haml @@ -48,7 +48,7 @@ .small-4.medium-2.large-2.columns.variant-price .table-cell.price %i.ofn-i_009-close - {{ variant.price | localiseCurrency }} + {{ variant.price | localizeCurrency }} -# Now in a template in app/assets/javascripts/templates ! %price-breakdown{"price-breakdown" => "_", variant: "variant", @@ -59,4 +59,4 @@ .small-12.medium-2.large-2.columns.total-price.text-right .table-cell %strong - {{ variant.getPrice() | localiseCurrency }} + {{ variant.getPrice() | localizeCurrency }} diff --git a/app/serializers/api/currency_localization_serializer.rb b/app/serializers/api/currency_config_serializer.rb similarity index 89% rename from app/serializers/api/currency_localization_serializer.rb rename to app/serializers/api/currency_config_serializer.rb index 3ef968cfb6..ab17af8715 100644 --- a/app/serializers/api/currency_localization_serializer.rb +++ b/app/serializers/api/currency_config_serializer.rb @@ -1,4 +1,4 @@ -class Api::CurrencyLocalizationSerializer < ActiveModel::Serializer +class Api::CurrencyConfigSerializer < ActiveModel::Serializer attributes :currency, :display_currency, :symbol, :symbol_position, :hide_cents, :decimal_mark, :thousands_separator def currency diff --git a/app/views/shared/menu/_cart.html.haml b/app/views/shared/menu/_cart.html.haml index e064958b1f..1ecb9231af 100644 --- a/app/views/shared/menu/_cart.html.haml +++ b/app/views/shared/menu/_cart.html.haml @@ -22,20 +22,20 @@ %small {{line_item.quantity}} %i.ofn-i_009-close - {{ line_item.variant.price_with_fees | localiseCurrency }} + {{ line_item.variant.price_with_fees | localizeCurrency }} .columns.small-2 %small \= %strong - .right {{ line_item.variant.getPrice() | localiseCurrency }} + .right {{ line_item.variant.getPrice() | localizeCurrency }} %li.total-cart{"ng-show" => "Cart.line_items_present().length > 0"} .row .columns.small-6 %em Total: .columns.small-6.text-right - %strong {{ Cart.total() | localiseCurrency }} + %strong {{ Cart.total() | localizeCurrency }} .text-right %a.button.primary.small{href: checkout_path, "ng-disabled" => "Cart.dirty"} Quick checkout diff --git a/spec/javascripts/unit/darkswarm/filters/localize_currency_spec.js.coffee b/spec/javascripts/unit/darkswarm/filters/localize_currency_spec.js.coffee new file mode 100644 index 0000000000..fc0b9dafa2 --- /dev/null +++ b/spec/javascripts/unit/darkswarm/filters/localize_currency_spec.js.coffee @@ -0,0 +1,41 @@ +describe 'convert number to localised currency ', -> + filter = null + + currencyconfig = + currency: "D" + symbol: "$" + symbol_position: "before" + hide_cents: "false" + decimal_mark: "." + thousands_separator: "," + + beforeEach -> + module 'Darkswarm' + module ($provide)-> + $provide.value "currencyConfig", currencyconfig + null + inject ($filter) -> + filter = $filter('localizeCurrency') + + it "adds decimal fraction to an amount", -> + expect(filter(10)).toEqual "$10.00" + + it "handles an existing fraction", -> + expect(filter(9.9)).toEqual "$9.90" + + it "can use any currency symbol", -> + currencyconfig.symbol = "£" + expect(filter(404.04)).toEqual "£404.04" + currencyconfig.symbol = "$" + + it "can place symbols after the amount", -> + currencyconfig.symbol_position = "after" + expect(filter(333.3)).toEqual "333.30 $" + currencyconfig.symbol_position = "before" + + it "can add a currency string", -> + currencyconfig.display_currency = "true" + expect(filter(5)).toEqual "$5.00 D" + currencyconfig.display_currency = "false" + + diff --git a/spec/javascripts/unit/darkswarm/services/variants_spec.js.coffee b/spec/javascripts/unit/darkswarm/services/variants_spec.js.coffee index ac9865a142..5c6e138e0d 100644 --- a/spec/javascripts/unit/darkswarm/services/variants_spec.js.coffee +++ b/spec/javascripts/unit/darkswarm/services/variants_spec.js.coffee @@ -5,8 +5,8 @@ describe 'Variants service', -> beforeEach -> variant = id: 1 - base_price: 80.5 - price: 100 + price: 80.5 + price_with_fees: 100 module 'Darkswarm' inject ($injector)-> Variants = $injector.get("Variants")