braintree 2.98.0 → 4.23.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 (308) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/braintree.gemspec +7 -4
  4. data/lib/braintree/account_updater_daily_report.rb +4 -4
  5. data/lib/braintree/ach_mandate.rb +1 -1
  6. data/lib/braintree/add_on_gateway.rb +1 -1
  7. data/lib/braintree/address.rb +7 -27
  8. data/lib/braintree/address_gateway.rb +8 -7
  9. data/lib/braintree/advanced_search.rb +11 -12
  10. data/lib/braintree/apple_pay.rb +4 -4
  11. data/lib/braintree/apple_pay_card.rb +18 -4
  12. data/lib/braintree/apple_pay_options.rb +4 -4
  13. data/lib/braintree/authorization_adjustment.rb +4 -4
  14. data/lib/braintree/base_module.rb +11 -1
  15. data/lib/braintree/bin_data.rb +10 -3
  16. data/lib/braintree/client_token.rb +1 -1
  17. data/lib/braintree/client_token_gateway.rb +4 -3
  18. data/lib/braintree/configuration.rb +35 -35
  19. data/lib/braintree/connected_merchant_paypal_status_changed.rb +2 -2
  20. data/lib/braintree/connected_merchant_status_transitioned.rb +2 -2
  21. data/lib/braintree/credit_card.rb +40 -86
  22. data/lib/braintree/credit_card_gateway.rb +58 -44
  23. data/lib/braintree/credit_card_verification.rb +39 -20
  24. data/lib/braintree/credit_card_verification_gateway.rb +35 -5
  25. data/lib/braintree/credit_card_verification_search.rb +2 -2
  26. data/lib/braintree/customer.rb +23 -88
  27. data/lib/braintree/customer_gateway.rb +17 -32
  28. data/lib/braintree/customer_search.rb +2 -2
  29. data/lib/braintree/descriptor.rb +1 -1
  30. data/lib/braintree/digest.rb +1 -1
  31. data/lib/braintree/disbursement.rb +7 -7
  32. data/lib/braintree/discount_gateway.rb +1 -1
  33. data/lib/braintree/dispute/evidence.rb +1 -1
  34. data/lib/braintree/{transaction/coinbase_details.rb → dispute/paypal_message.rb} +5 -6
  35. data/lib/braintree/dispute/{history_event.rb → status_history.rb} +3 -1
  36. data/lib/braintree/dispute/transaction.rb +3 -1
  37. data/lib/braintree/dispute/transaction_details.rb +1 -1
  38. data/lib/braintree/dispute.rb +47 -6
  39. data/lib/braintree/dispute_gateway.rb +5 -10
  40. data/lib/braintree/dispute_search.rb +8 -4
  41. data/lib/braintree/document_upload.rb +3 -3
  42. data/lib/braintree/document_upload_gateway.rb +3 -3
  43. data/lib/braintree/enriched_customer_data.rb +21 -0
  44. data/lib/braintree/error_codes.rb +217 -175
  45. data/lib/braintree/error_result.rb +2 -3
  46. data/lib/braintree/errors.rb +3 -3
  47. data/lib/braintree/exceptions.rb +6 -5
  48. data/lib/braintree/exchange_rate.rb +13 -0
  49. data/lib/braintree/exchange_rate_quote.rb +24 -0
  50. data/lib/braintree/exchange_rate_quote_gateway.rb +35 -0
  51. data/lib/braintree/exchange_rate_quote_input.rb +21 -0
  52. data/lib/braintree/exchange_rate_quote_request.rb +18 -0
  53. data/lib/braintree/exchange_rate_quote_response.rb +18 -0
  54. data/lib/braintree/facilitated_details.rb +1 -1
  55. data/lib/braintree/facilitator_details.rb +1 -1
  56. data/lib/braintree/gateway.rb +6 -12
  57. data/lib/braintree/{android_pay_card.rb → google_pay_card.rb} +18 -5
  58. data/lib/braintree/granted_payment_instrument_update.rb +2 -2
  59. data/lib/braintree/graphql_client.rb +14 -8
  60. data/lib/braintree/http.rb +9 -10
  61. data/lib/braintree/local_payment_completed/blik_alias.rb +23 -0
  62. data/lib/braintree/local_payment_completed.rb +10 -5
  63. data/lib/braintree/local_payment_expired.rb +21 -0
  64. data/lib/braintree/local_payment_funded.rb +22 -0
  65. data/lib/braintree/local_payment_reversed.rb +19 -0
  66. data/lib/braintree/merchant.rb +4 -4
  67. data/lib/braintree/merchant_account.rb +3 -3
  68. data/lib/braintree/merchant_account_gateway.rb +10 -8
  69. data/lib/braintree/merchant_gateway.rb +1 -1
  70. data/lib/braintree/meta_checkout_card.rb +89 -0
  71. data/lib/braintree/meta_checkout_token.rb +88 -0
  72. data/lib/braintree/modification.rb +4 -4
  73. data/lib/braintree/oauth_credentials.rb +4 -4
  74. data/lib/braintree/oauth_gateway.rb +5 -5
  75. data/lib/braintree/paginated_collection.rb +2 -2
  76. data/lib/braintree/paginated_result.rb +1 -1
  77. data/lib/braintree/payment_instrument_type.rb +14 -13
  78. data/lib/braintree/payment_method_customer_data_updated_metadata.rb +24 -0
  79. data/lib/braintree/payment_method_gateway.rb +52 -22
  80. data/lib/braintree/payment_method_nonce.rb +12 -7
  81. data/lib/braintree/payment_method_nonce_details.rb +40 -0
  82. data/lib/braintree/payment_method_nonce_details_payer_info.rb +32 -0
  83. data/lib/braintree/payment_method_nonce_gateway.rb +14 -3
  84. data/lib/braintree/payment_method_parser.rb +4 -7
  85. data/lib/braintree/paypal_account.rb +3 -2
  86. data/lib/braintree/paypal_account_gateway.rb +5 -5
  87. data/lib/braintree/plan.rb +22 -2
  88. data/lib/braintree/plan_gateway.rb +101 -1
  89. data/lib/braintree/processor_response_types.rb +3 -3
  90. data/lib/braintree/resource_collection.rb +10 -5
  91. data/lib/braintree/revoked_payment_method_metadata.rb +2 -2
  92. data/lib/braintree/risk_data/liability_shift.rb +22 -0
  93. data/lib/braintree/risk_data.rb +10 -3
  94. data/lib/braintree/samsung_pay_card.rb +8 -6
  95. data/lib/braintree/sepa_direct_debit_account.rb +60 -0
  96. data/lib/braintree/sepa_direct_debit_account_gateway.rb +25 -0
  97. data/lib/braintree/sepa_direct_debit_account_nonce_details.rb +28 -0
  98. data/lib/braintree/settlement_batch_summary.rb +2 -2
  99. data/lib/braintree/settlement_batch_summary_gateway.rb +1 -1
  100. data/lib/braintree/sha256_digest.rb +1 -1
  101. data/lib/braintree/subscription/status_details.rb +1 -1
  102. data/lib/braintree/subscription.rb +13 -13
  103. data/lib/braintree/subscription_gateway.rb +6 -6
  104. data/lib/braintree/subscription_search.rb +1 -1
  105. data/lib/braintree/successful_result.rb +5 -4
  106. data/lib/braintree/test/authentication_id.rb +21 -0
  107. data/lib/braintree/test/credit_card.rb +9 -10
  108. data/lib/braintree/test/merchant_account.rb +1 -1
  109. data/lib/braintree/test/nonce.rb +27 -20
  110. data/lib/braintree/test/transaction_amounts.rb +2 -3
  111. data/lib/braintree/test/venmo_sdk.rb +2 -0
  112. data/lib/braintree/testing_gateway.rb +1 -1
  113. data/lib/braintree/three_d_secure_info.rb +23 -11
  114. data/lib/braintree/transaction/address_details.rb +14 -1
  115. data/lib/braintree/transaction/apple_pay_details.rb +13 -10
  116. data/lib/braintree/transaction/credit_card_details.rb +8 -1
  117. data/lib/braintree/transaction/customer_details.rb +3 -2
  118. data/lib/braintree/transaction/disbursement_details.rb +2 -1
  119. data/lib/braintree/transaction/{android_pay_details.rb → google_pay_details.rb} +6 -1
  120. data/lib/braintree/transaction/installment/adjustment.rb +33 -0
  121. data/lib/braintree/transaction/installment.rb +28 -0
  122. data/lib/braintree/transaction/local_payment_details.rb +3 -0
  123. data/lib/braintree/transaction/meta_checkout_card_details.rb +52 -0
  124. data/lib/braintree/transaction/meta_checkout_token_details.rb +54 -0
  125. data/lib/braintree/transaction/package_details.rb +19 -0
  126. data/lib/braintree/transaction/payment_receipt/card_present_data.rb +36 -0
  127. data/lib/braintree/transaction/payment_receipt/merchant_address.rb +19 -0
  128. data/lib/braintree/transaction/payment_receipt.rb +31 -0
  129. data/lib/braintree/transaction/paypal_details.rb +5 -0
  130. data/lib/braintree/transaction/samsung_pay_card_details.rb +3 -1
  131. data/lib/braintree/transaction/sepa_direct_debit_account_details.rb +27 -0
  132. data/lib/braintree/transaction/status_details.rb +1 -1
  133. data/lib/braintree/transaction/subscription_details.rb +3 -1
  134. data/lib/braintree/transaction/us_bank_account_details.rb +2 -1
  135. data/lib/braintree/transaction/visa_checkout_card_details.rb +1 -1
  136. data/lib/braintree/transaction.rb +119 -128
  137. data/lib/braintree/transaction_gateway.rb +138 -64
  138. data/lib/braintree/transaction_line_item.rb +14 -11
  139. data/lib/braintree/transaction_line_item_gateway.rb +1 -1
  140. data/lib/braintree/transaction_review.rb +18 -0
  141. data/lib/braintree/transaction_search.rb +11 -7
  142. data/lib/braintree/unknown_payment_method.rb +2 -2
  143. data/lib/braintree/us_bank_account.rb +5 -5
  144. data/lib/braintree/us_bank_account_verification.rb +24 -16
  145. data/lib/braintree/us_bank_account_verification_gateway.rb +1 -1
  146. data/lib/braintree/us_bank_account_verification_search.rb +1 -1
  147. data/lib/braintree/util.rb +25 -10
  148. data/lib/braintree/validation_error.rb +1 -1
  149. data/lib/braintree/validation_error_collection.rb +3 -3
  150. data/lib/braintree/venmo_account.rb +4 -4
  151. data/lib/braintree/venmo_profile_data.rb +25 -0
  152. data/lib/braintree/version.rb +2 -2
  153. data/lib/braintree/visa_checkout_card.rb +8 -8
  154. data/lib/braintree/webhook_notification.rb +55 -33
  155. data/lib/braintree/webhook_notification_gateway.rb +9 -9
  156. data/lib/braintree/webhook_testing.rb +1 -1
  157. data/lib/braintree/webhook_testing_gateway.rb +569 -46
  158. data/lib/braintree/xml/generator.rb +6 -5
  159. data/lib/braintree/xml/libxml.rb +1 -1
  160. data/lib/braintree/xml/parser.rb +24 -37
  161. data/lib/braintree/xml/rexml.rb +6 -7
  162. data/lib/braintree/xml.rb +1 -1
  163. data/lib/braintree.rb +41 -24
  164. data/lib/ssl/api_braintreegateway_com.ca.crt +401 -168
  165. data/spec/integration/braintree/add_on_spec.rb +10 -10
  166. data/spec/integration/braintree/address_spec.rb +101 -178
  167. data/spec/integration/braintree/advanced_search_spec.rb +93 -93
  168. data/spec/integration/braintree/apple_pay_spec.rb +12 -12
  169. data/spec/integration/braintree/braintree_gateway_spec.rb +2 -1
  170. data/spec/integration/braintree/client_api/client_token_spec.rb +279 -62
  171. data/spec/integration/braintree/client_api/spec_helper.rb +99 -73
  172. data/spec/integration/braintree/credit_card_spec.rb +522 -821
  173. data/spec/integration/braintree/credit_card_verification_search_spec.rb +18 -18
  174. data/spec/integration/braintree/credit_card_verification_spec.rb +219 -30
  175. data/spec/integration/braintree/customer_search_spec.rb +28 -28
  176. data/spec/integration/braintree/customer_spec.rb +840 -757
  177. data/spec/integration/braintree/disbursement_spec.rb +2 -2
  178. data/spec/integration/braintree/discount_spec.rb +9 -9
  179. data/spec/integration/braintree/dispute_search_spec.rb +45 -9
  180. data/spec/integration/braintree/dispute_spec.rb +109 -82
  181. data/spec/integration/braintree/document_upload_spec.rb +29 -17
  182. data/spec/integration/braintree/error_codes_spec.rb +3 -3
  183. data/spec/integration/braintree/exchange_rate_quote_spec.rb +97 -0
  184. data/spec/integration/braintree/graphql_client_spec.rb +0 -2
  185. data/spec/integration/braintree/http_spec.rb +31 -33
  186. data/spec/integration/braintree/merchant_account_spec.rb +155 -156
  187. data/spec/integration/braintree/merchant_spec.rb +71 -192
  188. data/spec/integration/braintree/oauth_spec.rb +72 -72
  189. data/spec/integration/braintree/package_tracking_spec.rb +130 -0
  190. data/spec/integration/braintree/payment_method_nonce_spec.rb +173 -78
  191. data/spec/integration/braintree/payment_method_spec.rb +953 -501
  192. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +147 -234
  193. data/spec/integration/braintree/paypal_account_spec.rb +74 -72
  194. data/spec/integration/braintree/plan_spec.rb +96 -15
  195. data/spec/integration/braintree/samsung_pay_card_spec.rb +75 -73
  196. data/spec/integration/braintree/sepa_direct_debit_account_spec.rb +194 -0
  197. data/spec/integration/braintree/settlement_batch_summary_spec.rb +18 -18
  198. data/spec/integration/braintree/subscription_spec.rb +507 -513
  199. data/spec/integration/braintree/test/transaction_amounts_spec.rb +4 -4
  200. data/spec/integration/braintree/test_transaction_spec.rb +29 -29
  201. data/spec/integration/braintree/transaction_line_item_spec.rb +12 -6
  202. data/spec/integration/braintree/transaction_search_spec.rb +410 -217
  203. data/spec/integration/braintree/transaction_spec.rb +3252 -2102
  204. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +42 -278
  205. data/spec/integration/braintree/us_bank_account_spec.rb +36 -36
  206. data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +25 -25
  207. data/spec/integration/braintree/us_bank_account_verification_spec.rb +41 -41
  208. data/spec/integration/braintree/visa_checkout_card_spec.rb +62 -62
  209. data/spec/integration/spec_helper.rb +22 -7
  210. data/spec/oauth_test_helper.rb +1 -1
  211. data/spec/script/httpsd.rb +6 -6
  212. data/spec/spec_helper.rb +15 -20
  213. data/spec/unit/braintree/address_spec.rb +9 -17
  214. data/spec/unit/braintree/apple_pay_card_spec.rb +110 -7
  215. data/spec/unit/braintree/base_module_spec.rb +4 -4
  216. data/spec/unit/braintree/client_token_spec.rb +6 -6
  217. data/spec/unit/braintree/configuration_spec.rb +84 -84
  218. data/spec/unit/braintree/credentials_parser_spec.rb +6 -6
  219. data/spec/unit/braintree/credit_card_spec.rb +91 -58
  220. data/spec/unit/braintree/credit_card_verification_gateway_spec.rb +56 -0
  221. data/spec/unit/braintree/credit_card_verification_search_spec.rb +10 -10
  222. data/spec/unit/braintree/credit_card_verification_spec.rb +40 -18
  223. data/spec/unit/braintree/customer_spec.rb +102 -57
  224. data/spec/unit/braintree/digest_spec.rb +5 -6
  225. data/spec/unit/braintree/disbursement_spec.rb +14 -14
  226. data/spec/unit/braintree/dispute_search_spec.rb +6 -2
  227. data/spec/unit/braintree/dispute_spec.rb +144 -66
  228. data/spec/unit/braintree/document_upload_spec.rb +8 -8
  229. data/spec/unit/braintree/enriched_customer_data_spec.rb +41 -0
  230. data/spec/unit/braintree/error_result_spec.rb +11 -11
  231. data/spec/unit/braintree/errors_spec.rb +17 -17
  232. data/spec/unit/braintree/exchange_rate_quote_input_spec.rb +42 -0
  233. data/spec/unit/braintree/exchange_rate_quote_request_spec.rb +82 -0
  234. data/spec/unit/braintree/exchange_rate_quote_response_spec.rb +52 -0
  235. data/spec/unit/braintree/exchange_rate_quote_spec.rb +42 -0
  236. data/spec/unit/braintree/exchange_rate_spec.rb +23 -0
  237. data/spec/unit/braintree/http_spec.rb +19 -17
  238. data/spec/unit/braintree/local_payment_completed_spec.rb +62 -8
  239. data/spec/unit/braintree/local_payment_expired_spec.rb +24 -0
  240. data/spec/unit/braintree/local_payment_funded_spec.rb +34 -0
  241. data/spec/unit/braintree/merchant_account_spec.rb +5 -5
  242. data/spec/unit/braintree/meta_checkout_card_details_spec.rb +60 -0
  243. data/spec/unit/braintree/meta_checkout_card_spec.rb +60 -0
  244. data/spec/unit/braintree/meta_checkout_token_details_spec.rb +63 -0
  245. data/spec/unit/braintree/meta_checkout_token_spec.rb +63 -0
  246. data/spec/unit/braintree/modification_spec.rb +1 -1
  247. data/spec/unit/braintree/package_tracking_spec.rb +77 -0
  248. data/spec/unit/braintree/payment_method_customer_data_updated_metadata_spec.rb +45 -0
  249. data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +31 -0
  250. data/spec/unit/braintree/payment_method_nonce_details_spec.rb +51 -0
  251. data/spec/unit/braintree/payment_method_nonce_spec.rb +40 -0
  252. data/spec/unit/braintree/payment_method_spec.rb +20 -20
  253. data/spec/unit/braintree/paypal_account_spec.rb +16 -7
  254. data/spec/unit/braintree/resource_collection_spec.rb +34 -5
  255. data/spec/unit/braintree/risk_data/liability_shift.rb +26 -0
  256. data/spec/unit/braintree/risk_data_spec.rb +38 -8
  257. data/spec/unit/braintree/sepa_debit_account_nonce_details_spec.rb +29 -0
  258. data/spec/unit/braintree/sepa_debit_account_spec.rb +86 -0
  259. data/spec/unit/braintree/sha256_digest_spec.rb +1 -1
  260. data/spec/unit/braintree/signature_service_spec.rb +2 -2
  261. data/spec/unit/braintree/subscription_search_spec.rb +18 -18
  262. data/spec/unit/braintree/subscription_spec.rb +8 -8
  263. data/spec/unit/braintree/successful_result_spec.rb +6 -6
  264. data/spec/unit/braintree/three_d_secure_info_spec.rb +37 -17
  265. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +22 -6
  266. data/spec/unit/braintree/transaction/customer_details_spec.rb +3 -2
  267. data/spec/unit/braintree/transaction/deposit_details_spec.rb +4 -4
  268. data/spec/unit/braintree/transaction/installment_spec.rb +25 -0
  269. data/spec/unit/braintree/transaction/local_payment_details_spec.rb +36 -0
  270. data/spec/unit/braintree/transaction/payment_receipt_spec.rb +73 -0
  271. data/spec/unit/braintree/transaction/paypal_details_spec.rb +63 -0
  272. data/spec/unit/braintree/transaction/sepa_direct_debit_account_details_spec.rb +33 -0
  273. data/spec/unit/braintree/transaction_gateway_spec.rb +150 -0
  274. data/spec/unit/braintree/transaction_search_spec.rb +12 -12
  275. data/spec/unit/braintree/transaction_spec.rb +221 -124
  276. data/spec/unit/braintree/unknown_payment_method_spec.rb +4 -4
  277. data/spec/unit/braintree/us_bank_account_spec.rb +2 -2
  278. data/spec/unit/braintree/us_bank_account_verification_search_spec.rb +7 -7
  279. data/spec/unit/braintree/us_bank_account_verification_spec.rb +12 -7
  280. data/spec/unit/braintree/util_spec.rb +78 -44
  281. data/spec/unit/braintree/validation_error_collection_spec.rb +62 -62
  282. data/spec/unit/braintree/validation_error_spec.rb +4 -4
  283. data/spec/unit/braintree/venmo_profile_data_spec.rb +43 -0
  284. data/spec/unit/braintree/webhook_notification_spec.rb +434 -197
  285. data/spec/unit/braintree/xml/libxml_spec.rb +5 -5
  286. data/spec/unit/braintree/xml/parser_spec.rb +27 -22
  287. data/spec/unit/braintree/xml/rexml_spec.rb +5 -5
  288. data/spec/unit/braintree/xml_spec.rb +38 -38
  289. data/spec/unit/braintree_spec.rb +2 -2
  290. metadata +91 -30
  291. data/lib/braintree/amex_express_checkout_card.rb +0 -38
  292. data/lib/braintree/coinbase_account.rb +0 -34
  293. data/lib/braintree/europe_bank_account.rb +0 -36
  294. data/lib/braintree/europe_bank_account_gateway.rb +0 -17
  295. data/lib/braintree/ideal_payment.rb +0 -61
  296. data/lib/braintree/ideal_payment_gateway.rb +0 -19
  297. data/lib/braintree/masterpass_card.rb +0 -81
  298. data/lib/braintree/settlement_batch.rb +0 -0
  299. data/lib/braintree/transaction/amex_express_checkout_details.rb +0 -21
  300. data/lib/braintree/transaction/ideal_payment_details.rb +0 -19
  301. data/lib/braintree/transaction/masterpass_card_details.rb +0 -47
  302. data/lib/braintree/transparent_redirect.rb +0 -40
  303. data/lib/braintree/transparent_redirect_gateway.rb +0 -105
  304. data/spec/hacks/tcp_socket.rb +0 -18
  305. data/spec/integration/braintree/coinbase_spec.rb +0 -34
  306. data/spec/integration/braintree/masterpass_card_spec.rb +0 -97
  307. data/spec/integration/braintree/transparent_redirect_spec.rb +0 -268
  308. data/spec/unit/braintree/transparent_redirect_spec.rb +0 -223
@@ -1,14 +1,16 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
2
  require File.expand_path(File.dirname(__FILE__) + "/client_api/spec_helper")
3
3
 
4
- describe Braintree::SamsungPayCard do
4
+ # NEXT_MAJOR_VERSION remove these tests
5
+ # SamsungPayCard has been deprecated
6
+ xdescribe Braintree::SamsungPayCard do
5
7
  it "can create from payment method nonce" do
6
8
  customer = Braintree::Customer.create!
7
9
 
8
10
  result = Braintree::PaymentMethod.create(
9
11
  :payment_method_nonce => Braintree::Test::Nonce::SamsungPayDiscover,
10
12
  :customer_id => customer.id,
11
- :cardholder_name => 'Jenny Block',
13
+ :cardholder_name => "Jenny Block",
12
14
  :billing_address => {
13
15
  :first_name => "New First Name",
14
16
  :last_name => "New Last Name",
@@ -19,44 +21,44 @@ describe Braintree::SamsungPayCard do
19
21
  :region => "New State",
20
22
  :postal_code => "56789",
21
23
  :country_name => "United States of America"
22
- }
24
+ },
23
25
  )
24
- result.should be_success
26
+ expect(result).to be_success
25
27
 
26
28
  samsung_pay_card = result.payment_method
27
- samsung_pay_card.should be_a(Braintree::SamsungPayCard)
28
- samsung_pay_card.billing_address.should_not be_nil
29
- samsung_pay_card.bin.should_not be_nil
30
- samsung_pay_card.cardholder_name.should_not be_nil
31
- samsung_pay_card.card_type.should_not be_nil
32
- samsung_pay_card.commercial.should_not be_nil
33
- samsung_pay_card.country_of_issuance.should_not be_nil
34
- samsung_pay_card.created_at.should_not be_nil
35
- samsung_pay_card.customer_id.should_not be_nil
36
- samsung_pay_card.customer_location.should_not be_nil
37
- samsung_pay_card.debit.should_not be_nil
38
- samsung_pay_card.default?.should_not be_nil
39
- samsung_pay_card.durbin_regulated.should_not be_nil
40
- samsung_pay_card.expiration_date.should_not be_nil
41
- samsung_pay_card.expiration_month.should_not be_nil
42
- samsung_pay_card.expiration_year.should_not be_nil
43
- samsung_pay_card.expired?.should_not be_nil
44
- samsung_pay_card.healthcare.should_not be_nil
45
- samsung_pay_card.image_url.should_not be_nil
46
- samsung_pay_card.issuing_bank.should_not be_nil
47
- samsung_pay_card.last_4.should_not be_nil
48
- samsung_pay_card.payroll.should_not be_nil
49
- samsung_pay_card.prepaid.should_not be_nil
50
- samsung_pay_card.product_id.should_not be_nil
51
- samsung_pay_card.source_card_last_4.should_not be_nil
52
- samsung_pay_card.subscriptions.should_not be_nil
53
- samsung_pay_card.token.should_not be_nil
54
- samsung_pay_card.unique_number_identifier.should_not be_nil
55
- samsung_pay_card.updated_at.should_not be_nil
29
+ expect(samsung_pay_card).to be_a(Braintree::SamsungPayCard)
30
+ expect(samsung_pay_card.billing_address).not_to be_nil
31
+ expect(samsung_pay_card.bin).not_to be_nil
32
+ expect(samsung_pay_card.cardholder_name).not_to be_nil
33
+ expect(samsung_pay_card.card_type).not_to be_nil
34
+ expect(samsung_pay_card.commercial).not_to be_nil
35
+ expect(samsung_pay_card.country_of_issuance).not_to be_nil
36
+ expect(samsung_pay_card.created_at).not_to be_nil
37
+ expect(samsung_pay_card.customer_id).not_to be_nil
38
+ expect(samsung_pay_card.customer_location).not_to be_nil
39
+ expect(samsung_pay_card.debit).not_to be_nil
40
+ expect(samsung_pay_card.default?).not_to be_nil
41
+ expect(samsung_pay_card.durbin_regulated).not_to be_nil
42
+ expect(samsung_pay_card.expiration_date).not_to be_nil
43
+ expect(samsung_pay_card.expiration_month).not_to be_nil
44
+ expect(samsung_pay_card.expiration_year).not_to be_nil
45
+ expect(samsung_pay_card.expired?).not_to be_nil
46
+ expect(samsung_pay_card.healthcare).not_to be_nil
47
+ expect(samsung_pay_card.image_url).not_to be_nil
48
+ expect(samsung_pay_card.issuing_bank).not_to be_nil
49
+ expect(samsung_pay_card.last_4).not_to be_nil
50
+ expect(samsung_pay_card.payroll).not_to be_nil
51
+ expect(samsung_pay_card.prepaid).not_to be_nil
52
+ expect(samsung_pay_card.product_id).not_to be_nil
53
+ expect(samsung_pay_card.source_card_last_4).not_to be_nil
54
+ expect(samsung_pay_card.subscriptions).not_to be_nil
55
+ expect(samsung_pay_card.token).not_to be_nil
56
+ expect(samsung_pay_card.unique_number_identifier).not_to be_nil
57
+ expect(samsung_pay_card.updated_at).not_to be_nil
56
58
 
57
59
  customer = Braintree::Customer.find(customer.id)
58
- customer.samsung_pay_cards.size.should == 1
59
- customer.samsung_pay_cards.first.should == samsung_pay_card
60
+ expect(customer.samsung_pay_cards.size).to eq(1)
61
+ expect(customer.samsung_pay_cards.first).to eq(samsung_pay_card)
60
62
  end
61
63
 
62
64
  it "returns cardholder_name and billing_address" do
@@ -65,7 +67,7 @@ describe Braintree::SamsungPayCard do
65
67
  result = Braintree::PaymentMethod.create(
66
68
  :payment_method_nonce => Braintree::Test::Nonce::SamsungPayDiscover,
67
69
  :customer_id => customer.id,
68
- :cardholder_name => 'Jenny Block',
70
+ :cardholder_name => "Jenny Block",
69
71
  :billing_address => {
70
72
  :first_name => "New First Name",
71
73
  :last_name => "New Last Name",
@@ -76,36 +78,36 @@ describe Braintree::SamsungPayCard do
76
78
  :region => "New State",
77
79
  :postal_code => "56789",
78
80
  :country_name => "United States of America"
79
- }
81
+ },
80
82
  )
81
83
 
82
- result.should be_success
83
- result.payment_method.cardholder_name.should == 'Jenny Block'
84
+ expect(result).to be_success
85
+ expect(result.payment_method.cardholder_name).to eq("Jenny Block")
84
86
 
85
87
  address = result.payment_method.billing_address
86
- address.first_name.should == "New First Name"
87
- address.last_name.should == "New Last Name"
88
- address.company.should == "New Company"
89
- address.street_address.should == "123 New St"
90
- address.extended_address.should == "Apt New"
91
- address.locality.should == "New City"
92
- address.region.should == "New State"
93
- address.postal_code.should == "56789"
88
+ expect(address.first_name).to eq("New First Name")
89
+ expect(address.last_name).to eq("New Last Name")
90
+ expect(address.company).to eq("New Company")
91
+ expect(address.street_address).to eq("123 New St")
92
+ expect(address.extended_address).to eq("Apt New")
93
+ expect(address.locality).to eq("New City")
94
+ expect(address.region).to eq("New State")
95
+ expect(address.postal_code).to eq("56789")
94
96
  end
95
97
 
96
98
  it "can search for transactions" do
97
99
  transaction_create_result = Braintree::Transaction.sale(
98
100
  :payment_method_nonce => Braintree::Test::Nonce::SamsungPayDiscover,
99
- :amount => '47.00',
101
+ :amount => "47.00",
100
102
  )
101
- transaction_create_result.should be_success
103
+ expect(transaction_create_result).to be_success
102
104
  transaction_id = transaction_create_result.transaction.id
103
105
 
104
106
  search_results = Braintree::Transaction.search do |search|
105
107
  search.id.is transaction_id
106
108
  search.payment_instrument_type.is Braintree::PaymentInstrumentType::SamsungPayCard
107
109
  end
108
- search_results.first.id.should == transaction_id
110
+ expect(search_results.first.id).to eq(transaction_id)
109
111
  end
110
112
 
111
113
  it "can create transaction from nonce and vault" do
@@ -114,31 +116,31 @@ describe Braintree::SamsungPayCard do
114
116
  result = Braintree::Transaction.sale(
115
117
  :payment_method_nonce => Braintree::Test::Nonce::SamsungPayDiscover,
116
118
  :customer_id => customer.id,
117
- :amount => '47.00',
118
- :options => { :store_in_vault => true },
119
+ :amount => "47.00",
120
+ :options => {:store_in_vault => true},
119
121
  )
120
- result.should be_success
122
+ expect(result).to be_success
121
123
 
122
124
  samsung_pay_card_details = result.transaction.samsung_pay_card_details
123
- samsung_pay_card_details.bin.should_not be_nil
124
- samsung_pay_card_details.card_type.should_not be_nil
125
- samsung_pay_card_details.commercial.should_not be_nil
126
- samsung_pay_card_details.country_of_issuance.should_not be_nil
127
- samsung_pay_card_details.customer_location.should_not be_nil
128
- samsung_pay_card_details.debit.should_not be_nil
129
- samsung_pay_card_details.durbin_regulated.should_not be_nil
130
- samsung_pay_card_details.expiration_date.should_not be_nil
131
- samsung_pay_card_details.expiration_month.should_not be_nil
132
- samsung_pay_card_details.expiration_year.should_not be_nil
133
- samsung_pay_card_details.healthcare.should_not be_nil
134
- samsung_pay_card_details.image_url.should_not be_nil
135
- samsung_pay_card_details.issuing_bank.should_not be_nil
136
- samsung_pay_card_details.last_4.should_not be_nil
137
- samsung_pay_card_details.payroll.should_not be_nil
138
- samsung_pay_card_details.prepaid.should_not be_nil
139
- samsung_pay_card_details.product_id.should_not be_nil
140
- samsung_pay_card_details.source_card_last_4.should_not be_nil
141
- samsung_pay_card_details.source_card_last_4.should == '3333'
142
- samsung_pay_card_details.token.should_not be_nil
125
+ expect(samsung_pay_card_details.bin).not_to be_nil
126
+ expect(samsung_pay_card_details.card_type).not_to be_nil
127
+ expect(samsung_pay_card_details.commercial).not_to be_nil
128
+ expect(samsung_pay_card_details.country_of_issuance).not_to be_nil
129
+ expect(samsung_pay_card_details.customer_location).not_to be_nil
130
+ expect(samsung_pay_card_details.debit).not_to be_nil
131
+ expect(samsung_pay_card_details.durbin_regulated).not_to be_nil
132
+ expect(samsung_pay_card_details.expiration_date).not_to be_nil
133
+ expect(samsung_pay_card_details.expiration_month).not_to be_nil
134
+ expect(samsung_pay_card_details.expiration_year).not_to be_nil
135
+ expect(samsung_pay_card_details.healthcare).not_to be_nil
136
+ expect(samsung_pay_card_details.image_url).not_to be_nil
137
+ expect(samsung_pay_card_details.issuing_bank).not_to be_nil
138
+ expect(samsung_pay_card_details.last_4).not_to be_nil
139
+ expect(samsung_pay_card_details.payroll).not_to be_nil
140
+ expect(samsung_pay_card_details.prepaid).not_to be_nil
141
+ expect(samsung_pay_card_details.product_id).not_to be_nil
142
+ expect(samsung_pay_card_details.source_card_last_4).not_to be_nil
143
+ expect(samsung_pay_card_details.source_card_last_4).to eq("3333")
144
+ expect(samsung_pay_card_details.token).not_to be_nil
143
145
  end
144
146
  end
@@ -0,0 +1,194 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::SepaDirectDebitAccount do
4
+ before do
5
+ Braintree::Configuration.merchant_id = "integration_merchant_id"
6
+ Braintree::Configuration.public_key = "integration_public_key"
7
+ Braintree::Configuration.private_key = "integration_private_key"
8
+ end
9
+
10
+ let(:customer) { Braintree::Customer.create.customer }
11
+ let(:nonce) { Braintree::Test::Nonce::SepaDirectDebit }
12
+
13
+ let(:token) do
14
+ Braintree::PaymentMethod.create(
15
+ payment_method_nonce: nonce,
16
+ customer_id: customer.id,
17
+ ).payment_method.token
18
+ end
19
+
20
+ describe "self.find" do
21
+ subject do
22
+ described_class.find(token)
23
+ end
24
+
25
+ context "when payment method exists" do
26
+ it "returns a payment method" do
27
+ sepa_direct_debit_account = subject
28
+ expect(sepa_direct_debit_account).to be_a(Braintree::SepaDirectDebitAccount)
29
+ expect(sepa_direct_debit_account.last_4).to eq("1234")
30
+ expect(sepa_direct_debit_account.default).to eq(true)
31
+ expect(sepa_direct_debit_account.customer_id).to eq(customer.id)
32
+ expect(sepa_direct_debit_account.global_id).not_to be_empty
33
+ expect(sepa_direct_debit_account.customer_global_id).not_to be_empty
34
+ expect(sepa_direct_debit_account.bank_reference_token).to eq("a-fake-bank-reference-token")
35
+ expect(sepa_direct_debit_account.mandate_type).to eq("RECURRENT")
36
+ expect(sepa_direct_debit_account.merchant_or_partner_customer_id).to eq("a-fake-mp-customer-id")
37
+ expect(sepa_direct_debit_account.token).not_to be_empty
38
+ expect(sepa_direct_debit_account.image_url).not_to be_empty
39
+ expect(sepa_direct_debit_account.created_at).to be_a Time
40
+ expect(sepa_direct_debit_account.updated_at).to be_a Time
41
+ end
42
+ end
43
+
44
+ context "when payment method does not exist" do
45
+ let(:token) { "ABC123" }
46
+
47
+ it "raises an error" do
48
+ expect {
49
+ subject
50
+ }.to raise_error(Braintree::NotFoundError)
51
+ end
52
+ end
53
+
54
+ context "subscriptions" do
55
+ it "returns subscriptions associated with a SEPA direct debit account" do
56
+ subscription1 = Braintree::Subscription.create(
57
+ :payment_method_token => token,
58
+ :plan_id => SpecHelper::TriallessPlan[:id],
59
+ ).subscription
60
+
61
+ subscription2 = Braintree::Subscription.create(
62
+ :payment_method_token => token,
63
+ :plan_id => SpecHelper::TriallessPlan[:id],
64
+ ).subscription
65
+
66
+ sepa_debit_account = Braintree::SepaDirectDebitAccount.find(token)
67
+ subscription_ids = sepa_debit_account.subscriptions.map { |h| h[:id] }.sort
68
+ expect(subscription_ids).to eq([subscription1.id, subscription2.id].sort)
69
+ end
70
+ end
71
+ end
72
+
73
+ describe "self.delete" do
74
+ subject do
75
+ described_class.delete(token)
76
+ end
77
+
78
+ context "when payment method exists" do
79
+ it "deletes a payment method" do
80
+ is_expected.to be_success
81
+
82
+ expect {
83
+ described_class.find(token)
84
+ }.to raise_error(Braintree::NotFoundError)
85
+ end
86
+ end
87
+
88
+ context "when payment method does not exist" do
89
+ let(:token) { "ABC123" }
90
+
91
+ it "raises an error" do
92
+ expect {
93
+ subject
94
+ }.to raise_error(Braintree::NotFoundError)
95
+ end
96
+ end
97
+ end
98
+
99
+ describe "self.sale" do
100
+ let(:params) do
101
+ {
102
+ amount: 1.23,
103
+ }
104
+ end
105
+
106
+ subject do
107
+ described_class.sale(token, params)
108
+ end
109
+
110
+ context "when payment method exists" do
111
+ it "creates a transaction" do
112
+ is_expected.to be_success
113
+
114
+ transaction = subject.transaction
115
+ expect(transaction.amount).to eq(1.23)
116
+ expect(transaction.status).to eq("settling")
117
+ sepa_direct_debit_account_details = transaction.sepa_direct_debit_account_details
118
+ expect(sepa_direct_debit_account_details).to be_a(Braintree::Transaction::SepaDirectDebitAccountDetails)
119
+ expect(sepa_direct_debit_account_details.bank_reference_token).to eq("a-fake-bank-reference-token")
120
+ expect(sepa_direct_debit_account_details.capture_id).not_to be_empty
121
+ expect(sepa_direct_debit_account_details.debug_id).to be_nil
122
+ expect(sepa_direct_debit_account_details.global_id).not_to be_empty
123
+ expect(sepa_direct_debit_account_details.last_4).to eq("1234")
124
+ expect(sepa_direct_debit_account_details.mandate_type).to eq("RECURRENT")
125
+ expect(sepa_direct_debit_account_details.merchant_or_partner_customer_id).to eq("a-fake-mp-customer-id")
126
+ expect(sepa_direct_debit_account_details.paypal_v2_order_id).to be_nil
127
+ expect(sepa_direct_debit_account_details.refund_from_transaction_fee_amount).to be_nil
128
+ expect(sepa_direct_debit_account_details.refund_from_transaction_fee_currency_iso_code).to be_nil
129
+ expect(sepa_direct_debit_account_details.refund_id).to be_nil
130
+ expect(sepa_direct_debit_account_details.settlement_type).to be_nil
131
+ expect(sepa_direct_debit_account_details.token).to eq(token)
132
+ expect(sepa_direct_debit_account_details.transaction_fee_amount).to eq("0.01")
133
+ expect(sepa_direct_debit_account_details.transaction_fee_currency_iso_code).to eq("USD")
134
+ end
135
+ end
136
+
137
+ context "when payment method does not exist" do
138
+ let(:token) { "ABC123" }
139
+
140
+ it "not raises an error" do
141
+ expect {
142
+ subject
143
+ }.to_not raise_error
144
+ end
145
+ end
146
+ end
147
+
148
+ describe "self.sale!" do
149
+ let(:params) do
150
+ {
151
+ amount: 1.23,
152
+ }
153
+ end
154
+
155
+ subject do
156
+ described_class.sale!(token, params)
157
+ end
158
+
159
+ context "when payment method exists" do
160
+ it "creates a transaction" do
161
+ transaction = subject
162
+ expect(transaction.amount).to eq(1.23)
163
+ expect(transaction.status).to eq("settling")
164
+ sepa_direct_debit_account_details = transaction.sepa_direct_debit_account_details
165
+ expect(sepa_direct_debit_account_details).to be_a(Braintree::Transaction::SepaDirectDebitAccountDetails)
166
+ expect(sepa_direct_debit_account_details.bank_reference_token).to eq("a-fake-bank-reference-token")
167
+ expect(sepa_direct_debit_account_details.capture_id).not_to be_empty
168
+ expect(sepa_direct_debit_account_details.debug_id).to be_nil
169
+ expect(sepa_direct_debit_account_details.global_id).not_to be_empty
170
+ expect(sepa_direct_debit_account_details.last_4).to eq("1234")
171
+ expect(sepa_direct_debit_account_details.mandate_type).to eq("RECURRENT")
172
+ expect(sepa_direct_debit_account_details.merchant_or_partner_customer_id).to eq("a-fake-mp-customer-id")
173
+ expect(sepa_direct_debit_account_details.paypal_v2_order_id).to be_nil
174
+ expect(sepa_direct_debit_account_details.refund_from_transaction_fee_amount).to be_nil
175
+ expect(sepa_direct_debit_account_details.refund_from_transaction_fee_currency_iso_code).to be_nil
176
+ expect(sepa_direct_debit_account_details.refund_id).to be_nil
177
+ expect(sepa_direct_debit_account_details.settlement_type).to be_nil
178
+ expect(sepa_direct_debit_account_details.token).to eq(token)
179
+ expect(sepa_direct_debit_account_details.transaction_fee_amount).to eq("0.01")
180
+ expect(sepa_direct_debit_account_details.transaction_fee_currency_iso_code).to eq("USD")
181
+ end
182
+ end
183
+
184
+ context "when payment method does not exist" do
185
+ let(:token) { "ABC123" }
186
+
187
+ it "not raises an error" do
188
+ expect {
189
+ subject
190
+ }.to raise_error(Braintree::ValidationsFailed)
191
+ end
192
+ end
193
+ end
194
+ end
@@ -5,14 +5,14 @@ describe Braintree::SettlementBatchSummary do
5
5
  describe "self.generate" do
6
6
  it "returns an empty collection if there is not data" do
7
7
  result = Braintree::SettlementBatchSummary.generate("1979-01-01")
8
- result.should be_success
9
- result.settlement_batch_summary.records.size.should be_zero
8
+ expect(result).to be_success
9
+ expect(result.settlement_batch_summary.records.size).to be_zero
10
10
  end
11
11
 
12
12
  it "returns an error response if the date cannot be parsed" do
13
13
  result = Braintree::SettlementBatchSummary.generate("NOT A DATE :(")
14
- result.should_not be_success
15
- result.errors.for(:settlement_batch_summary).on(:settlement_date).map {|e| e.code}.should include(Braintree::ErrorCodes::SettlementBatchSummary::SettlementDateIsInvalid)
14
+ expect(result).not_to be_success
15
+ expect(result.errors.for(:settlement_batch_summary).on(:settlement_date).map { |e| e.code }).to include(Braintree::ErrorCodes::SettlementBatchSummary::SettlementDateIsInvalid)
16
16
  end
17
17
 
18
18
  it "returns transactions settled on a given day" do
@@ -23,16 +23,16 @@ describe Braintree::SettlementBatchSummary do
23
23
  :expiration_date => "05/2012",
24
24
  :cardholder_name => "Sergio Ramos"
25
25
  },
26
- :options => { :submit_for_settlement => true }
26
+ :options => {:submit_for_settlement => true},
27
27
  )
28
28
  result = SpecHelper.settle_transaction transaction.id
29
- settlement_date = result[:transaction][:settlement_batch_id].split('_').first
29
+ settlement_date = result[:transaction][:settlement_batch_id].split("_").first
30
30
  result = Braintree::SettlementBatchSummary.generate(settlement_date)
31
31
 
32
- result.should be_success
33
- amex_records = result.settlement_batch_summary.records.select {|row| row[:card_type] == Braintree::CreditCard::CardType::AmEx }
34
- amex_records.first[:count].to_i.should >= 1
35
- amex_records.first[:amount_settled].to_i.should >= Braintree::Test::TransactionAmounts::Authorize.to_i
32
+ expect(result).to be_success
33
+ amex_records = result.settlement_batch_summary.records.select { |row| row[:card_type] == Braintree::CreditCard::CardType::AmEx }
34
+ expect(amex_records.first[:count].to_i).to be >= 1
35
+ expect(amex_records.first[:amount_settled].to_i).to be >= Braintree::Test::TransactionAmounts::Authorize.to_i
36
36
  end
37
37
 
38
38
  it "can be grouped by a custom field" do
@@ -46,17 +46,17 @@ describe Braintree::SettlementBatchSummary do
46
46
  :custom_fields => {
47
47
  :store_me => "1"
48
48
  },
49
- :options => { :submit_for_settlement => true }
49
+ :options => {:submit_for_settlement => true},
50
50
  )
51
51
  result = SpecHelper.settle_transaction transaction.id
52
- settlement_date = result[:transaction][:settlement_batch_id].split('_').first
53
- result = Braintree::SettlementBatchSummary.generate(settlement_date, 'store_me')
52
+ settlement_date = result[:transaction][:settlement_batch_id].split("_").first
53
+ result = Braintree::SettlementBatchSummary.generate(settlement_date, "store_me")
54
54
 
55
- result.should be_success
56
- amex_records = result.settlement_batch_summary.records.select {|row| row[:store_me] == "1" }
57
- amex_records.should_not be_empty
58
- amex_records.first[:count].to_i.should >= 1
59
- amex_records.first[:amount_settled].to_i.should >= Braintree::Test::TransactionAmounts::Authorize.to_i
55
+ expect(result).to be_success
56
+ amex_records = result.settlement_batch_summary.records.select { |row| row[:store_me] == "1" }
57
+ expect(amex_records).not_to be_empty
58
+ expect(amex_records.first[:count].to_i).to be >= 1
59
+ expect(amex_records.first[:amount_settled].to_i).to be >= Braintree::Test::TransactionAmounts::Authorize.to_i
60
60
  end
61
61
  end
62
62
  end