diff --git a/app/models/solidus_paypal_braintree/response.rb b/app/models/solidus_paypal_braintree/response.rb index 82bdeb33..baf228f2 100644 --- a/app/models/solidus_paypal_braintree/response.rb +++ b/app/models/solidus_paypal_braintree/response.rb @@ -34,8 +34,8 @@ def build_success(result) end def build_failure(result) - transaction = result.transaction - new(false, transaction.status, {}, {}) + msg = result.errors.map { |e| "#{e.message} (#{e.code})" }.join(" ") + new(false, msg) end end end diff --git a/spec/models/solidus_paypal_braintree/response_spec.rb b/spec/models/solidus_paypal_braintree/response_spec.rb index 66c3afdf..484ad513 100644 --- a/spec/models/solidus_paypal_braintree/response_spec.rb +++ b/spec/models/solidus_paypal_braintree/response_spec.rb @@ -2,15 +2,16 @@ RSpec.describe SolidusPaypalBraintree::Response do let(:error_result) do - transaction = instance_double( - 'Braintree::Transaction', - status: 'error' + error = instance_double( + 'Braintree::ValidationError', + code: '12345', + message: "Cannot refund a transaction unless it is settled." ) instance_double( 'Braintree::ErrorResult', success?: false, - transaction: transaction + errors: [error] ) end @@ -52,6 +53,18 @@ it { expect(successful_response.success?).to be true } end + describe "#message" do + context "with a success response" do + subject { successful_response.message } + it { is_expected.to eq "ok" } + end + + context "with an error response" do + subject { error_response.message } + it { is_expected.to eq "Cannot refund a transaction unless it is settled. (12345)" } + end + end + describe '#authorization' do it 'is whatever the b.t. transaction id was' do expect(successful_response.authorization).to eq 'abcdef'