braintree-rails 1.2.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.travis.yml +13 -4
  4. data/CHANGELOG.md +5 -1
  5. data/Gemfile +3 -4
  6. data/Gemfile.lock +33 -14
  7. data/README.md +1 -1
  8. data/Rakefile +1 -1
  9. data/braintree-rails.gemspec +4 -5
  10. data/lib/braintree_rails/address.rb +1 -1
  11. data/lib/braintree_rails/address_details.rb +14 -0
  12. data/lib/braintree_rails/address_details_validator.rb +7 -0
  13. data/lib/braintree_rails/association.rb +2 -2
  14. data/lib/braintree_rails/braintree_ext.rb +27 -1
  15. data/lib/braintree_rails/business_details.rb +29 -0
  16. data/lib/braintree_rails/business_details_validator.rb +12 -0
  17. data/lib/braintree_rails/configuration.rb +1 -1
  18. data/lib/braintree_rails/credit_card.rb +6 -6
  19. data/lib/braintree_rails/credit_card_validator.rb +2 -17
  20. data/lib/braintree_rails/customer.rb +6 -6
  21. data/lib/braintree_rails/customer_validator.rb +1 -12
  22. data/lib/braintree_rails/funding_details.rb +17 -0
  23. data/lib/braintree_rails/funding_details_validator.rb +10 -0
  24. data/lib/braintree_rails/individual_details.rb +32 -0
  25. data/lib/braintree_rails/individual_details_validator.rb +11 -0
  26. data/lib/braintree_rails/merchant_account.rb +45 -0
  27. data/lib/braintree_rails/merchant_account_validator.rb +14 -0
  28. data/lib/braintree_rails/plan.rb +3 -3
  29. data/lib/braintree_rails/subscription.rb +5 -5
  30. data/lib/braintree_rails/transaction.rb +9 -9
  31. data/lib/braintree_rails/transaction_validator.rb +1 -5
  32. data/lib/braintree_rails/validator.rb +13 -0
  33. data/lib/braintree_rails/version.rb +1 -1
  34. data/lib/tasks/ci.rake +7 -0
  35. data/lib/tasks/spec.rake +18 -0
  36. data/lib/test_env.rb +1 -7
  37. data/{test → spec}/config/braintree_auth.yml.example +0 -0
  38. data/{test → spec}/fixtures/add_ons.xml +0 -0
  39. data/{test → spec}/fixtures/address.xml +0 -0
  40. data/{test → spec}/fixtures/credit_card.xml +0 -0
  41. data/{test → spec}/fixtures/credit_card_validation_error.xml +0 -0
  42. data/{test → spec}/fixtures/customer.xml +0 -0
  43. data/{test → spec}/fixtures/discounts.xml +0 -0
  44. data/spec/fixtures/merchant_account.xml +7 -0
  45. data/{test → spec}/fixtures/plans.xml +0 -0
  46. data/{test → spec}/fixtures/subscription.xml +0 -0
  47. data/{test → spec}/fixtures/subscription_ids.xml +0 -0
  48. data/{test → spec}/fixtures/subscriptions.xml +0 -0
  49. data/{test → spec}/fixtures/transaction.xml +0 -0
  50. data/{test → spec}/fixtures/transaction_error.xml +0 -0
  51. data/{test → spec}/fixtures/transaction_ids.xml +0 -0
  52. data/{test → spec}/fixtures/transactions.xml +0 -0
  53. data/{test/integration/braintree_rails/address_integration_test.rb → spec/integration/braintree_rails/address_integration_spec.rb} +8 -8
  54. data/{test/integration/braintree_rails/credit_card_integration_test.rb → spec/integration/braintree_rails/credit_card_integration_spec.rb} +20 -20
  55. data/{test/integration/braintree_rails/customer_integration_test.rb → spec/integration/braintree_rails/customer_integration_spec.rb} +20 -20
  56. data/spec/integration/braintree_rails/merchant_account_integration_spec.rb +37 -0
  57. data/{test/integration/braintree_rails/transaction_integration_test.rb → spec/integration/braintree_rails/transaction_integration_spec.rb} +27 -27
  58. data/spec/integration/integration_spec_helper.rb +23 -0
  59. data/spec/spec_helper.rb +17 -0
  60. data/{test/test_helper.rb → spec/support/helper.rb} +42 -21
  61. data/spec/support/string_ext.rb +5 -0
  62. data/{test/unit/braintree_rails/add_on_test.rb → spec/unit/braintree_rails/add_on_spec.rb} +10 -10
  63. data/{test/unit/braintree_rails/add_ons_test.rb → spec/unit/braintree_rails/add_ons_spec.rb} +4 -4
  64. data/spec/unit/braintree_rails/address_details_spec.rb +13 -0
  65. data/{test/unit/braintree_rails/address_test.rb → spec/unit/braintree_rails/address_spec.rb} +26 -26
  66. data/{test/unit/braintree_rails/addresses_test.rb → spec/unit/braintree_rails/addresses_spec.rb} +7 -7
  67. data/spec/unit/braintree_rails/business_details_spec.rb +28 -0
  68. data/{test/unit/braintree_rails/configuration_test.rb → spec/unit/braintree_rails/configuration_spec.rb} +6 -6
  69. data/{test/unit/braintree_rails/credit_card_test.rb → spec/unit/braintree_rails/credit_card_spec.rb} +78 -72
  70. data/{test/unit/braintree_rails/credit_cards_test.rb → spec/unit/braintree_rails/credit_cards_spec.rb} +15 -10
  71. data/{test/unit/braintree_rails/customer_test.rb → spec/unit/braintree_rails/customer_spec.rb} +46 -46
  72. data/{test/unit/braintree_rails/discount_test.rb → spec/unit/braintree_rails/discount_spec.rb} +10 -10
  73. data/{test/unit/braintree_rails/discounts_test.rb → spec/unit/braintree_rails/discounts_spec.rb} +4 -4
  74. data/spec/unit/braintree_rails/funding_details_spec.rb +36 -0
  75. data/spec/unit/braintree_rails/individual_details_spec.rb +19 -0
  76. data/{test/unit/braintree_rails/luhn_10_validator_test.rb → spec/unit/braintree_rails/luhn_10_validator_spec.rb} +5 -5
  77. data/spec/unit/braintree_rails/merchant_account_spec.rb +50 -0
  78. data/{test/unit/braintree_rails/plan_test.rb → spec/unit/braintree_rails/plan_spec.rb} +12 -12
  79. data/{test/unit/braintree_rails/subscription_test.rb → spec/unit/braintree_rails/subscription_spec.rb} +55 -55
  80. data/{test/unit/braintree_rails/subscriptions_test.rb → spec/unit/braintree_rails/subscriptions_spec.rb} +4 -4
  81. data/{test/unit/braintree_rails/transaction_test.rb → spec/unit/braintree_rails/transaction_spec.rb} +55 -55
  82. data/{test/unit/braintree_rails/transactions_test.rb → spec/unit/braintree_rails/transactions_spec.rb} +9 -9
  83. data/{test/unit/braintree_rails/validation_error_test.rb → spec/unit/braintree_rails/validation_error_spec.rb} +4 -4
  84. data/{test/unit/braintree_rails/validator_test.rb → spec/unit/braintree_rails/validator_spec.rb} +7 -7
  85. data/spec/unit/unit_spec_helper.rb +4 -0
  86. metadata +69 -63
  87. data/lib/tasks/test.rake +0 -18
  88. data/test/integration/integration_test_helper.rb +0 -13
  89. data/test/unit/unit_test_helper.rb +0 -3
@@ -0,0 +1,32 @@
1
+ module BraintreeRails
2
+ class IndividualDetails
3
+ include Model
4
+
5
+ singleton_class.not_supported_apis(:delete)
6
+ not_supported_apis(:create, :create!, :update, :update!, :destroy)
7
+
8
+ define_attributes(
9
+ :readonly => [:ssn_last_4],
10
+ :as_association => [:first_name, :last_name, :email, :phone, :date_of_birth, :ssn, :address]
11
+ )
12
+
13
+ has_one :address, :class_name => "BraintreeRails::AddressDetails"
14
+
15
+ def self.braintree_model_name
16
+ "merchant_account/#{name.demodulize.underscore}"
17
+ end
18
+
19
+ def add_errors(validation_errors)
20
+ address.add_errors(validation_errors) if address
21
+ super(validation_errors)
22
+ end
23
+
24
+ def attributes_for(action)
25
+ super.merge(address_attributes)
26
+ end
27
+
28
+ def address_attributes
29
+ address.present? ? {:address => address.attributes_for(:as_association)} : {}
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,11 @@
1
+ module BraintreeRails
2
+ class IndividualDetailsValidator < Validator
3
+ Validations = [
4
+ [:first_name, :last_name, :email, :date_of_birth, :address, :presence => true]
5
+ ]
6
+
7
+ def validate(individual)
8
+ validate_association(individual, :address)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,45 @@
1
+ module BraintreeRails
2
+ class MerchantAccount
3
+ include Model
4
+
5
+ # Need to remove the ! methods as those are not provided by the API
6
+ singleton_class.not_supported_apis(:delete, :create!, :update!)
7
+ not_supported_apis(:destroy, :create!, :update!)
8
+
9
+ define_attributes(
10
+ :create => [:tos_accepted, :master_merchant_account_id, :id, :individual, :business, :funding],
11
+ :readonly => [:status, :created_at, :updated_at]
12
+ )
13
+
14
+ belongs_to :master_merchant_account, :class_name => "BraintreeRails::MerchantAccount"
15
+ has_one :individual, :class_name => "BraintreeRails::IndividualDetails"
16
+ has_one :business, :class_name => "BraintreeRails::BusinessDetails"
17
+ has_one :funding, :class_name => "BraintreeRails::FundingDetails"
18
+
19
+ # Need to reload to populate association values as there's an inconsistency in the API
20
+ after_create :reload, :if => :persisted?
21
+
22
+ def add_errors(validation_errors)
23
+ [individual, business, funding].each do |association|
24
+ association.add_errors(validation_errors.except(:base)) if association
25
+ super(validation_errors)
26
+ end
27
+ end
28
+
29
+ def attributes_for(action)
30
+ super.merge(individual_attributes).merge(business_attributes).merge(funding_attributes)
31
+ end
32
+
33
+ def individual_attributes
34
+ individual.present? ? {:individual => individual.attributes_for(:as_association)} : {}
35
+ end
36
+
37
+ def business_attributes
38
+ business.present? ? {:business => business.attributes_for(:as_association)} : {}
39
+ end
40
+
41
+ def funding_attributes
42
+ funding.present? ? {:funding => funding.attributes_for(:as_association)} : {}
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,14 @@
1
+ module BraintreeRails
2
+ class MerchantAccountValidator < Validator
3
+ Validations = [
4
+ [:id, :format => {:with => /\A[-_a-z0-9]*\z/i}, :length => {:maximum => 32}, :exclusion => {:in => %w(all new)}],
5
+ [:tos_accepted, :master_merchant_account_id, :individual, :funding, :presence => true],
6
+ ]
7
+
8
+ def validate(merchant_account)
9
+ [:individual, :business, :funding].each do |association_name|
10
+ validate_association(merchant_account, association_name)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -11,9 +11,9 @@ module BraintreeRails
11
11
  :number_of_billing_cycles, :price, :trial_duration, :trial_duration_unit, :trial_period, :updated_at
12
12
  ]
13
13
  )
14
- has_many :add_ons, :class => AddOns
15
- has_many :discounts, :class => Discounts
16
- has_many :subscriptions, :class => Subscriptions
14
+ has_many :add_ons, :class_name => "BraintreeRails::AddOns"
15
+ has_many :discounts, :class_name => "BraintreeRails::Discounts"
16
+ has_many :subscriptions, :class_name => "BraintreeRails::Subscriptions"
17
17
 
18
18
  def self.all
19
19
  braintree_model_class.all.map{ |plan| new(plan) }
@@ -17,11 +17,11 @@ module BraintreeRails
17
17
  ]
18
18
  )
19
19
 
20
- has_many :add_ons, :class => AddOns
21
- has_many :discounts, :class => Discounts
22
- has_many :transactions, :class => Transactions
23
- belongs_to :plan, :class => Plan, :foreign_key => :plan_id
24
- belongs_to :credit_card, :class => CreditCard, :foreign_key => :payment_method_token
20
+ has_many :add_ons, :class_name => "BraintreeRails::AddOns"
21
+ has_many :discounts, :class_name => "BraintreeRails::Discounts"
22
+ has_many :transactions, :class_name => "BraintreeRails::Transactions"
23
+ belongs_to :plan, :class_name => "BraintreeRails::Plan", :foreign_key => :plan_id
24
+ belongs_to :credit_card, :class_name => "BraintreeRails::CreditCard", :foreign_key => :payment_method_token
25
25
 
26
26
  def self.cancel(id)
27
27
  delete(id)
@@ -8,7 +8,7 @@ module BraintreeRails
8
8
  :create => [
9
9
  :amount, :billing, :channel, :custom_fields, :customer_id, :descriptor, :merchant_account_id,
10
10
  :options, :order_id, :payment_method_token, :purchase_order_number, :recurring, :shipping,
11
- :tax_amount, :tax_exempt, :type, :venmo_sdk_payment_method_code
11
+ :tax_amount, :tax_exempt, :type, :venmo_sdk_payment_method_code, :device_data
12
12
  ],
13
13
  :readonly => [
14
14
  :avs_error_response_code, :avs_postal_code_response_code, :avs_street_address_response_code, :billing_details,
@@ -18,14 +18,14 @@ module BraintreeRails
18
18
  ]
19
19
  )
20
20
 
21
- has_many :add_ons, :class => AddOns
22
- has_many :discounts, :class => Discounts
23
- has_one :billing, :class => BillingAddress, :foreign_key => :billing_details
24
- has_one :shipping, :class => ShippingAddress, :foreign_key => :shipping_details
25
- belongs_to :customer, :class => Customer, :foreign_key => :customer_details
26
- belongs_to :credit_card, :class => CreditCard, :foreign_key => :credit_card_details
27
- belongs_to :subscription, :class => Subscription, :foreign_key => :subscription_id
28
- belongs_to :plan, :class => Plan, :foreign_key => :plan_id
21
+ has_many :add_ons, :class_name => "BraintreeRails::AddOns"
22
+ has_many :discounts, :class_name => "BraintreeRails::Discounts"
23
+ has_one :billing, :class_name => "BraintreeRails::BillingAddress", :foreign_key => :billing_details
24
+ has_one :shipping, :class_name => "BraintreeRails::ShippingAddress", :foreign_key => :shipping_details
25
+ belongs_to :customer, :class_name => "BraintreeRails::Customer", :foreign_key => :customer_details
26
+ belongs_to :credit_card, :class_name => "BraintreeRails::CreditCard", :foreign_key => :credit_card_details
27
+ belongs_to :subscription, :class_name => "BraintreeRails::Subscription", :foreign_key => :subscription_id
28
+ belongs_to :plan, :class_name => "BraintreeRails::Plan", :foreign_key => :plan_id
29
29
 
30
30
  around_persist :clear_encryped_attributes
31
31
 
@@ -37,11 +37,7 @@ module BraintreeRails
37
37
 
38
38
  def validate_new_credit_card(transaction)
39
39
  transaction.credit_card.billing_address = transaction.billing
40
- if transaction.credit_card.invalid?
41
- transaction.credit_card.errors.full_messages.each do |message|
42
- transaction.errors.add(:base, message)
43
- end
44
- end
40
+ validate_association(transaction, :credit_card)
45
41
  end
46
42
  end
47
43
  end
@@ -33,5 +33,18 @@ module BraintreeRails
33
33
 
34
34
  def validate(record)
35
35
  end
36
+
37
+ def validate_association(record, name)
38
+ record.instance_eval do
39
+ association = record.send(name)
40
+ return unless association.present?
41
+ if association.invalid?
42
+ errors.add(name, "is invalid")
43
+ association.errors.full_messages.each do |message|
44
+ errors.add(:base, message)
45
+ end
46
+ end
47
+ end
48
+ end
36
49
  end
37
50
  end
@@ -1,3 +1,3 @@
1
1
  module BraintreeRails
2
- Version = "1.2.3"
2
+ Version = "1.3.0"
3
3
  end
@@ -0,0 +1,7 @@
1
+ require 'coveralls/rake/task'
2
+
3
+ namespace :ci do
4
+ Coveralls::RakeTask.new
5
+ desc "Run all specs in Travis CI"
6
+ task :travis => ["spec:all", "coveralls:push"]
7
+ end
@@ -0,0 +1,18 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ namespace :spec do
4
+ desc "Run unit specs"
5
+ RSpec::Core::RakeTask.new(:unit) do |t|
6
+ t.pattern = 'spec/unit/**/*_spec.rb'
7
+ t.verbose = true
8
+ end
9
+
10
+ desc "Run integration specs"
11
+ RSpec::Core::RakeTask.new(:integration) do |t|
12
+ t.pattern = 'spec/integration/**/*_spec.rb'
13
+ t.verbose = true
14
+ end
15
+
16
+ desc "Run all specs"
17
+ task :all => [:unit, :integration]
18
+ end
@@ -1,10 +1,4 @@
1
1
  require 'simplecov'
2
- SimpleCov.start do
3
- add_filter "/test/"
4
- end
5
-
2
+ SimpleCov.start {add_filter '/spec/'}
6
3
  require File.join(File.dirname(__FILE__), 'env')
7
- require 'minitest/autorun'
8
4
  require 'braintree-rails'
9
- require 'turn/autorun'
10
- require 'active_support/core_ext/date/calculations'
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <merchant-account>
3
+ <status>active</status>
4
+ <id>default_merchant_account_id</id>
5
+ <currency-iso-code>USD</currency-iso-code>
6
+ <sub-merchant-account type="boolean">false</sub-merchant-account>
7
+ </merchant-account>
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../integration_test_helper'))
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '../integration_spec_helper'))
2
2
 
3
3
  describe 'Address Integration' do
4
4
  before do
@@ -13,7 +13,7 @@ describe 'Address Integration' do
13
13
  braintree_address = braintree_customer.addresses.first
14
14
 
15
15
  attributes.each do |key, value|
16
- braintree_address.send(key).must_equal value
16
+ braintree_address.send(key).should == value
17
17
  end
18
18
  end
19
19
 
@@ -24,26 +24,26 @@ describe 'Address Integration' do
24
24
 
25
25
  braintree_customer = Braintree::Customer.find(customer.id)
26
26
  braintree_address = braintree_customer.addresses.first
27
- braintree_address.first_name.must_equal 'Foo'
27
+ braintree_address.first_name.should == 'Foo'
28
28
 
29
29
  address.last_name = 'Bar'
30
30
  address.save!
31
31
 
32
32
  braintree_customer = Braintree::Customer.find(customer.id)
33
33
  braintree_address = braintree_customer.addresses.first
34
- braintree_address.last_name.must_equal 'Bar'
34
+ braintree_address.last_name.should == 'Bar'
35
35
  end
36
36
 
37
37
  it 'should be able to destroy existing address' do
38
38
  customer = BraintreeRails::Customer.create!(customer_hash)
39
39
  address = customer.addresses.create!(address_hash)
40
40
  address.destroy
41
- lambda{ Braintree::Address.find(customer.id, address.id) }.must_raise Braintree::NotFoundError
42
- address.persisted?.must_equal false
43
- address.frozen?.must_equal true
41
+ expect { Braintree::Address.find(customer.id, address.id) }.to raise_error(Braintree::NotFoundError)
42
+ address.should_not be_persisted
43
+ address.should be_frozen
44
44
 
45
45
  address = customer.addresses.create!(address_hash)
46
46
  BraintreeRails::Address.delete(customer.id, address.id)
47
- lambda{ Braintree::Address.find(customer.id, address.id) }.must_raise Braintree::NotFoundError
47
+ expect { Braintree::Address.find(customer.id, address.id) }.to raise_error(Braintree::NotFoundError)
48
48
  end
49
49
  end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../integration_test_helper'))
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '../integration_spec_helper'))
2
2
 
3
3
  describe 'Credit Card Integration' do
4
4
  before do
@@ -12,11 +12,11 @@ describe 'Credit Card Integration' do
12
12
  credit_card = BraintreeRails::CreditCard.new(braintree_customer.credit_cards.first.token)
13
13
 
14
14
  attributes.except(:number, :cvv, :billing_address).each do |key, value|
15
- credit_card.send(key).must_equal value
15
+ credit_card.send(key).should == value
16
16
  end
17
17
 
18
18
  attributes[:billing_address].each do |key, value|
19
- credit_card.billing_address.send(key).must_equal value
19
+ credit_card.billing_address.send(key).should == value
20
20
  end
21
21
  end
22
22
 
@@ -27,12 +27,12 @@ describe 'Credit Card Integration' do
27
27
 
28
28
  braintree_credit_card = Braintree::CreditCard.find(credit_card.id)
29
29
  attributes.except(:number, :cvv, :billing_address).each do |key, value|
30
- braintree_credit_card.send(key).must_equal value
30
+ braintree_credit_card.send(key).should == value
31
31
  end
32
32
 
33
33
  braintree_address = braintree_credit_card.billing_address
34
34
  attributes[:billing_address].each do |key, value|
35
- braintree_address.send(key).must_equal value
35
+ braintree_address.send(key).should == value
36
36
  end
37
37
  end
38
38
 
@@ -42,8 +42,8 @@ describe 'Credit Card Integration' do
42
42
 
43
43
  credit_card.update_attributes!(:cardholder_name => 'Foo Bar', :number => '4111111111111111', :options => {:verify_card => true}, :billing_address => address_hash.merge(:postal_code => '56789'))
44
44
  braintree_credit_card = Braintree::CreditCard.find(credit_card.id)
45
- braintree_credit_card.cardholder_name.must_equal 'Foo Bar'
46
- braintree_credit_card.billing_address.postal_code.must_equal '56789'
45
+ braintree_credit_card.cardholder_name.should == 'Foo Bar'
46
+ braintree_credit_card.billing_address.postal_code.should == '56789'
47
47
  end
48
48
 
49
49
  it 'should be able to update just expiration year' do
@@ -52,10 +52,10 @@ describe 'Credit Card Integration' do
52
52
 
53
53
  credit_card.update_attributes!(:cardholder_name => 'Foo Bar', :number => '4111111111111111', :options => {:verify_card => true}, :expiration_month => '07', :expiration_year => '2013', :billing_address => address_hash.merge(:postal_code => '56789'))
54
54
  braintree_credit_card = Braintree::CreditCard.find(credit_card.id)
55
- braintree_credit_card.cardholder_name.must_equal 'Foo Bar'
56
- braintree_credit_card.billing_address.postal_code.must_equal '56789'
57
- braintree_credit_card.expiration_month.must_equal '07'
58
- braintree_credit_card.expiration_year.must_equal '2013'
55
+ braintree_credit_card.cardholder_name.should == 'Foo Bar'
56
+ braintree_credit_card.billing_address.postal_code.should == '56789'
57
+ braintree_credit_card.expiration_month.should == '07'
58
+ braintree_credit_card.expiration_year.should == '2013'
59
59
  end
60
60
 
61
61
  it 'should be able to update by expiration date' do
@@ -64,11 +64,11 @@ describe 'Credit Card Integration' do
64
64
 
65
65
  credit_card.update_attributes!(:cardholder_name => 'Foo Bar', :number => '4111111111111111', :options => {:verify_card => true}, :expiration_date => '08/2013', :billing_address => address_hash.merge(:postal_code => '56789'))
66
66
  braintree_credit_card = Braintree::CreditCard.find(credit_card.id)
67
- braintree_credit_card.cardholder_name.must_equal 'Foo Bar'
68
- braintree_credit_card.billing_address.postal_code.must_equal '56789'
69
- braintree_credit_card.expiration_month.must_equal '08'
70
- braintree_credit_card.expiration_year.must_equal '2013'
71
- braintree_credit_card.expiration_date.must_equal '08/2013'
67
+ braintree_credit_card.cardholder_name.should == 'Foo Bar'
68
+ braintree_credit_card.billing_address.postal_code.should == '56789'
69
+ braintree_credit_card.expiration_month.should == '08'
70
+ braintree_credit_card.expiration_year.should == '2013'
71
+ braintree_credit_card.expiration_date.should == '08/2013'
72
72
  end
73
73
 
74
74
  it 'should be able to destroy existing credit card' do
@@ -76,13 +76,13 @@ describe 'Credit Card Integration' do
76
76
  credit_card = BraintreeRails::CreditCard.new(braintree_customer.credit_cards.first.token)
77
77
 
78
78
  credit_card.destroy!
79
- lambda{ Braintree::CreditCard.find(credit_card.token) }.must_raise Braintree::NotFoundError
80
- credit_card.persisted?.must_equal false
81
- credit_card.frozen?.must_equal true
79
+ expect { Braintree::CreditCard.find(credit_card.token) }.to raise_error(Braintree::NotFoundError)
80
+ credit_card.should_not be_persisted
81
+ credit_card.should be_frozen
82
82
  end
83
83
 
84
84
  it 'should be able to capture braintree api errors' do
85
85
  customer = BraintreeRails::Customer.create!(:id => 'customer_id', :first_name => 'Brain', :last_name => 'Tree')
86
- lambda{customer.credit_cards.create!(credit_card_hash.merge(:number => 'foo'))}.must_raise Braintree::ValidationsFailed
86
+ expect {customer.credit_cards.create!(credit_card_hash.merge(:number => 'foo'))}.to raise_error(Braintree::ValidationsFailed)
87
87
  end
88
88
  end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../integration_test_helper'))
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '../integration_spec_helper'))
2
2
 
3
3
  describe 'Customer Integration' do
4
4
  before do
@@ -8,24 +8,24 @@ describe 'Customer Integration' do
8
8
  it 'should fetch customer from Braintree for given id' do
9
9
  braintree_customer = Braintree::Customer.create!(:first_name => 'Brain', :last_name => 'Tree')
10
10
  customer = BraintreeRails::Customer.new(braintree_customer.id)
11
- customer.id.must_equal braintree_customer.id
12
- customer.first_name.must_equal 'Brain'
13
- customer.last_name.must_equal 'Tree'
14
- customer.persisted?.must_equal true
11
+ customer.id.should == braintree_customer.id
12
+ customer.first_name.should == 'Brain'
13
+ customer.last_name.should == 'Tree'
14
+ customer.should be_persisted
15
15
  end
16
16
 
17
17
  it 'should be able to create new customer' do
18
18
  customer = BraintreeRails::Customer.create(:first_name => 'Brain', :last_name => 'Tree')
19
19
  braintree_customer = Braintree::Customer.find(customer.id)
20
20
 
21
- braintree_customer.first_name.must_equal 'Brain'
22
- braintree_customer.last_name.must_equal 'Tree'
21
+ braintree_customer.first_name.should == 'Brain'
22
+ braintree_customer.last_name.should == 'Tree'
23
23
  end
24
24
 
25
25
  it 'should be able to create new customer with a credit card' do
26
26
  customer = BraintreeRails::Customer.create(:first_name => 'Brain', :last_name => 'Tree', :credit_card => credit_card_hash)
27
27
  braintree_customer = Braintree::Customer.find(customer.id)
28
- braintree_customer.credit_cards.count.must_equal 1
28
+ braintree_customer.credit_cards.count.should == 1
29
29
  end
30
30
 
31
31
  it 'should be able to update existing customer' do
@@ -33,8 +33,8 @@ describe 'Customer Integration' do
33
33
  customer.update_attributes!(:first_name => 'Foo', :last_name => 'Bar')
34
34
 
35
35
  braintree_customer = Braintree::Customer.find(customer.id)
36
- braintree_customer.first_name.must_equal 'Foo'
37
- braintree_customer.last_name.must_equal 'Bar'
36
+ braintree_customer.first_name.should == 'Foo'
37
+ braintree_customer.last_name.should == 'Bar'
38
38
  end
39
39
 
40
40
  it 'should be able to update existing customer with new credit card' do
@@ -42,35 +42,35 @@ describe 'Customer Integration' do
42
42
  customer.update_attributes!(:first_name => 'Foo', :last_name => 'Bar', :credit_card => credit_card_hash.merge(:cardholder_name => "FooBar"))
43
43
 
44
44
  braintree_customer = Braintree::Customer.find(customer.id)
45
- braintree_customer.credit_cards.first.cardholder_name.must_equal "FooBar"
45
+ braintree_customer.credit_cards.first.cardholder_name.should == "FooBar"
46
46
  end
47
47
 
48
48
  it 'should be able to destroy existing customer' do
49
49
  customer = BraintreeRails::Customer.create!(:first_name => 'Brain', :last_name => 'Tree')
50
50
  customer.destroy
51
- lambda{ Braintree::Customer.find(customer.id) }.must_raise Braintree::NotFoundError
52
- customer.persisted?.must_equal false
53
- customer.frozen?.must_equal true
51
+ expect { Braintree::Customer.find(customer.id) }.to raise_error(Braintree::NotFoundError)
52
+ customer.should_not be_persisted
53
+ customer.should be_frozen
54
54
  end
55
55
 
56
56
  it 'should not throw error when trying to destory an already destoryed customer' do
57
57
  customer = BraintreeRails::Customer.create!(:first_name => 'Brain', :last_name => 'Tree')
58
58
  customer.destroy
59
- lambda{ customer.destroy }.must_be_silent
60
- customer.persisted?.must_equal false
61
- customer.frozen?.must_equal true
59
+ expect { customer.destroy }.not_to raise_error()
60
+ customer.should_not be_persisted
61
+ customer.should be_frozen
62
62
  end
63
63
 
64
64
  it "should be able to reload the customer attributes" do
65
65
  customer = BraintreeRails::Customer.create!(:first_name => 'Brain', :last_name => 'Tree')
66
66
  customer.first_name = 'new name'
67
- customer.reload.first_name.must_equal 'Brain'
67
+ customer.reload.first_name.should == 'Brain'
68
68
  end
69
69
 
70
70
  it "should be able to reload associations" do
71
71
  customer = BraintreeRails::Customer.create!(:first_name => 'Brain', :last_name => 'Tree')
72
- customer.credit_cards.must_be :empty?
72
+ customer.credit_cards.should be_empty
73
73
  Braintree::CreditCard.create(credit_card_hash.merge(:customer_id => customer.id))
74
- customer.reload.credit_cards.size.must_equal 1
74
+ customer.reload.credit_cards.size.should == 1
75
75
  end
76
76
  end