diff options
-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 |