diff options
author | Azul <azul@leap.se> | 2013-07-02 12:12:45 +0200 |
---|---|---|
committer | Azul <azul@leap.se> | 2013-07-17 10:47:14 +0200 |
commit | 5589ef858a19f1c46e7e8aa5b364914a5f14352a (patch) | |
tree | 58f3f8350a7594e467f9e497bd0836ed55cad755 | |
parent | 82f58b469fa48ca54cbc283685021a2502cf1dd1 (diff) |
billing: fix issue with customer.braintree_customer
The default CouchRest Model belongs_to does not respect the class option.
So we need to write our own getter method.
-rw-r--r-- | billing/app/models/customer.rb | 7 | ||||
-rw-r--r-- | billing/test/unit/customer_with_payment_info_test.rb | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/billing/app/models/customer.rb b/billing/app/models/customer.rb index 4788118..747f17f 100644 --- a/billing/app/models/customer.rb +++ b/billing/app/models/customer.rb @@ -5,7 +5,12 @@ class Customer < CouchRest::Model::Base use_database "customers" belongs_to :user - belongs_to :braintree_customer, class: Braintree::Customer + belongs_to :braintree_customer + + # Braintree::Customer - stored on braintrees servers - we only have the id. + def braintree_customer + @braintree_customer ||= Braintree::Customer.find(braintree_customer_id) + end validates :user, presence: true diff --git a/billing/test/unit/customer_with_payment_info_test.rb b/billing/test/unit/customer_with_payment_info_test.rb index f887674..ca89e65 100644 --- a/billing/test/unit/customer_with_payment_info_test.rb +++ b/billing/test/unit/customer_with_payment_info_test.rb @@ -20,6 +20,16 @@ class CustomerWithPaymentInfoTest < ActiveSupport::TestCase assert_equal Hash.new, @customer.custom_fields end + test "can access braintree_customer after reload" do + @customer.save + @customer = Customer.find_by_user_id(@customer.user_id) + @customer.with_braintree_data! + assert_equal 'Big', @customer.first_name + assert_equal 'Spender', @customer.last_name + assert_equal 1, @customer.credit_cards.size + assert_equal Hash.new, @customer.custom_fields + end + test "sets default_credit_card" do @customer.with_braintree_data! assert_equal @customer.credit_cards.first, @customer.default_credit_card |