braintree 4.14.0 → 4.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (247) hide show
  1. checksums.yaml +4 -4
  2. data/lib/braintree/account_updater_daily_report.rb +3 -3
  3. data/lib/braintree/ach_mandate.rb +1 -1
  4. data/lib/braintree/add_on_gateway.rb +1 -1
  5. data/lib/braintree/address.rb +4 -4
  6. data/lib/braintree/address_gateway.rb +5 -5
  7. data/lib/braintree/advanced_search.rb +10 -10
  8. data/lib/braintree/apple_pay.rb +3 -3
  9. data/lib/braintree/apple_pay_card.rb +3 -3
  10. data/lib/braintree/apple_pay_options.rb +3 -3
  11. data/lib/braintree/authorization_adjustment.rb +3 -3
  12. data/lib/braintree/base_module.rb +1 -1
  13. data/lib/braintree/bin_data.rb +2 -2
  14. data/lib/braintree/client_token_gateway.rb +1 -1
  15. data/lib/braintree/configuration.rb +22 -22
  16. data/lib/braintree/connected_merchant_paypal_status_changed.rb +1 -1
  17. data/lib/braintree/connected_merchant_status_transitioned.rb +1 -1
  18. data/lib/braintree/credit_card.rb +22 -9
  19. data/lib/braintree/credit_card_gateway.rb +23 -11
  20. data/lib/braintree/credit_card_verification.rb +3 -3
  21. data/lib/braintree/credit_card_verification_gateway.rb +28 -11
  22. data/lib/braintree/credit_card_verification_search.rb +1 -1
  23. data/lib/braintree/customer.rb +5 -9
  24. data/lib/braintree/customer_gateway.rb +7 -7
  25. data/lib/braintree/customer_search.rb +1 -1
  26. data/lib/braintree/descriptor.rb +1 -1
  27. data/lib/braintree/digest.rb +1 -1
  28. data/lib/braintree/disbursement.rb +5 -5
  29. data/lib/braintree/discount_gateway.rb +1 -1
  30. data/lib/braintree/dispute/evidence.rb +1 -1
  31. data/lib/braintree/dispute/paypal_message.rb +1 -1
  32. data/lib/braintree/dispute/status_history.rb +1 -1
  33. data/lib/braintree/dispute/transaction.rb +1 -1
  34. data/lib/braintree/dispute/transaction_details.rb +1 -1
  35. data/lib/braintree/dispute.rb +3 -3
  36. data/lib/braintree/dispute_gateway.rb +1 -1
  37. data/lib/braintree/dispute_search.rb +1 -1
  38. data/lib/braintree/document_upload.rb +2 -2
  39. data/lib/braintree/document_upload_gateway.rb +3 -3
  40. data/lib/braintree/enriched_customer_data.rb +2 -2
  41. data/lib/braintree/error_codes.rb +4 -0
  42. data/lib/braintree/error_result.rb +2 -3
  43. data/lib/braintree/errors.rb +3 -3
  44. data/lib/braintree/exceptions.rb +1 -2
  45. data/lib/braintree/exchange_rate.rb +2 -2
  46. data/lib/braintree/exchange_rate_quote.rb +3 -3
  47. data/lib/braintree/exchange_rate_quote_gateway.rb +1 -1
  48. data/lib/braintree/exchange_rate_quote_input.rb +3 -3
  49. data/lib/braintree/exchange_rate_quote_request.rb +3 -3
  50. data/lib/braintree/exchange_rate_quote_response.rb +3 -3
  51. data/lib/braintree/facilitated_details.rb +1 -1
  52. data/lib/braintree/facilitator_details.rb +1 -1
  53. data/lib/braintree/google_pay_card.rb +3 -3
  54. data/lib/braintree/granted_payment_instrument_update.rb +1 -1
  55. data/lib/braintree/graphql_client.rb +1 -1
  56. data/lib/braintree/http.rb +5 -5
  57. data/lib/braintree/local_payment_completed.rb +2 -2
  58. data/lib/braintree/local_payment_expired.rb +2 -2
  59. data/lib/braintree/local_payment_funded.rb +2 -2
  60. data/lib/braintree/local_payment_reversed.rb +2 -2
  61. data/lib/braintree/merchant.rb +3 -3
  62. data/lib/braintree/merchant_account.rb +2 -2
  63. data/lib/braintree/merchant_account_gateway.rb +9 -9
  64. data/lib/braintree/meta_checkout_card.rb +89 -0
  65. data/lib/braintree/meta_checkout_token.rb +88 -0
  66. data/lib/braintree/modification.rb +3 -3
  67. data/lib/braintree/oauth_credentials.rb +3 -3
  68. data/lib/braintree/paginated_collection.rb +2 -2
  69. data/lib/braintree/paginated_result.rb +1 -1
  70. data/lib/braintree/payment_instrument_type.rb +2 -0
  71. data/lib/braintree/payment_method_customer_data_updated_metadata.rb +2 -2
  72. data/lib/braintree/payment_method_gateway.rb +23 -10
  73. data/lib/braintree/payment_method_nonce.rb +4 -4
  74. data/lib/braintree/payment_method_nonce_details.rb +1 -1
  75. data/lib/braintree/payment_method_nonce_details_payer_info.rb +1 -1
  76. data/lib/braintree/payment_method_nonce_gateway.rb +1 -1
  77. data/lib/braintree/paypal_account.rb +1 -2
  78. data/lib/braintree/paypal_account_gateway.rb +5 -5
  79. data/lib/braintree/plan.rb +1 -1
  80. data/lib/braintree/plan_gateway.rb +2 -2
  81. data/lib/braintree/resource_collection.rb +2 -2
  82. data/lib/braintree/revoked_payment_method_metadata.rb +1 -1
  83. data/lib/braintree/risk_data.rb +1 -1
  84. data/lib/braintree/samsung_pay_card.rb +5 -5
  85. data/lib/braintree/sepa_direct_debit_account.rb +2 -2
  86. data/lib/braintree/sepa_direct_debit_account_nonce_details.rb +1 -1
  87. data/lib/braintree/settlement_batch_summary_gateway.rb +1 -1
  88. data/lib/braintree/sha256_digest.rb +1 -1
  89. data/lib/braintree/subscription/status_details.rb +1 -1
  90. data/lib/braintree/subscription.rb +2 -2
  91. data/lib/braintree/subscription_gateway.rb +6 -6
  92. data/lib/braintree/subscription_search.rb +1 -1
  93. data/lib/braintree/successful_result.rb +2 -2
  94. data/lib/braintree/test/credit_card.rb +7 -10
  95. data/lib/braintree/test/merchant_account.rb +1 -1
  96. data/lib/braintree/test/nonce.rb +4 -0
  97. data/lib/braintree/test/transaction_amounts.rb +2 -3
  98. data/lib/braintree/test/venmo_sdk.rb +2 -0
  99. data/lib/braintree/testing_gateway.rb +1 -1
  100. data/lib/braintree/three_d_secure_info.rb +1 -1
  101. data/lib/braintree/transaction/address_details.rb +2 -1
  102. data/lib/braintree/transaction/credit_card_details.rb +4 -1
  103. data/lib/braintree/transaction/customer_details.rb +1 -1
  104. data/lib/braintree/transaction/disbursement_details.rb +1 -1
  105. data/lib/braintree/transaction/local_payment_details.rb +2 -0
  106. data/lib/braintree/transaction/meta_checkout_card_details.rb +52 -0
  107. data/lib/braintree/transaction/meta_checkout_token_details.rb +54 -0
  108. data/lib/braintree/transaction/package_details.rb +16 -0
  109. data/lib/braintree/transaction/samsung_pay_card_details.rb +1 -1
  110. data/lib/braintree/transaction/sepa_direct_debit_account_details.rb +1 -1
  111. data/lib/braintree/transaction/status_details.rb +1 -1
  112. data/lib/braintree/transaction/subscription_details.rb +1 -1
  113. data/lib/braintree/transaction/us_bank_account_details.rb +1 -1
  114. data/lib/braintree/transaction/visa_checkout_card_details.rb +1 -1
  115. data/lib/braintree/transaction.rb +37 -20
  116. data/lib/braintree/transaction_gateway.rb +44 -15
  117. data/lib/braintree/transaction_line_item.rb +13 -10
  118. data/lib/braintree/transaction_line_item_gateway.rb +1 -1
  119. data/lib/braintree/transaction_review.rb +1 -1
  120. data/lib/braintree/transaction_search.rb +7 -6
  121. data/lib/braintree/unknown_payment_method.rb +1 -1
  122. data/lib/braintree/us_bank_account.rb +2 -2
  123. data/lib/braintree/us_bank_account_verification.rb +23 -15
  124. data/lib/braintree/us_bank_account_verification_search.rb +1 -1
  125. data/lib/braintree/util.rb +3 -3
  126. data/lib/braintree/validation_error.rb +1 -1
  127. data/lib/braintree/validation_error_collection.rb +3 -3
  128. data/lib/braintree/venmo_account.rb +3 -3
  129. data/lib/braintree/venmo_profile_data.rb +6 -4
  130. data/lib/braintree/version.rb +1 -1
  131. data/lib/braintree/visa_checkout_card.rb +7 -7
  132. data/lib/braintree/webhook_notification.rb +3 -2
  133. data/lib/braintree/webhook_notification_gateway.rb +4 -4
  134. data/lib/braintree/webhook_testing.rb +1 -1
  135. data/lib/braintree/webhook_testing_gateway.rb +18 -1
  136. data/lib/braintree/xml/generator.rb +1 -1
  137. data/lib/braintree/xml/libxml.rb +1 -1
  138. data/lib/braintree/xml/parser.rb +3 -3
  139. data/lib/braintree/xml/rexml.rb +2 -2
  140. data/lib/braintree/xml.rb +1 -1
  141. data/lib/braintree.rb +5 -1
  142. data/spec/integration/braintree/add_on_spec.rb +9 -9
  143. data/spec/integration/braintree/address_spec.rb +69 -69
  144. data/spec/integration/braintree/advanced_search_spec.rb +45 -45
  145. data/spec/integration/braintree/apple_pay_spec.rb +8 -8
  146. data/spec/integration/braintree/client_api/client_token_spec.rb +15 -15
  147. data/spec/integration/braintree/client_api/spec_helper.rb +2 -2
  148. data/spec/integration/braintree/credit_card_spec.rb +227 -228
  149. data/spec/integration/braintree/credit_card_verification_search_spec.rb +16 -16
  150. data/spec/integration/braintree/credit_card_verification_spec.rb +98 -53
  151. data/spec/integration/braintree/customer_search_spec.rb +20 -20
  152. data/spec/integration/braintree/customer_spec.rb +317 -317
  153. data/spec/integration/braintree/disbursement_spec.rb +2 -2
  154. data/spec/integration/braintree/discount_spec.rb +9 -9
  155. data/spec/integration/braintree/dispute_search_spec.rb +0 -1
  156. data/spec/integration/braintree/dispute_spec.rb +87 -87
  157. data/spec/integration/braintree/document_upload_spec.rb +17 -17
  158. data/spec/integration/braintree/error_codes_spec.rb +2 -2
  159. data/spec/integration/braintree/http_spec.rb +28 -28
  160. data/spec/integration/braintree/merchant_account_spec.rb +127 -127
  161. data/spec/integration/braintree/merchant_spec.rb +103 -103
  162. data/spec/integration/braintree/oauth_spec.rb +61 -61
  163. data/spec/integration/braintree/package_tracking_spec.rb +111 -0
  164. data/spec/integration/braintree/payment_method_nonce_spec.rb +89 -69
  165. data/spec/integration/braintree/payment_method_spec.rb +391 -391
  166. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +150 -78
  167. data/spec/integration/braintree/paypal_account_spec.rb +38 -38
  168. data/spec/integration/braintree/plan_spec.rb +15 -15
  169. data/spec/integration/braintree/samsung_pay_card_spec.rb +65 -65
  170. data/spec/integration/braintree/sepa_direct_debit_account_spec.rb +51 -51
  171. data/spec/integration/braintree/settlement_batch_summary_spec.rb +11 -11
  172. data/spec/integration/braintree/subscription_spec.rb +364 -364
  173. data/spec/integration/braintree/test/transaction_amounts_spec.rb +2 -2
  174. data/spec/integration/braintree/test_transaction_spec.rb +19 -19
  175. data/spec/integration/braintree/transaction_line_item_spec.rb +12 -6
  176. data/spec/integration/braintree/transaction_search_spec.rb +225 -165
  177. data/spec/integration/braintree/transaction_spec.rb +1606 -1230
  178. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +32 -32
  179. data/spec/integration/braintree/us_bank_account_spec.rb +30 -30
  180. data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +18 -18
  181. data/spec/integration/braintree/us_bank_account_verification_spec.rb +33 -33
  182. data/spec/integration/braintree/visa_checkout_card_spec.rb +57 -57
  183. data/spec/spec_helper.rb +9 -8
  184. data/spec/unit/braintree/address_spec.rb +8 -8
  185. data/spec/unit/braintree/base_module_spec.rb +4 -4
  186. data/spec/unit/braintree/client_token_spec.rb +2 -2
  187. data/spec/unit/braintree/configuration_spec.rb +57 -57
  188. data/spec/unit/braintree/credentials_parser_spec.rb +6 -6
  189. data/spec/unit/braintree/credit_card_spec.rb +31 -29
  190. data/spec/unit/braintree/credit_card_verification_gateway_spec.rb +33 -28
  191. data/spec/unit/braintree/credit_card_verification_search_spec.rb +9 -9
  192. data/spec/unit/braintree/credit_card_verification_spec.rb +17 -17
  193. data/spec/unit/braintree/customer_spec.rb +41 -40
  194. data/spec/unit/braintree/digest_spec.rb +5 -5
  195. data/spec/unit/braintree/disbursement_spec.rb +11 -11
  196. data/spec/unit/braintree/dispute_search_spec.rb +2 -2
  197. data/spec/unit/braintree/dispute_spec.rb +56 -56
  198. data/spec/unit/braintree/document_upload_spec.rb +8 -8
  199. data/spec/unit/braintree/enriched_customer_data_spec.rb +11 -2
  200. data/spec/unit/braintree/error_result_spec.rb +5 -5
  201. data/spec/unit/braintree/errors_spec.rb +9 -9
  202. data/spec/unit/braintree/http_spec.rb +9 -9
  203. data/spec/unit/braintree/local_payment_completed_spec.rb +11 -11
  204. data/spec/unit/braintree/local_payment_expired_spec.rb +2 -2
  205. data/spec/unit/braintree/local_payment_funded_spec.rb +6 -6
  206. data/spec/unit/braintree/merchant_account_spec.rb +4 -4
  207. data/spec/unit/braintree/meta_checkout_card_details_spec.rb +60 -0
  208. data/spec/unit/braintree/meta_checkout_card_spec.rb +60 -0
  209. data/spec/unit/braintree/meta_checkout_token_details_spec.rb +63 -0
  210. data/spec/unit/braintree/meta_checkout_token_spec.rb +63 -0
  211. data/spec/unit/braintree/modification_spec.rb +1 -1
  212. data/spec/unit/braintree/package_tracking_spec.rb +74 -0
  213. data/spec/unit/braintree/payment_method_customer_data_updated_metadata_spec.rb +6 -6
  214. data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +7 -7
  215. data/spec/unit/braintree/payment_method_nonce_details_spec.rb +14 -14
  216. data/spec/unit/braintree/payment_method_spec.rb +19 -19
  217. data/spec/unit/braintree/paypal_account_spec.rb +4 -4
  218. data/spec/unit/braintree/resource_collection_spec.rb +7 -7
  219. data/spec/unit/braintree/sepa_debit_account_nonce_details_spec.rb +1 -1
  220. data/spec/unit/braintree/sha256_digest_spec.rb +1 -1
  221. data/spec/unit/braintree/signature_service_spec.rb +2 -2
  222. data/spec/unit/braintree/subscription_search_spec.rb +17 -17
  223. data/spec/unit/braintree/subscription_spec.rb +8 -8
  224. data/spec/unit/braintree/successful_result_spec.rb +5 -5
  225. data/spec/unit/braintree/three_d_secure_info_spec.rb +20 -20
  226. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +5 -5
  227. data/spec/unit/braintree/transaction/customer_details_spec.rb +1 -1
  228. data/spec/unit/braintree/transaction/deposit_details_spec.rb +2 -2
  229. data/spec/unit/braintree/transaction/local_payment_details_spec.rb +30 -0
  230. data/spec/unit/braintree/transaction_gateway_spec.rb +41 -9
  231. data/spec/unit/braintree/transaction_search_spec.rb +2 -2
  232. data/spec/unit/braintree/transaction_spec.rb +101 -93
  233. data/spec/unit/braintree/unknown_payment_method_spec.rb +4 -4
  234. data/spec/unit/braintree/us_bank_account_spec.rb +2 -2
  235. data/spec/unit/braintree/us_bank_account_verification_search_spec.rb +7 -7
  236. data/spec/unit/braintree/us_bank_account_verification_spec.rb +12 -7
  237. data/spec/unit/braintree/util_spec.rb +27 -27
  238. data/spec/unit/braintree/validation_error_collection_spec.rb +34 -34
  239. data/spec/unit/braintree/validation_error_spec.rb +4 -4
  240. data/spec/unit/braintree/venmo_profile_data_spec.rb +16 -5
  241. data/spec/unit/braintree/webhook_notification_spec.rb +206 -191
  242. data/spec/unit/braintree/xml/libxml_spec.rb +5 -5
  243. data/spec/unit/braintree/xml/parser_spec.rb +8 -8
  244. data/spec/unit/braintree/xml/rexml_spec.rb +5 -5
  245. data/spec/unit/braintree/xml_spec.rb +17 -17
  246. data/spec/unit/braintree_spec.rb +2 -2
  247. metadata +14 -2
@@ -15,22 +15,22 @@ describe Braintree::MerchantGateway do
15
15
  :payment_methods => ["credit_card", "paypal"],
16
16
  )
17
17
 
18
- result.should be_success
18
+ expect(result).to be_success
19
19
 
20
20
  merchant = result.merchant
21
- merchant.id.should_not be_nil
22
- merchant.email.should == "name@email.com"
23
- merchant.company_name.should == "name@email.com"
24
- merchant.country_code_alpha3.should == "USA"
25
- merchant.country_code_alpha2.should == "US"
26
- merchant.country_code_numeric.should == "840"
27
- merchant.country_name.should == "United States of America"
21
+ expect(merchant.id).not_to be_nil
22
+ expect(merchant.email).to eq("name@email.com")
23
+ expect(merchant.company_name).to eq("name@email.com")
24
+ expect(merchant.country_code_alpha3).to eq("USA")
25
+ expect(merchant.country_code_alpha2).to eq("US")
26
+ expect(merchant.country_code_numeric).to eq("840")
27
+ expect(merchant.country_name).to eq("United States of America")
28
28
 
29
29
  credentials = result.credentials
30
- credentials.access_token.should_not be_nil
31
- credentials.refresh_token.should_not be_nil
32
- credentials.expires_at.should_not be_nil
33
- credentials.token_type.should == "bearer"
30
+ expect(credentials.access_token).not_to be_nil
31
+ expect(credentials.refresh_token).not_to be_nil
32
+ expect(credentials.expires_at).not_to be_nil
33
+ expect(credentials.token_type).to eq("bearer")
34
34
  end
35
35
 
36
36
  it "gives an error when using invalid payment_methods" do
@@ -46,10 +46,10 @@ describe Braintree::MerchantGateway do
46
46
  :payment_methods => ["fake_money"],
47
47
  )
48
48
 
49
- result.should_not be_success
49
+ expect(result).not_to be_success
50
50
  errors = result.errors.for(:merchant).on(:payment_methods)
51
51
 
52
- errors[0].code.should == Braintree::ErrorCodes::Merchant::PaymentMethodsAreInvalid
52
+ expect(errors[0].code).to eq(Braintree::ErrorCodes::Merchant::PaymentMethodsAreInvalid)
53
53
  end
54
54
 
55
55
  context "credentials" do
@@ -74,7 +74,7 @@ describe Braintree::MerchantGateway do
74
74
  :payment_methods => ["credit_card", "paypal"],
75
75
  )
76
76
 
77
- result.should be_success
77
+ expect(result).to be_success
78
78
  end
79
79
  end
80
80
 
@@ -96,30 +96,30 @@ describe Braintree::MerchantGateway do
96
96
  )
97
97
 
98
98
  merchant = result.merchant
99
- merchant.id.should_not be_nil
100
- merchant.email.should == "name@email.com"
101
- merchant.company_name.should == "name@email.com"
102
- merchant.country_code_alpha3.should == "USA"
103
- merchant.country_code_alpha2.should == "US"
104
- merchant.country_code_numeric.should == "840"
105
- merchant.country_name.should == "United States of America"
99
+ expect(merchant.id).not_to be_nil
100
+ expect(merchant.email).to eq("name@email.com")
101
+ expect(merchant.company_name).to eq("name@email.com")
102
+ expect(merchant.country_code_alpha3).to eq("USA")
103
+ expect(merchant.country_code_alpha2).to eq("US")
104
+ expect(merchant.country_code_numeric).to eq("840")
105
+ expect(merchant.country_name).to eq("United States of America")
106
106
 
107
107
  credentials = result.credentials
108
- credentials.access_token.should_not be_nil
109
- credentials.refresh_token.should_not be_nil
110
- credentials.expires_at.should_not be_nil
111
- credentials.token_type.should == "bearer"
108
+ expect(credentials.access_token).not_to be_nil
109
+ expect(credentials.refresh_token).not_to be_nil
110
+ expect(credentials.expires_at).not_to be_nil
111
+ expect(credentials.token_type).to eq("bearer")
112
112
 
113
113
  merchant_accounts = merchant.merchant_accounts
114
- merchant_accounts.count.should == 2
114
+ expect(merchant_accounts.count).to eq(2)
115
115
 
116
116
  merchant_account = merchant_accounts.detect { |ma| ma.id == "USD" }
117
- merchant_account.default.should == true
118
- merchant_account.currency_iso_code.should == "USD"
117
+ expect(merchant_account.default).to eq(true)
118
+ expect(merchant_account.currency_iso_code).to eq("USD")
119
119
 
120
120
  merchant_account = merchant_accounts.detect { |ma| ma.id == "GBP" }
121
- merchant_account.default.should == false
122
- merchant_account.currency_iso_code.should == "GBP"
121
+ expect(merchant_account.default).to eq(false)
122
+ expect(merchant_account.currency_iso_code).to eq("GBP")
123
123
  end
124
124
 
125
125
  it "creates an EU multi currency merchant for paypal and credit_card" do
@@ -131,30 +131,30 @@ describe Braintree::MerchantGateway do
131
131
  )
132
132
 
133
133
  merchant = result.merchant
134
- merchant.id.should_not be_nil
135
- merchant.email.should == "name@email.com"
136
- merchant.company_name.should == "name@email.com"
137
- merchant.country_code_alpha3.should == "GBR"
138
- merchant.country_code_alpha2.should == "GB"
139
- merchant.country_code_numeric.should == "826"
140
- merchant.country_name.should == "United Kingdom"
134
+ expect(merchant.id).not_to be_nil
135
+ expect(merchant.email).to eq("name@email.com")
136
+ expect(merchant.company_name).to eq("name@email.com")
137
+ expect(merchant.country_code_alpha3).to eq("GBR")
138
+ expect(merchant.country_code_alpha2).to eq("GB")
139
+ expect(merchant.country_code_numeric).to eq("826")
140
+ expect(merchant.country_name).to eq("United Kingdom")
141
141
 
142
142
  credentials = result.credentials
143
- credentials.access_token.should_not be_nil
144
- credentials.refresh_token.should_not be_nil
145
- credentials.expires_at.should_not be_nil
146
- credentials.token_type.should == "bearer"
143
+ expect(credentials.access_token).not_to be_nil
144
+ expect(credentials.refresh_token).not_to be_nil
145
+ expect(credentials.expires_at).not_to be_nil
146
+ expect(credentials.token_type).to eq("bearer")
147
147
 
148
148
  merchant_accounts = merchant.merchant_accounts
149
- merchant_accounts.count.should == 2
149
+ expect(merchant_accounts.count).to eq(2)
150
150
 
151
151
  merchant_account = merchant_accounts.detect { |ma| ma.id == "GBP" }
152
- merchant_account.default.should == true
153
- merchant_account.currency_iso_code.should == "GBP"
152
+ expect(merchant_account.default).to eq(true)
153
+ expect(merchant_account.currency_iso_code).to eq("GBP")
154
154
 
155
155
  merchant_account = merchant_accounts.detect { |ma| ma.id == "USD" }
156
- merchant_account.default.should == false
157
- merchant_account.currency_iso_code.should == "USD"
156
+ expect(merchant_account.default).to eq(false)
157
+ expect(merchant_account.currency_iso_code).to eq("USD")
158
158
  end
159
159
 
160
160
 
@@ -170,33 +170,33 @@ describe Braintree::MerchantGateway do
170
170
  },
171
171
  )
172
172
 
173
- result.should be_success
173
+ expect(result).to be_success
174
174
 
175
175
  merchant = result.merchant
176
- merchant.id.should_not be_nil
177
- merchant.email.should == "name@email.com"
178
- merchant.company_name.should == "name@email.com"
179
- merchant.country_code_alpha3.should == "USA"
180
- merchant.country_code_alpha2.should == "US"
181
- merchant.country_code_numeric.should == "840"
182
- merchant.country_name.should == "United States of America"
176
+ expect(merchant.id).not_to be_nil
177
+ expect(merchant.email).to eq("name@email.com")
178
+ expect(merchant.company_name).to eq("name@email.com")
179
+ expect(merchant.country_code_alpha3).to eq("USA")
180
+ expect(merchant.country_code_alpha2).to eq("US")
181
+ expect(merchant.country_code_numeric).to eq("840")
182
+ expect(merchant.country_name).to eq("United States of America")
183
183
 
184
184
  credentials = result.credentials
185
- credentials.access_token.should_not be_nil
186
- credentials.refresh_token.should_not be_nil
187
- credentials.expires_at.should_not be_nil
188
- credentials.token_type.should == "bearer"
185
+ expect(credentials.access_token).not_to be_nil
186
+ expect(credentials.refresh_token).not_to be_nil
187
+ expect(credentials.expires_at).not_to be_nil
188
+ expect(credentials.token_type).to eq("bearer")
189
189
 
190
190
  merchant_accounts = merchant.merchant_accounts
191
- merchant_accounts.count.should == 2
191
+ expect(merchant_accounts.count).to eq(2)
192
192
 
193
193
  merchant_account = merchant_accounts.detect { |ma| ma.id == "USD" }
194
- merchant_account.default.should == true
195
- merchant_account.currency_iso_code.should == "USD"
194
+ expect(merchant_account.default).to eq(true)
195
+ expect(merchant_account.currency_iso_code).to eq("USD")
196
196
 
197
197
  merchant_account = merchant_accounts.detect { |ma| ma.id == "GBP" }
198
- merchant_account.default.should == false
199
- merchant_account.currency_iso_code.should == "GBP"
198
+ expect(merchant_account.default).to eq(false)
199
+ expect(merchant_account.currency_iso_code).to eq("GBP")
200
200
  end
201
201
 
202
202
  it "allows creation of non-US merchant if onboarding application is internal" do
@@ -210,29 +210,29 @@ describe Braintree::MerchantGateway do
210
210
  },
211
211
  )
212
212
 
213
- result.should be_success
213
+ expect(result).to be_success
214
214
 
215
215
  merchant = result.merchant
216
- merchant.id.should_not be_nil
217
- merchant.email.should == "name@email.com"
218
- merchant.company_name.should == "name@email.com"
219
- merchant.country_code_alpha3.should == "JPN"
220
- merchant.country_code_alpha2.should == "JP"
221
- merchant.country_code_numeric.should == "392"
222
- merchant.country_name.should == "Japan"
216
+ expect(merchant.id).not_to be_nil
217
+ expect(merchant.email).to eq("name@email.com")
218
+ expect(merchant.company_name).to eq("name@email.com")
219
+ expect(merchant.country_code_alpha3).to eq("JPN")
220
+ expect(merchant.country_code_alpha2).to eq("JP")
221
+ expect(merchant.country_code_numeric).to eq("392")
222
+ expect(merchant.country_name).to eq("Japan")
223
223
 
224
224
  credentials = result.credentials
225
- credentials.access_token.should_not be_nil
226
- credentials.refresh_token.should_not be_nil
227
- credentials.expires_at.should_not be_nil
228
- credentials.token_type.should == "bearer"
225
+ expect(credentials.access_token).not_to be_nil
226
+ expect(credentials.refresh_token).not_to be_nil
227
+ expect(credentials.expires_at).not_to be_nil
228
+ expect(credentials.token_type).to eq("bearer")
229
229
 
230
230
  merchant_accounts = merchant.merchant_accounts
231
- merchant_accounts.count.should == 1
231
+ expect(merchant_accounts.count).to eq(1)
232
232
 
233
233
  merchant_account = merchant_accounts.detect { |ma| ma.id == "JPY" }
234
- merchant_account.default.should == true
235
- merchant_account.currency_iso_code.should == "JPY"
234
+ expect(merchant_account.default).to eq(true)
235
+ expect(merchant_account.currency_iso_code).to eq("JPY")
236
236
  end
237
237
 
238
238
  it "defaults to USD for non-US merchant if onboarding application is internal and country currency not supported" do
@@ -246,29 +246,29 @@ describe Braintree::MerchantGateway do
246
246
  },
247
247
  )
248
248
 
249
- result.should be_success
249
+ expect(result).to be_success
250
250
 
251
251
  merchant = result.merchant
252
- merchant.id.should_not be_nil
253
- merchant.email.should == "name@email.com"
254
- merchant.company_name.should == "name@email.com"
255
- merchant.country_code_alpha3.should == "YEM"
256
- merchant.country_code_alpha2.should == "YE"
257
- merchant.country_code_numeric.should == "887"
258
- merchant.country_name.should == "Yemen"
252
+ expect(merchant.id).not_to be_nil
253
+ expect(merchant.email).to eq("name@email.com")
254
+ expect(merchant.company_name).to eq("name@email.com")
255
+ expect(merchant.country_code_alpha3).to eq("YEM")
256
+ expect(merchant.country_code_alpha2).to eq("YE")
257
+ expect(merchant.country_code_numeric).to eq("887")
258
+ expect(merchant.country_name).to eq("Yemen")
259
259
 
260
260
  credentials = result.credentials
261
- credentials.access_token.should_not be_nil
262
- credentials.refresh_token.should_not be_nil
263
- credentials.expires_at.should_not be_nil
264
- credentials.token_type.should == "bearer"
261
+ expect(credentials.access_token).not_to be_nil
262
+ expect(credentials.refresh_token).not_to be_nil
263
+ expect(credentials.expires_at).not_to be_nil
264
+ expect(credentials.token_type).to eq("bearer")
265
265
 
266
266
  merchant_accounts = merchant.merchant_accounts
267
- merchant_accounts.count.should == 1
267
+ expect(merchant_accounts.count).to eq(1)
268
268
 
269
269
  merchant_account = merchant_accounts.detect { |ma| ma.id == "USD" }
270
- merchant_account.default.should == true
271
- merchant_account.currency_iso_code.should == "USD"
270
+ expect(merchant_account.default).to eq(true)
271
+ expect(merchant_account.currency_iso_code).to eq("USD")
272
272
  end
273
273
 
274
274
  it "returns error if invalid currency is passed" do
@@ -283,10 +283,10 @@ describe Braintree::MerchantGateway do
283
283
  },
284
284
  )
285
285
 
286
- result.should_not be_success
286
+ expect(result).not_to be_success
287
287
  errors = result.errors.for(:merchant).on(:currencies)
288
288
 
289
- errors[0].code.should == Braintree::ErrorCodes::Merchant::CurrenciesAreInvalid
289
+ expect(errors[0].code).to eq(Braintree::ErrorCodes::Merchant::CurrenciesAreInvalid)
290
290
  end
291
291
  end
292
292
  end
@@ -304,16 +304,16 @@ describe Braintree::MerchantGateway do
304
304
 
305
305
  it "succeeds" do
306
306
  result = Braintree::Merchant.provision_raw_apple_pay
307
- result.should be_success
308
- result.supported_networks.should == ["visa", "mastercard", "amex", "discover", "maestro", "elo"]
307
+ expect(result).to be_success
308
+ expect(result.supported_networks).to eq(["visa", "mastercard", "amex", "discover", "maestro", "elo"])
309
309
  end
310
310
 
311
311
  it "is repeatable" do
312
312
  result = Braintree::Merchant.provision_raw_apple_pay
313
- result.should be_success
313
+ expect(result).to be_success
314
314
  result = Braintree::Merchant.provision_raw_apple_pay
315
- result.should be_success
316
- result.supported_networks.should == ["visa", "mastercard", "amex", "discover", "maestro", "elo"]
315
+ expect(result).to be_success
316
+ expect(result.supported_networks).to eq(["visa", "mastercard", "amex", "discover", "maestro", "elo"])
317
317
  end
318
318
  end
319
319
 
@@ -326,8 +326,8 @@ describe Braintree::MerchantGateway do
326
326
 
327
327
  it "returns a validation error" do
328
328
  result = Braintree::Merchant.provision_raw_apple_pay
329
- result.should_not be_success
330
- result.errors.for(:apple_pay).first.code.should == Braintree::ErrorCodes::ApplePay::ApplePayCardsAreNotAccepted
329
+ expect(result).not_to be_success
330
+ expect(result.errors.for(:apple_pay).first.code).to eq(Braintree::ErrorCodes::ApplePay::ApplePayCardsAreNotAccepted)
331
331
  end
332
332
  end
333
333
 
@@ -21,12 +21,12 @@ describe "OAuth" do
21
21
  :scope => "read_write",
22
22
  )
23
23
 
24
- result.should be_success
24
+ expect(result).to be_success
25
25
  credentials = result.credentials
26
- credentials.access_token.should_not be_nil
27
- credentials.refresh_token.should_not be_nil
28
- credentials.expires_at.should_not be_nil
29
- credentials.token_type.should == "bearer"
26
+ expect(credentials.access_token).not_to be_nil
27
+ expect(credentials.refresh_token).not_to be_nil
28
+ expect(credentials.expires_at).not_to be_nil
29
+ expect(credentials.token_type).to eq("bearer")
30
30
  end
31
31
 
32
32
  it "returns validation errors for bad params" do
@@ -35,9 +35,9 @@ describe "OAuth" do
35
35
  :scope => "read_write",
36
36
  )
37
37
 
38
- result.should_not be_success
39
- errors = result.errors.for(:credentials).on(:code)[0].code.should == Braintree::ErrorCodes::OAuth::InvalidGrant
40
- result.message.should =~ /Invalid grant: code not found/
38
+ expect(result).not_to be_success
39
+ errors = expect(result.errors.for(:credentials).on(:code)[0].code).to eq(Braintree::ErrorCodes::OAuth::InvalidGrant)
40
+ expect(result.message).to match(/Invalid grant: code not found/)
41
41
  end
42
42
 
43
43
  it "raises with a helpful error if client_id and client_secret are not set" do
@@ -71,12 +71,12 @@ describe "OAuth" do
71
71
  :scope => "read_write",
72
72
  )
73
73
 
74
- result.should be_success
74
+ expect(result).to be_success
75
75
  credentials = result.credentials
76
- credentials.access_token.should_not be_nil
77
- credentials.refresh_token.should_not be_nil
78
- credentials.expires_at.should_not be_nil
79
- credentials.token_type.should == "bearer"
76
+ expect(credentials.access_token).not_to be_nil
77
+ expect(credentials.refresh_token).not_to be_nil
78
+ expect(credentials.expires_at).not_to be_nil
79
+ expect(credentials.token_type).to eq("bearer")
80
80
  end
81
81
  end
82
82
 
@@ -92,7 +92,7 @@ describe "OAuth" do
92
92
  ).credentials.access_token
93
93
 
94
94
  result = @gateway.oauth.revoke_access_token(access_token)
95
- result.should be_success
95
+ expect(result).to be_success
96
96
 
97
97
  gateway = Braintree::Gateway.new(
98
98
  :access_token => access_token,
@@ -150,49 +150,49 @@ describe "OAuth" do
150
150
  )
151
151
 
152
152
  uri = URI.parse(url)
153
- uri.host.should == Braintree::Configuration.instantiate.server
154
- uri.path.should == "/oauth/connect"
153
+ expect(uri.host).to eq(Braintree::Configuration.instantiate.server)
154
+ expect(uri.path).to eq("/oauth/connect")
155
155
 
156
156
  query = CGI.parse(uri.query)
157
- query["merchant_id"].should == ["integration_merchant_id"]
158
- query["client_id"].should == ["client_id$#{Braintree::Configuration.environment}$integration_client_id"]
159
- query["redirect_uri"].should == ["http://bar.example.com"]
160
- query["scope"].should == ["read_write"]
161
- query["state"].should == ["baz_state"]
162
- query["landing_page"].should == ["signup"]
163
- query["login_only"].should == ["false"]
164
-
165
- query["user[country]"].should == ["USA"]
166
- query["business[name]"].should == ["14 Ladders"]
167
-
168
- query["user[email]"].should == ["foo@example.com"]
169
- query["user[first_name]"].should == ["Bob"]
170
- query["user[last_name]"].should == ["Jones"]
171
- query["user[phone]"].should == ["555-555-5555"]
172
- query["user[dob_year]"].should == ["1970"]
173
- query["user[dob_month]"].should == ["01"]
174
- query["user[dob_day]"].should == ["01"]
175
- query["user[street_address]"].should == ["222 W Merchandise Mart"]
176
- query["user[locality]"].should == ["Chicago"]
177
- query["user[region]"].should == ["IL"]
178
- query["user[postal_code]"].should == ["60606"]
179
-
180
- query["business[name]"].should == ["14 Ladders"]
181
- query["business[registered_as]"].should == ["14.0 Ladders"]
182
- query["business[industry]"].should == ["Ladders"]
183
- query["business[description]"].should == ["We sell the best ladders"]
184
- query["business[street_address]"].should == ["111 N Canal"]
185
- query["business[locality]"].should == ["Chicago"]
186
- query["business[region]"].should == ["IL"]
187
- query["business[postal_code]"].should == ["60606"]
188
- query["business[country]"].should == ["USA"]
189
- query["business[annual_volume_amount]"].should == ["1000000"]
190
- query["business[average_transaction_amount]"].should == ["100"]
191
- query["business[maximum_transaction_amount]"].should == ["10000"]
192
- query["business[ship_physical_goods]"].should == ["true"]
193
- query["business[fulfillment_completed_in]"].should == ["7"]
194
- query["business[currency]"].should == ["USD"]
195
- query["business[website]"].should == ["http://example.com"]
157
+ expect(query["merchant_id"]).to eq(["integration_merchant_id"])
158
+ expect(query["client_id"]).to eq(["client_id$#{Braintree::Configuration.environment}$integration_client_id"])
159
+ expect(query["redirect_uri"]).to eq(["http://bar.example.com"])
160
+ expect(query["scope"]).to eq(["read_write"])
161
+ expect(query["state"]).to eq(["baz_state"])
162
+ expect(query["landing_page"]).to eq(["signup"])
163
+ expect(query["login_only"]).to eq(["false"])
164
+
165
+ expect(query["user[country]"]).to eq(["USA"])
166
+ expect(query["business[name]"]).to eq(["14 Ladders"])
167
+
168
+ expect(query["user[email]"]).to eq(["foo@example.com"])
169
+ expect(query["user[first_name]"]).to eq(["Bob"])
170
+ expect(query["user[last_name]"]).to eq(["Jones"])
171
+ expect(query["user[phone]"]).to eq(["555-555-5555"])
172
+ expect(query["user[dob_year]"]).to eq(["1970"])
173
+ expect(query["user[dob_month]"]).to eq(["01"])
174
+ expect(query["user[dob_day]"]).to eq(["01"])
175
+ expect(query["user[street_address]"]).to eq(["222 W Merchandise Mart"])
176
+ expect(query["user[locality]"]).to eq(["Chicago"])
177
+ expect(query["user[region]"]).to eq(["IL"])
178
+ expect(query["user[postal_code]"]).to eq(["60606"])
179
+
180
+ expect(query["business[name]"]).to eq(["14 Ladders"])
181
+ expect(query["business[registered_as]"]).to eq(["14.0 Ladders"])
182
+ expect(query["business[industry]"]).to eq(["Ladders"])
183
+ expect(query["business[description]"]).to eq(["We sell the best ladders"])
184
+ expect(query["business[street_address]"]).to eq(["111 N Canal"])
185
+ expect(query["business[locality]"]).to eq(["Chicago"])
186
+ expect(query["business[region]"]).to eq(["IL"])
187
+ expect(query["business[postal_code]"]).to eq(["60606"])
188
+ expect(query["business[country]"]).to eq(["USA"])
189
+ expect(query["business[annual_volume_amount]"]).to eq(["1000000"])
190
+ expect(query["business[average_transaction_amount]"]).to eq(["100"])
191
+ expect(query["business[maximum_transaction_amount]"]).to eq(["10000"])
192
+ expect(query["business[ship_physical_goods]"]).to eq(["true"])
193
+ expect(query["business[fulfillment_completed_in]"]).to eq(["7"])
194
+ expect(query["business[currency]"]).to eq(["USD"])
195
+ expect(query["business[website]"]).to eq(["http://example.com"])
196
196
  end
197
197
 
198
198
  it "builds the query string with multiple payment_methods" do
@@ -205,13 +205,13 @@ describe "OAuth" do
205
205
  )
206
206
 
207
207
  uri = URI.parse(url)
208
- uri.host.should == Braintree::Configuration.instantiate.server
209
- uri.path.should == "/oauth/connect"
208
+ expect(uri.host).to eq(Braintree::Configuration.instantiate.server)
209
+ expect(uri.path).to eq("/oauth/connect")
210
210
 
211
211
  query = CGI.parse(CGI.unescape(uri.query))
212
- query["payment_methods[]"].length.should == 2
213
- query["payment_methods[]"].should include("paypal")
214
- query["payment_methods[]"].should include("credit_card")
212
+ expect(query["payment_methods[]"].length).to eq(2)
213
+ expect(query["payment_methods[]"]).to include("paypal")
214
+ expect(query["payment_methods[]"]).to include("credit_card")
215
215
  end
216
216
 
217
217
  it "doesn't mutate the options" do
@@ -219,7 +219,7 @@ describe "OAuth" do
219
219
 
220
220
  @gateway.oauth.connect_url(params)
221
221
 
222
- params.should == {:payment_methods => ["credit_card"]}
222
+ expect(params).to eq({:payment_methods => ["credit_card"]})
223
223
  end
224
224
  end
225
225
  end
@@ -0,0 +1,111 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::Transaction do
4
+ describe "self.package_tracking" do
5
+ it "returns validation error message from gateway api" do
6
+ # Create Transaction
7
+ result = Braintree::Transaction.sale(
8
+ :amount => "100",
9
+ :options => {
10
+ :submit_for_settlement => true
11
+ },
12
+ :paypal_account => {
13
+ :payer_id => "fake-payer-id",
14
+ :payment_id => "fake-payment-id",
15
+ },
16
+ )
17
+
18
+ expect(result.success?).to eq(true)
19
+
20
+ # Carrier name is required
21
+ invalidResult = Braintree::Transaction.package_tracking(result.transaction.id, {tracking_number: "tracking_number_1"})
22
+ expect(invalidResult.message).to eq("Carrier name is required.")
23
+
24
+ # Tracking number is required
25
+ invalidResult = Braintree::Transaction.package_tracking(result.transaction.id, {carrier: "UPS"})
26
+ expect(invalidResult.message).to eq("Tracking number is required.")
27
+ end
28
+
29
+ it "successfully calls gateway API and adds package tracking information" do
30
+
31
+ # Create Transaction
32
+ result = Braintree::Transaction.sale(
33
+ :amount => "100",
34
+ :options => {
35
+ :submit_for_settlement => true
36
+ },
37
+ :paypal_account => {
38
+ :payer_id => "fake-payer-id",
39
+ :payment_id => "fake-payment-id",
40
+ },
41
+ )
42
+
43
+ expect(result.success?).to eq(true)
44
+
45
+ # Create First Package with 2 products
46
+ firstPackageResult = Braintree::Transaction.package_tracking(
47
+ result.transaction.id,
48
+ {
49
+ carrier: "UPS",
50
+ notify_payer: true,
51
+ tracking_number: "tracking_number_1",
52
+ line_items: [
53
+ {
54
+ product_code: "ABC 01",
55
+ name: "Best Product Ever",
56
+ quantity: "1",
57
+ description: "Best Description Ever",
58
+ upc_code: "51234567890",
59
+ upc_type: "UPC-A",
60
+ image_url: "https://example.com/image.png",
61
+ },
62
+ {
63
+ product_code: "ABC 02",
64
+ name: "Best Product Ever",
65
+ quantity: "1",
66
+ description: "Best Description Ever",
67
+ upc_code: "51234567891",
68
+ upc_type: "UPC-A",
69
+ image_url: "https://example.com/image.png",
70
+ },
71
+ ],
72
+ },
73
+ )
74
+
75
+ # First package is shipped by the merchant
76
+ expect(firstPackageResult.success?).to eq(true)
77
+ expect(firstPackageResult.transaction.packages[0].id).not_to be_nil
78
+ expect(firstPackageResult.transaction.packages[0].carrier).to eq("UPS")
79
+ expect(firstPackageResult.transaction.packages[0].tracking_number).to eq("tracking_number_1")
80
+
81
+
82
+ # Create second package with 1 product
83
+ secondPackageResult = Braintree::Transaction.package_tracking(
84
+ result.transaction.id,
85
+ {
86
+ carrier: "FEDEX",
87
+ notify_payer: true,
88
+ tracking_number: "tracking_number_2",
89
+ line_items: [
90
+ {
91
+ product_code: "ABC 03",
92
+ name: "Best Product Ever",
93
+ quantity: "1",
94
+ description: "Best Description Ever",
95
+ },
96
+ ]
97
+ },
98
+ )
99
+
100
+ # Second package is shipped by the merchant
101
+ expect(secondPackageResult.success?).to eq(true)
102
+ expect(secondPackageResult.transaction.packages[1].id).not_to be_nil
103
+ expect(secondPackageResult.transaction.packages[1].carrier).to eq("FEDEX")
104
+ expect(secondPackageResult.transaction.packages[1].tracking_number).to eq("tracking_number_2")
105
+
106
+ # Find transaction gives both packages
107
+ findTransaction = Braintree::Transaction.find(result.transaction.id)
108
+ expect(findTransaction.packages.length).to eq(2)
109
+ end
110
+ end
111
+ end