summaryrefslogtreecommitdiff
path: root/billing
diff options
context:
space:
mode:
Diffstat (limited to 'billing')
-rw-r--r--billing/app/models/customer.rb7
-rw-r--r--billing/test/unit/customer_with_payment_info_test.rb10
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