braintree-rails 1.3.0 → 1.4.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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -1
  3. data/CHANGELOG.md +12 -0
  4. data/Gemfile.lock +48 -34
  5. data/braintree-rails.gemspec +7 -7
  6. data/lib/braintree_rails/address.rb +1 -1
  7. data/lib/braintree_rails/address_validator.rb +1 -1
  8. data/lib/braintree_rails/api_error.rb +1 -1
  9. data/lib/braintree_rails/billing_address.rb +5 -1
  10. data/lib/braintree_rails/business_details.rb +1 -1
  11. data/lib/braintree_rails/credit_card.rb +2 -2
  12. data/lib/braintree_rails/customer.rb +2 -2
  13. data/lib/braintree_rails/individual_details.rb +1 -1
  14. data/lib/braintree_rails/merchant_account.rb +6 -2
  15. data/lib/braintree_rails/model.rb +7 -9
  16. data/lib/braintree_rails/persistence.rb +2 -20
  17. data/lib/braintree_rails/shipping_address.rb +5 -1
  18. data/lib/braintree_rails/transaction.rb +5 -5
  19. data/lib/braintree_rails/transaction_validator.rb +1 -1
  20. data/lib/braintree_rails/validator.rb +1 -1
  21. data/lib/braintree_rails/version.rb +1 -1
  22. data/spec/fixtures/merchant_account.xml +1 -1
  23. data/spec/fixtures/transaction_error.xml +65 -20
  24. data/spec/integration/braintree_rails/address_integration_spec.rb +6 -6
  25. data/spec/integration/braintree_rails/credit_card_integration_spec.rb +17 -17
  26. data/spec/integration/braintree_rails/customer_integration_spec.rb +17 -17
  27. data/spec/integration/braintree_rails/merchant_account_integration_spec.rb +11 -11
  28. data/spec/integration/braintree_rails/transaction_integration_spec.rb +24 -25
  29. data/spec/integration/integration_spec_helper.rb +2 -1
  30. data/spec/spec_helper.rb +1 -0
  31. data/spec/support/helper.rb +16 -2
  32. data/spec/unit/braintree_rails/add_on_spec.rb +10 -11
  33. data/spec/unit/braintree_rails/add_ons_spec.rb +3 -3
  34. data/spec/unit/braintree_rails/address_details_spec.rb +3 -3
  35. data/spec/unit/braintree_rails/address_spec.rb +26 -26
  36. data/spec/unit/braintree_rails/addresses_spec.rb +7 -7
  37. data/spec/unit/braintree_rails/business_details_spec.rb +8 -8
  38. data/spec/unit/braintree_rails/configuration_spec.rb +6 -6
  39. data/spec/unit/braintree_rails/credit_card_spec.rb +76 -76
  40. data/spec/unit/braintree_rails/credit_cards_spec.rb +11 -11
  41. data/spec/unit/braintree_rails/customer_spec.rb +44 -44
  42. data/spec/unit/braintree_rails/discount_spec.rb +10 -11
  43. data/spec/unit/braintree_rails/discounts_spec.rb +3 -3
  44. data/spec/unit/braintree_rails/funding_details_spec.rb +12 -12
  45. data/spec/unit/braintree_rails/individual_details_spec.rb +5 -5
  46. data/spec/unit/braintree_rails/luhn_10_validator_spec.rb +5 -5
  47. data/spec/unit/braintree_rails/merchant_account_spec.rb +14 -14
  48. data/spec/unit/braintree_rails/plan_spec.rb +12 -12
  49. data/spec/unit/braintree_rails/subscription_spec.rb +53 -53
  50. data/spec/unit/braintree_rails/subscriptions_spec.rb +4 -5
  51. data/spec/unit/braintree_rails/transaction_spec.rb +67 -55
  52. data/spec/unit/braintree_rails/transactions_spec.rb +9 -9
  53. data/spec/unit/braintree_rails/validation_error_spec.rb +4 -4
  54. data/spec/unit/braintree_rails/validator_spec.rb +7 -7
  55. metadata +35 -17
@@ -10,9 +10,9 @@ describe BraintreeRails::Plan do
10
10
  braintree_plan = Braintree::Plan.all.find { |p| p.id == 'plan_id' }
11
11
  plan = BraintreeRails::Plan.new(braintree_plan)
12
12
 
13
- plan.should be_persisted
13
+ expect(plan).to be_persisted
14
14
  BraintreeRails::Plan.attributes.each do |attribute|
15
- plan.send(attribute).should == braintree_plan.send(attribute)
15
+ expect(plan.send(attribute)).to eq(braintree_plan.send(attribute))
16
16
  end
17
17
  end
18
18
 
@@ -20,9 +20,9 @@ describe BraintreeRails::Plan do
20
20
  braintree_plan = Braintree::Plan.all.find { |p| p.id == 'plan_id' }
21
21
  plan = BraintreeRails::Plan.find('plan_id')
22
22
 
23
- plan.should be_persisted
23
+ expect(plan).to be_persisted
24
24
  BraintreeRails::Plan.attributes.each do |attribute|
25
- plan.send(attribute).should == braintree_plan.send(attribute)
25
+ expect(plan.send(attribute)).to eq(braintree_plan.send(attribute))
26
26
  end
27
27
  end
28
28
  end
@@ -32,8 +32,8 @@ describe BraintreeRails::Plan do
32
32
  braintree_plans = Braintree::Plan.all
33
33
  plans = BraintreeRails::Plan.all
34
34
 
35
- plans.should respond_to(:each)
36
- plans.size.should == braintree_plans.size
35
+ expect(plans).to respond_to(:each)
36
+ expect(plans.size).to eq(braintree_plans.size)
37
37
  end
38
38
  end
39
39
 
@@ -43,8 +43,8 @@ describe BraintreeRails::Plan do
43
43
  braintree_plan = Braintree::Plan.all.find { |p| p.id == 'plan_id' }
44
44
  plan = BraintreeRails::Plan.new(braintree_plan)
45
45
 
46
- plan.send(association).should respond_to(:each)
47
- plan.send(association).size.should == braintree_plan.send(association).size
46
+ expect(plan.send(association)).to respond_to(:each)
47
+ expect(plan.send(association).size).to eq(braintree_plan.send(association).size)
48
48
  end
49
49
  end
50
50
  end
@@ -62,14 +62,14 @@ describe BraintreeRails::Plan do
62
62
  search.plan_id.is 'plan_id'
63
63
  end.to_a
64
64
 
65
- plan.subscriptions.should respond_to(:each)
66
- plan.subscriptions.size.should == braintree_subscriptions.size
65
+ expect(plan.subscriptions).to respond_to(:each)
66
+ expect(plan.subscriptions.size).to eq(braintree_subscriptions.size)
67
67
  end
68
68
 
69
69
  it 'can build new subscription' do
70
70
  plan = BraintreeRails::Plan.new('plan_id')
71
71
  subscription = plan.subscriptions.build
72
- subscription.plan_id.should == plan.id
72
+ expect(subscription.plan_id).to eq(plan.id)
73
73
  end
74
74
  end
75
- end
75
+ end
@@ -10,10 +10,10 @@ describe BraintreeRails::Subscription do
10
10
  subscription = BraintreeRails::Subscription.new('subscription_id')
11
11
  braintree_subscription = Braintree::Subscription.find('subscription_id')
12
12
 
13
- subscription.should be_persisted
14
- subscription.never_expires?.should == braintree_subscription.never_expires?
13
+ expect(subscription).to be_persisted
14
+ expect(subscription.never_expires?).to eq(braintree_subscription.never_expires?)
15
15
  BraintreeRails::Subscription.attributes.each do |attribute|
16
- subscription.send(attribute).should == braintree_subscription.send(attribute) if braintree_subscription.respond_to?(attribute)
16
+ expect(subscription.send(attribute)).to eq(braintree_subscription.send(attribute)) if braintree_subscription.respond_to?(attribute)
17
17
  end
18
18
  end
19
19
 
@@ -21,27 +21,27 @@ describe BraintreeRails::Subscription do
21
21
  braintree_subscription = Braintree::Subscription.find('subscription_id')
22
22
  subscription = BraintreeRails::Subscription.new(braintree_subscription)
23
23
 
24
- subscription.should be_persisted
24
+ expect(subscription).to be_persisted
25
25
  BraintreeRails::Subscription.attributes.each do |attribute|
26
- subscription.send(attribute).should == braintree_subscription.send(attribute) if braintree_subscription.respond_to?(attribute)
26
+ expect(subscription.send(attribute)).to eq(braintree_subscription.send(attribute)) if braintree_subscription.respond_to?(attribute)
27
27
  end
28
28
  end
29
29
 
30
30
  it 'should extract values from hash' do
31
31
  subscription = BraintreeRails::Subscription.new(:id => 'new_id')
32
32
 
33
- subscription.should_not be_persisted
34
- subscription.id.should == 'new_id'
33
+ expect(subscription).to_not be_persisted
34
+ expect(subscription.id).to eq('new_id')
35
35
  end
36
36
 
37
37
  it 'should try to extract value from other types' do
38
38
  subscription = BraintreeRails::Subscription.new(OpenStruct.new(:id => 'foobar', :persisted? => true))
39
39
 
40
- subscription.should be_persisted
41
- subscription.id.should == 'foobar'
40
+ expect(subscription).to be_persisted
41
+ expect(subscription.id).to eq('foobar')
42
42
 
43
43
  subscription = BraintreeRails::Subscription.new(OpenStruct.new)
44
- subscription.should_not be_persisted
44
+ expect(subscription).to_not be_persisted
45
45
  end
46
46
  end
47
47
 
@@ -49,136 +49,136 @@ describe BraintreeRails::Subscription do
49
49
  it 'should validate id' do
50
50
  subscription = BraintreeRails::Subscription.new
51
51
  subscription.valid?
52
- subscription.errors[:id].should be_blank
52
+ expect(subscription.errors[:id]).to be_blank
53
53
 
54
54
  subscription = BraintreeRails::Subscription.new(:id => '@#$%')
55
55
  subscription.valid?
56
- subscription.errors[:id].should_not be_blank
56
+ expect(subscription.errors[:id]).to_not be_blank
57
57
  end
58
58
 
59
59
  it 'should billing_day_of_month' do
60
60
  subscription = BraintreeRails::Subscription.new
61
61
  subscription.valid?
62
- subscription.errors[:billing_day_of_month].should be_blank
62
+ expect(subscription.errors[:billing_day_of_month]).to be_blank
63
63
 
64
64
  [*(1..28), 31].each do |valid_day|
65
65
  subscription = BraintreeRails::Subscription.new(:billing_day_of_month => valid_day)
66
66
  subscription.valid?
67
- subscription.errors[:billing_day_of_month].should be_blank
67
+ expect(subscription.errors[:billing_day_of_month]).to be_blank
68
68
  end
69
69
 
70
70
  [29, 30, 'foo'].each do |invalid_day|
71
71
  subscription = BraintreeRails::Subscription.new(:billing_day_of_month => invalid_day)
72
72
  subscription.valid?
73
- subscription.errors[:billing_day_of_month].should_not be_blank
73
+ expect(subscription.errors[:billing_day_of_month]).to_not be_blank
74
74
  end
75
75
  end
76
76
 
77
77
  it 'should validate numericality of number_of_billing_cycles' do
78
78
  subscription = BraintreeRails::Subscription.new(:number_of_billing_cycles => 'foobar')
79
79
  subscription.valid?
80
- subscription.errors[:number_of_billing_cycles].should_not be_blank
80
+ expect(subscription.errors[:number_of_billing_cycles]).to_not be_blank
81
81
 
82
82
  [123, '123', nil].each do |valid_number|
83
83
  subscription = BraintreeRails::Subscription.new(:number_of_billing_cycles => valid_number)
84
84
  subscription.valid?
85
- subscription.errors[:number_of_billing_cycles].should be_blank
85
+ expect(subscription.errors[:number_of_billing_cycles]).to be_blank
86
86
  end
87
87
 
88
88
  [123.45, '123.45', 'foo'].each do |invalid_number|
89
89
  subscription = BraintreeRails::Subscription.new(:number_of_billing_cycles => 'foo')
90
90
  subscription.valid?
91
- subscription.errors[:number_of_billing_cycles].should_not be_blank
91
+ expect(subscription.errors[:number_of_billing_cycles]).to_not be_blank
92
92
  end
93
93
  end
94
94
 
95
95
  it 'should validate number_of_billing_cycles is greater than current_billing_cycle' do
96
96
  subscription = BraintreeRails::Subscription.new(:number_of_billing_cycles => '2', :current_billing_cycle => '1')
97
97
  subscription.valid?
98
- subscription.errors[:number_of_billing_cycles].should be_blank
98
+ expect(subscription.errors[:number_of_billing_cycles]).to be_blank
99
99
 
100
100
  subscription = BraintreeRails::Subscription.new(:number_of_billing_cycles => '2', :current_billing_cycle => '3')
101
101
  subscription.valid?
102
- subscription.errors[:number_of_billing_cycles].should_not be_blank
102
+ expect(subscription.errors[:number_of_billing_cycles]).to_not be_blank
103
103
  end
104
104
 
105
105
  it 'should validate precence of payment_method_token if new_record?' do
106
106
  subscription = BraintreeRails::Subscription.new
107
107
  subscription.valid?
108
- subscription.errors[:payment_method_token].should_not be_blank
108
+ expect(subscription.errors[:payment_method_token]).to_not be_blank
109
109
 
110
110
  subscription = BraintreeRails::Subscription.new(:payment_method_token => 'token')
111
111
  subscription.valid?
112
- subscription.errors[:payment_method_token].should be_blank
112
+ expect(subscription.errors[:payment_method_token]).to be_blank
113
113
  end
114
114
 
115
115
  it 'should validate precence of plan_id if new_record?' do
116
116
  subscription = BraintreeRails::Subscription.new
117
117
  subscription.valid?
118
- subscription.errors[:plan_id].should_not be_blank
118
+ expect(subscription.errors[:plan_id]).to_not be_blank
119
119
 
120
120
  subscription = BraintreeRails::Subscription.new(:plan_id => 'plan_id')
121
121
  subscription.valid?
122
- subscription.errors[:plan_id].should be_blank
122
+ expect(subscription.errors[:plan_id]).to be_blank
123
123
  end
124
124
 
125
125
  it 'should validate numericality of price' do
126
126
  subscription = BraintreeRails::Subscription.new(:price => 'foobar')
127
127
  subscription.valid?
128
- subscription.errors[:price].should_not be_blank
128
+ expect(subscription.errors[:price]).to_not be_blank
129
129
 
130
130
  [123, 123.45, '123', '123.45', nil].each do |valid_price|
131
131
  subscription = BraintreeRails::Subscription.new(:price => valid_price)
132
132
  subscription.valid?
133
- subscription.errors[:price].should be_blank
133
+ expect(subscription.errors[:price]).to be_blank
134
134
  end
135
135
 
136
136
  subscription = BraintreeRails::Subscription.new(:price => 'foo')
137
137
  subscription.valid?
138
- subscription.errors[:price].should_not be_blank
138
+ expect(subscription.errors[:price]).to_not be_blank
139
139
  end
140
140
 
141
141
  it 'should validate numericality of trial_duration if trial_period' do
142
142
  subscription = BraintreeRails::Subscription.new(:trial_duration => 'foobar')
143
143
  subscription.valid?
144
- subscription.errors[:trial_duration].should be_blank
144
+ expect(subscription.errors[:trial_duration]).to be_blank
145
145
 
146
146
  subscription = BraintreeRails::Subscription.new(:trial_duration => 'foobar', :trial_period => true)
147
147
  subscription.valid?
148
- subscription.errors[:trial_duration].should_not be_blank
148
+ expect(subscription.errors[:trial_duration]).to_not be_blank
149
149
 
150
150
  [1, 9999, '123'].each do |valid_duration|
151
151
  subscription = BraintreeRails::Subscription.new(:trial_duration => valid_duration, :trial_period => true)
152
152
  subscription.valid?
153
- subscription.errors[:trial_duration].should be_blank
153
+ expect(subscription.errors[:trial_duration]).to be_blank
154
154
  end
155
155
 
156
156
  [0, 10000, 1.23, nil].each do |invalid_duration|
157
157
  subscription = BraintreeRails::Subscription.new(:trial_duration => invalid_duration, :trial_period => true)
158
158
  subscription.valid?
159
- subscription.errors[:trial_duration].should_not be_blank
159
+ expect(subscription.errors[:trial_duration]).to_not be_blank
160
160
  end
161
161
  end
162
162
 
163
163
  it 'should validate trial_duration_unit if trial_period' do
164
164
  subscription = BraintreeRails::Subscription.new(:trial_duration_unit => 'foobar')
165
165
  subscription.valid?
166
- subscription.errors[:trial_duration_unit].should be_blank
166
+ expect(subscription.errors[:trial_duration_unit]).to be_blank
167
167
 
168
168
  subscription = BraintreeRails::Subscription.new(:trial_duration_unit => 'foobar', :trial_period => true)
169
169
  subscription.valid?
170
- subscription.errors[:trial_duration_unit].should_not be_blank
170
+ expect(subscription.errors[:trial_duration_unit]).to_not be_blank
171
171
 
172
172
  ['day', 'month'].each do |valid_unit|
173
173
  subscription = BraintreeRails::Subscription.new(:trial_duration_unit => valid_unit, :trial_period => true)
174
174
  subscription.valid?
175
- subscription.errors[:trial_duration_unit].should be_blank
175
+ expect(subscription.errors[:trial_duration_unit]).to be_blank
176
176
  end
177
177
 
178
178
  ["", "foo", nil].each do |invalid_duration|
179
179
  subscription = BraintreeRails::Subscription.new(:trial_duration_unit => invalid_duration, :trial_period => true)
180
180
  subscription.valid?
181
- subscription.errors[:trial_duration_unit].should_not be_blank
181
+ expect(subscription.errors[:trial_duration_unit]).to_not be_blank
182
182
  end
183
183
  end
184
184
 
@@ -186,13 +186,13 @@ describe BraintreeRails::Subscription do
186
186
  [Date.today, Date.tomorrow, Date.tomorrow.to_s, nil].each do |valid_date|
187
187
  subscription = BraintreeRails::Subscription.new(:first_billing_date => valid_date)
188
188
  subscription.valid?
189
- subscription.errors[:first_billing_date].should be_blank
189
+ expect(subscription.errors[:first_billing_date]).to be_blank
190
190
  end
191
191
 
192
192
  [Date.yesterday, "invalid date"].each do |invalid_date|
193
193
  subscription = BraintreeRails::Subscription.new(:first_billing_date => invalid_date)
194
194
  subscription.valid?
195
- subscription.errors[:first_billing_date].should_not be_blank
195
+ expect(subscription.errors[:first_billing_date]).to_not be_blank
196
196
  end
197
197
  end
198
198
  end
@@ -202,7 +202,7 @@ describe BraintreeRails::Subscription do
202
202
  subscription = BraintreeRails::Subscription.new('subscription_id')
203
203
  braintree_subscription = Braintree::Subscription.find('subscription_id')
204
204
  stub_braintree_request(:get, '/plans', :body => fixture('plans.xml'))
205
- subscription.plan.id.should == braintree_subscription.plan_id
205
+ expect(subscription.plan.id).to eq(braintree_subscription.plan_id)
206
206
  end
207
207
  end
208
208
 
@@ -210,8 +210,8 @@ describe BraintreeRails::Subscription do
210
210
  it 'should load credit_card from payment_method_token' do
211
211
  subscription = BraintreeRails::Subscription.new('subscription_id')
212
212
  braintree_subscription = Braintree::Subscription.find('subscription_id')
213
- stub_braintree_request(:get, '/payment_methods/credit_card_id', :body => fixture('credit_card.xml'))
214
- subscription.credit_card.token.should == braintree_subscription.payment_method_token
213
+ stub_braintree_request(:get, '/payment_methods/credit_card/credit_card_id', :body => fixture('credit_card.xml'))
214
+ expect(subscription.credit_card.token).to eq(braintree_subscription.payment_method_token)
215
215
  end
216
216
  end
217
217
 
@@ -221,8 +221,8 @@ describe BraintreeRails::Subscription do
221
221
  braintree_subscription = Braintree::Subscription.find('subscription_id')
222
222
  subscription = BraintreeRails::Subscription.new(braintree_subscription)
223
223
 
224
- subscription.send(association).should respond_to(:each)
225
- subscription.send(association).size.should == braintree_subscription.send(association).size
224
+ expect(subscription.send(association)).to respond_to(:each)
225
+ expect(subscription.send(association).size).to eq(braintree_subscription.send(association).size)
226
226
  end
227
227
 
228
228
  it 'does not support create' do
@@ -241,43 +241,43 @@ describe BraintreeRails::Subscription do
241
241
  describe 'save, save!' do
242
242
  it 'should return true when saved' do
243
243
  subscription = BraintreeRails::Subscription.new(subscription_hash)
244
- subscription.save.should be_true
245
- subscription.should be_persisted
244
+ expect(subscription.save).to eq(true)
245
+ expect(subscription).to be_persisted
246
246
  end
247
247
 
248
248
  it 'should not throw error when not valid' do
249
249
  subscription = BraintreeRails::Subscription.new
250
- subscription.save.should be_false
251
- subscription.should_not be_persisted
250
+ expect(subscription.save).to eq(false)
251
+ expect(subscription).to_not be_persisted
252
252
  end
253
253
 
254
254
  it 'should return true when saved with bang' do
255
255
  subscription = BraintreeRails::Subscription.new(subscription_hash)
256
- subscription.save!.should be_true
257
- subscription.should be_persisted
256
+ expect(subscription.save!).to eq(true)
257
+ expect(subscription).to be_persisted
258
258
  end
259
259
 
260
260
  it 'should throw error when save invalid record with bang' do
261
261
  subscription = BraintreeRails::Subscription.new(:first_name => 'f' * 256)
262
262
  expect { subscription.save! }.to raise_error(BraintreeRails::RecordInvalid)
263
- subscription.should_not be_persisted
263
+ expect(subscription).to_not be_persisted
264
264
  end
265
265
  end
266
266
 
267
267
  describe 'update_attributes, update_attributes!' do
268
268
  it 'should return true when update_attributes' do
269
269
  subscription = BraintreeRails::Subscription.new(Braintree::Subscription.find('subscription_id'))
270
- subscription.update_attributes(:price => '10').should be_true
270
+ expect(subscription.update_attributes(:price => '10')).to eq(true)
271
271
  end
272
272
 
273
273
  it 'should not throw error when not valid' do
274
274
  subscription = BraintreeRails::Subscription.new(Braintree::Subscription.find('subscription_id'))
275
- subscription.update_attributes(:price => 'f' * 256).should be_false
275
+ expect(subscription.update_attributes(:price => 'f' * 256)).to eq(false)
276
276
  end
277
277
 
278
278
  it 'should return true when update_attributesd with bang' do
279
279
  subscription = BraintreeRails::Subscription.new(Braintree::Subscription.find('subscription_id'))
280
- subscription.update_attributes!(:price => '10').should be_true
280
+ expect(subscription.update_attributes!(:price => '10')).to eq(true)
281
281
  end
282
282
 
283
283
  it 'should throw error when update_attributes invalid record with bang' do
@@ -307,4 +307,4 @@ describe BraintreeRails::Subscription do
307
307
  end
308
308
  end
309
309
  end
310
- end
310
+ end
@@ -16,7 +16,7 @@ describe BraintreeRails::Subscriptions do
16
16
 
17
17
  subscriptions = BraintreeRails::Subscriptions.new(BraintreeRails::Plan.new('plan_id'))
18
18
 
19
- subscriptions.map(&:id).sort.should == braintree_subscriptions.map(&:id).sort
19
+ expect(subscriptions.map(&:id).sort).to eq(braintree_subscriptions.map(&:id).sort)
20
20
  end
21
21
 
22
22
  it 'should load all subscriptions' do
@@ -25,7 +25,7 @@ describe BraintreeRails::Subscriptions do
25
25
 
26
26
  braintree_subscriptions = Braintree::Subscription.search
27
27
  subscriptions = BraintreeRails::Subscriptions.new(nil)
28
- subscriptions.map(&:id).sort.should == braintree_subscriptions.map(&:id).sort
28
+ expect(subscriptions.map(&:id).sort).to eq(braintree_subscriptions.map(&:id).sort)
29
29
  end
30
30
  end
31
31
 
@@ -33,8 +33,7 @@ describe BraintreeRails::Subscriptions do
33
33
  it 'has no default options when loading all' do
34
34
  subscriptions = BraintreeRails::Subscriptions.new(nil)
35
35
  subscription = subscriptions.build
36
- subscription.attributes.values.compact.should be_empty
36
+ expect(subscription.attributes.values.compact).to be_empty
37
37
  end
38
38
  end
39
- end
40
-
39
+ end
@@ -3,7 +3,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '../unit_spec_helper'
3
3
  describe BraintreeRails::Transaction do
4
4
  before do
5
5
  stub_braintree_request(:get, '/customers/customer_id', :body => fixture('customer.xml'))
6
- stub_braintree_request(:get, '/payment_methods/credit_card_id', :body => fixture('credit_card.xml'))
6
+ stub_braintree_request(:get, '/payment_methods/credit_card/credit_card_id', :body => fixture('credit_card.xml'))
7
7
  stub_braintree_request(:get, '/transactions/transactionid', :body => fixture('transaction.xml'))
8
8
  end
9
9
 
@@ -12,9 +12,9 @@ describe BraintreeRails::Transaction do
12
12
  braintree_transaction = Braintree::Transaction.find('transactionid')
13
13
  transaction = BraintreeRails::Transaction.new('transactionid')
14
14
 
15
- transaction.should be_persisted
15
+ expect(transaction).to be_persisted
16
16
  [:amount, :created_at, :updated_at].each do |attribute|
17
- transaction.send(attribute).should == braintree_transaction.send(attribute)
17
+ expect(transaction.send(attribute)).to eq(braintree_transaction.send(attribute))
18
18
  end
19
19
  end
20
20
 
@@ -22,28 +22,28 @@ describe BraintreeRails::Transaction do
22
22
  braintree_transaction = Braintree::Transaction.find('transactionid')
23
23
  transaction = BraintreeRails::Transaction.new(braintree_transaction)
24
24
 
25
- transaction.should be_persisted
25
+ expect(transaction).to be_persisted
26
26
  [:amount, :created_at, :updated_at].each do |attribute|
27
- transaction.send(attribute).should == braintree_transaction.send(attribute)
27
+ expect(transaction.send(attribute)).to eq(braintree_transaction.send(attribute))
28
28
  end
29
29
  end
30
30
 
31
31
  it 'should extract values from hash' do
32
32
  transaction = BraintreeRails::Transaction.new(:id => 'new_id')
33
33
 
34
- transaction.should_not be_persisted
35
- transaction.id.should == 'new_id'
34
+ expect(transaction).to_not be_persisted
35
+ expect(transaction.id).to eq('new_id')
36
36
  end
37
37
 
38
38
  it 'should try to extract value from other types' do
39
39
  transaction = BraintreeRails::Transaction.new(OpenStruct.new(:id => 'foobar', :amount => '10.00', :persisted? => true))
40
40
 
41
- transaction.should be_persisted
42
- transaction.id.should == 'foobar'
43
- transaction.amount.should == '10.00'
41
+ expect(transaction).to be_persisted
42
+ expect(transaction.id).to eq('foobar')
43
+ expect(transaction.amount).to eq('10.00')
44
44
 
45
45
  transaction = BraintreeRails::Transaction.new(Object.new)
46
- transaction.should_not be_persisted
46
+ expect(transaction).to_not be_persisted
47
47
  end
48
48
  end
49
49
 
@@ -51,12 +51,12 @@ describe BraintreeRails::Transaction do
51
51
  describe association do
52
52
  it "should load #{association} for persisted transaction" do
53
53
  transaction = BraintreeRails::Transaction.new('transactionid')
54
- transaction.send(association).should be_persisted
54
+ expect(transaction.send(association)).to be_persisted
55
55
  end
56
56
 
57
57
  it "should keep #{association} nil if assigned nil value" do
58
58
  transaction = BraintreeRails::Transaction.new(association => nil)
59
- transaction.send(association).should be_nil
59
+ expect(transaction.send(association)).to be_nil
60
60
  end
61
61
  end
62
62
  end
@@ -67,8 +67,8 @@ describe BraintreeRails::Transaction do
67
67
  braintree_transaction = Braintree::Transaction.find('transactionid')
68
68
  transaction = BraintreeRails::Transaction.new(braintree_transaction)
69
69
 
70
- transaction.send(association).should respond_to(:each)
71
- transaction.send(association).size.should == braintree_transaction.send(association).size
70
+ expect(transaction.send(association)).to respond_to(:each)
71
+ expect(transaction.send(association).size).to eq(braintree_transaction.send(association).size)
72
72
  end
73
73
  end
74
74
  end
@@ -77,63 +77,63 @@ describe BraintreeRails::Transaction do
77
77
  it 'should validate amount' do
78
78
  [nil, 'abc', -1].each do |invalid_value|
79
79
  transaction = BraintreeRails::Transaction.new(:amount => invalid_value)
80
- transaction.should_not be_valid
81
- transaction.errors[:amount].should_not be_blank
80
+ expect(transaction).to_not be_valid
81
+ expect(transaction.errors[:amount]).to_not be_blank
82
82
  end
83
83
 
84
84
  [10, 10.0, "10", "10.00"].each do |valid_value|
85
85
  transaction = BraintreeRails::Transaction.new(:amount => valid_value)
86
86
  transaction.valid?
87
- transaction.errors[:amount].should be_blank
87
+ expect(transaction.errors[:amount]).to be_blank
88
88
  end
89
89
  end
90
90
 
91
91
  it 'should validate type' do
92
92
  ['refund', 'abc'].each do |invalid_value|
93
93
  transaction = BraintreeRails::Transaction.new(:type => invalid_value)
94
- transaction.should_not be_valid
95
- transaction.errors[:type].should_not be_blank
94
+ expect(transaction).to_not be_valid
95
+ expect(transaction.errors[:type]).to_not be_blank
96
96
  end
97
97
 
98
98
  ['sale', 'credit'].each do |valid_value|
99
99
  transaction = BraintreeRails::Transaction.new(:type => valid_value)
100
100
  transaction.valid?
101
- transaction.errors[:type].should be_blank
101
+ expect(transaction.errors[:type]).to be_blank
102
102
  end
103
103
  end
104
104
 
105
105
  describe 'credit card' do
106
106
  it 'is valid if new credit card with valid billing address' do
107
107
  transaction = BraintreeRails::Transaction.new(:amount => 10, :billing => address_hash, :credit_card => credit_card_hash)
108
- transaction.should be_valid
108
+ expect(transaction).to be_valid
109
109
 
110
110
  transaction = BraintreeRails::Transaction.new(:amount => 10, :credit_card => credit_card_hash)
111
- transaction.should_not be_valid
111
+ expect(transaction).to_not be_valid
112
112
  end
113
113
 
114
114
  it 'is valid if credit card is persisted' do
115
115
  transaction = BraintreeRails::Transaction.new(:amount => 10, :credit_card => BraintreeRails::CreditCard.find('credit_card_id'))
116
- transaction.should be_valid
116
+ expect(transaction).to be_valid
117
117
  end
118
118
 
119
119
  it 'is valid if customer has default credit card' do
120
120
  transaction = BraintreeRails::Transaction.new(:amount => 10, :customer => BraintreeRails::Customer.find('customer_id'))
121
- transaction.should be_valid
121
+ expect(transaction).to be_valid
122
122
 
123
123
  transaction = BraintreeRails::Transaction.new(:amount => 10, :customer => customer_hash)
124
- transaction.should_not be_valid
124
+ expect(transaction).to_not be_valid
125
125
  end
126
126
 
127
127
  it 'should not validate credit card if already persisted' do
128
128
  transaction = BraintreeRails::Transaction.new(OpenStruct.new(:amount => 10, :persisted? => true))
129
- transaction.should be_valid
129
+ expect(transaction).to be_valid
130
130
  end
131
131
  end
132
132
  end
133
133
 
134
134
  describe '#attribute_for_create' do
135
135
  it 'should default type to sale' do
136
- BraintreeRails::Transaction.new.send(:attributes_for, :create)[:type].should == 'sale'
136
+ expect(BraintreeRails::Transaction.new.send(:attributes_for, :create)[:type]).to eq('sale')
137
137
  end
138
138
  end
139
139
 
@@ -147,88 +147,100 @@ describe BraintreeRails::Transaction do
147
147
  credit_card = BraintreeRails::CreditCard.find('credit_card_id')
148
148
  transaction = BraintreeRails::Transaction.new(:amount => '10.00', :customer => customer, :credit_card => credit_card)
149
149
 
150
- transaction.save.should be_true
151
- transaction.status.should == Braintree::Transaction::Status::Authorized
150
+ expect(transaction.save).to eq(true)
151
+ expect(transaction.status).to eq(Braintree::Transaction::Status::Authorized)
152
152
  end
153
153
 
154
154
  it 'should create a sale transaction from new credit card' do
155
155
  transaction = BraintreeRails::Transaction.new(:amount => '10.00', :billing => address_hash, :credit_card => credit_card_hash)
156
156
  transaction.valid?
157
- transaction.save.should be_true
158
- transaction.status.should == Braintree::Transaction::Status::Authorized
157
+ expect(transaction.save).to eq(true)
158
+ expect(transaction.status).to eq(Braintree::Transaction::Status::Authorized)
159
159
  end
160
160
 
161
161
  it 'should clear encrypted attributes even when save failed' do
162
162
  transaction = BraintreeRails::Transaction.new(:amount => 'foo', :credit_card => credit_card_hash)
163
- transaction.save.should be_false
164
- transaction.credit_card.number.should be_blank
163
+ expect(transaction.save).to eq(false)
164
+ expect(transaction.credit_card.number).to be_blank
165
165
  end
166
166
 
167
167
  it 'should clear encrypted attributes after save' do
168
168
  transaction = BraintreeRails::Transaction.new(:amount => '10.00', :billing => address_hash, :credit_card => credit_card_hash)
169
169
  transaction.valid?
170
- transaction.save.should be_true
171
- transaction.credit_card.number.should be_blank
170
+ expect(transaction.save).to eq(true)
171
+ expect(transaction.credit_card.number).to be_blank
172
172
  end
173
173
 
174
174
  it 'should clear encrypted attributes' do
175
175
  transaction = BraintreeRails::Transaction.new(:credit_card => credit_card_hash)
176
176
  transaction.clear_encryped_attributes
177
- transaction.credit_card.number.should be_blank
177
+ expect(transaction.credit_card.number).to be_blank
178
178
  end
179
179
 
180
180
  it 'should use default credit card of customer if credit_card is not specified' do
181
181
  customer = BraintreeRails::Customer.find('customer_id')
182
182
  transaction = BraintreeRails::Transaction.new(:amount => '10.00', :customer => customer)
183
- transaction.save.should be_true
184
- transaction.status.should == Braintree::Transaction::Status::Authorized
183
+ expect(transaction.save).to eq(true)
184
+ expect(transaction.status).to eq(Braintree::Transaction::Status::Authorized)
185
185
  end
186
186
 
187
187
  it "should be able to submit_for_settlement a authorized transaction" do
188
188
  transaction = BraintreeRails::Transaction.find('transactionid')
189
189
  stub_braintree_request(:put, "/transactions/#{transaction.id}/submit_for_settlement", :body => fixture('transaction.xml'))
190
- transaction.submit_for_settlement.should be_true
190
+ expect(transaction.submit_for_settlement).to eq(true)
191
191
  transaction.status = Braintree::Transaction::Status::Settled
192
- transaction.submit_for_settlement.should be_false
192
+ expect(transaction.submit_for_settlement).to eq(false)
193
193
  end
194
194
 
195
195
  it "should be able to refund a settled transaction" do
196
196
  transaction = BraintreeRails::Transaction.find('transactionid')
197
197
  transaction.status = Braintree::Transaction::Status::Settled
198
198
  stub_braintree_request(:post, "/transactions/#{transaction.id}/refund", :body => fixture('transaction.xml'))
199
- transaction.refund.should be_true
199
+ expect(transaction.refund).to eq(true)
200
200
  transaction.status = Braintree::Transaction::Status::Authorized
201
- transaction.refund.should be_false
201
+ expect(transaction.refund).to eq(false)
202
202
  end
203
203
 
204
204
  it "should be able to void a authorized transaction" do
205
205
  transaction = BraintreeRails::Transaction.find('transactionid')
206
206
  stub_braintree_request(:put, "/transactions/#{transaction.id}/void", :body => fixture('transaction.xml'))
207
- transaction.void.should be_true
207
+ expect(transaction.void).to eq(true)
208
208
  transaction.status = Braintree::Transaction::Status::Settled
209
- transaction.void.should be_false
209
+ expect(transaction.void).to eq(false)
210
210
  end
211
211
 
212
212
  it 'should show errors when trying to submit already voided transaction' do
213
213
  transaction = BraintreeRails::Transaction.find('transactionid')
214
214
  transaction.status = Braintree::Transaction::Status::Voided
215
- transaction.submit_for_settlement.should be_false
216
- transaction.errors[:status].should_not be_blank
215
+ expect(transaction.submit_for_settlement).to eq(false)
216
+ expect(transaction.errors[:status]).to_not be_blank
217
217
 
218
218
  expect {transaction.submit_for_settlement!}.to raise_error(BraintreeRails::RecordInvalid)
219
219
  end
220
220
 
221
- it 'should propergate api errors to credit card if any' do
221
+ it 'should propergate api errors to associations if any' do
222
222
  customer = BraintreeRails::Customer.find('customer_id')
223
223
  credit_card = BraintreeRails::CreditCard.find('credit_card_id')
224
- transaction = BraintreeRails::Transaction.new(:amount => '10.00', :customer => customer, :credit_card => credit_card)
224
+ transaction = BraintreeRails::Transaction.new(:amount => '10.00', :customer => customer, :credit_card => credit_card, :billing => address_hash, :shipping => address_hash)
225
225
  stub_braintree_request(:post, '/transactions', :status => 422, :body => fixture('transaction_error.xml'))
226
226
  transaction.save
227
- transaction.errors[:base].should == ["Credit card type is not accepted by this merchant account."]
228
- transaction.credit_card.errors.full_messages.should == ["Number Credit card number is invalid."]
229
- transaction.credit_card.errors[:number].first.code.should == "81715"
230
- transaction.credit_card.errors[:number].first.message.should == "Credit card number is invalid."
231
- transaction.credit_card.errors[:number].first.to_s.should == "Credit card number is invalid."
227
+ expect(transaction.credit_card.errors[:base][0].code).to eq("81725")
228
+ expect(transaction.credit_card.errors[:base][0].message).to eq("Credit card must include number, payment_method_nonce, or venmo_sdk_payment_method_code.")
229
+ expect(transaction.credit_card.errors[:base][0].to_s).to eq("Credit card must include number, payment_method_nonce, or venmo_sdk_payment_method_code.")
230
+
231
+ expect(transaction.errors[:merchant_account_id].first.code).to eq('91577')
232
+ expect(transaction.errors[:merchant_account_id].first.message).to eq("Merchant account does not support payment instrument.")
233
+ expect(transaction.errors[:merchant_account_id].first.to_s).to eq("Merchant account does not support payment instrument.")
234
+
235
+ credit_card_errors = [
236
+ "Number Credit card type is not accepted by this merchant account.",
237
+ "Number Credit card number is required.",
238
+ "Credit card must include number, payment_method_nonce, or venmo_sdk_payment_method_code."
239
+ ]
240
+ expect(transaction.credit_card.errors.full_messages.map(&:to_s)).to eq(credit_card_errors)
241
+
242
+ expect(transaction.billing.errors.full_messages.map(&:to_s)).to eq(["Postal code Postal code may contain no more than 9 letter or number characters."])
243
+ expect(transaction.shipping.errors.full_messages.map(&:to_s)).to eq(["Postal code Postal code may contain no more than 9 letter or number characters."])
232
244
  end
233
245
 
234
246
  it 'does not support update or destroy' do
@@ -236,4 +248,4 @@ describe BraintreeRails::Transaction do
236
248
  expect {BraintreeRails::Transaction.find('transactionid').destroy!}.to raise_error(BraintreeRails::NotSupportedApiException)
237
249
  end
238
250
  end
239
- end
251
+ end