From 55a22f98fadb6cf299b5b0aef3e6e6507e05656e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20M=C4=99karski?= <43354669+KacperMekarski@users.noreply.github.com> Date: Fri, 1 Oct 2021 11:49:55 +0200 Subject: [PATCH] [SD-1461] fix money_methods for ruby version < 2.7 (#11373) * SD-1461 fix money_methods for ruby version < 3.0 * SD-1461 change approach --- core/app/models/concerns/spree/display_money.rb | 4 +++- core/spec/models/spree/concerns/display_money_spec.rb | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/app/models/concerns/spree/display_money.rb b/core/app/models/concerns/spree/display_money.rb index 2741fc79dee..9c89aaeae80 100644 --- a/core/app/models/concerns/spree/display_money.rb +++ b/core/app/models/concerns/spree/display_money.rb @@ -27,7 +27,9 @@ def money_methods(*args) define_method("display_#{method_name}") do |**args_list| default_opts = respond_to?(:currency) ? { currency: currency } : {} - Spree::Money.new(send(method_name, **args_list), default_opts.merge(opts).merge(args_list.slice(:currency))) + amount = args_list.blank? ? send(method_name) : send(method_name, **args_list) + + Spree::Money.new(amount, default_opts.merge(opts).merge(args_list.slice(:currency))) end end end diff --git a/core/spec/models/spree/concerns/display_money_spec.rb b/core/spec/models/spree/concerns/display_money_spec.rb index 08fea74d3cc..4155eacc8b8 100644 --- a/core/spec/models/spree/concerns/display_money_spec.rb +++ b/core/spec/models/spree/concerns/display_money_spec.rb @@ -35,6 +35,7 @@ def total(currency:) expect(test_class.new.display_total(currency: currency)).to eq Spree::Money.new(10.0, currency: currency) end end + context 'wrapped method accepts `currency` argument' do let(:test_class) do Class.new do