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