balanced 0.8.2 → 1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (359) hide show
  1. checksums.yaml +4 -4
  2. data/.rbenv-version +1 -1
  3. data/.ruby-version +1 -1
  4. data/Gemfile +7 -3
  5. data/README.md +2 -10
  6. data/Rakefile +4 -18
  7. data/balanced.gemspec +8 -10
  8. data/lib/balanced.rb +28 -28
  9. data/lib/balanced/client.rb +15 -6
  10. data/lib/balanced/error.rb +21 -12
  11. data/lib/balanced/pager.rb +66 -25
  12. data/lib/balanced/resources.rb +18 -17
  13. data/lib/balanced/resources/api_key.rb +4 -0
  14. data/lib/balanced/resources/bank_account.rb +26 -75
  15. data/lib/balanced/resources/callback.rb +2 -0
  16. data/lib/balanced/resources/card.rb +15 -65
  17. data/lib/balanced/resources/card_hold.rb +38 -0
  18. data/lib/balanced/resources/credit.rb +6 -50
  19. data/lib/balanced/resources/customer.rb +33 -71
  20. data/lib/balanced/resources/debit.rb +6 -14
  21. data/lib/balanced/resources/event.rb +6 -0
  22. data/lib/balanced/resources/funding_instrument.rb +11 -0
  23. data/lib/balanced/resources/hypermedia.rb +28 -0
  24. data/lib/balanced/resources/marketplace.rb +5 -203
  25. data/lib/balanced/resources/order.rb +71 -0
  26. data/lib/balanced/resources/refund.rb +2 -7
  27. data/lib/balanced/resources/resource.rb +169 -106
  28. data/lib/balanced/resources/reversal.rb +2 -8
  29. data/lib/balanced/resources/transfer.rb +11 -0
  30. data/lib/balanced/response/balanced_exception_middleware.rb +2 -2
  31. data/lib/balanced/utils.rb +47 -14
  32. data/lib/balanced/version.rb +1 -1
  33. data/scenario.cache +526 -380
  34. data/scenarios/api_key_create/definition.rb +1 -0
  35. data/scenarios/api_key_create/request.rb +2 -0
  36. data/scenarios/api_key_create/ruby.mako +21 -0
  37. data/scenarios/api_key_delete/definition.rb +1 -0
  38. data/scenarios/api_key_delete/request.rb +3 -0
  39. data/scenarios/api_key_delete/ruby.mako +12 -0
  40. data/scenarios/api_key_list/definition.rb +1 -0
  41. data/scenarios/api_key_list/request.rb +2 -0
  42. data/scenarios/api_key_list/ruby.mako +28 -0
  43. data/scenarios/api_key_show/definition.rb +1 -0
  44. data/scenarios/api_key_show/request.rb +2 -0
  45. data/scenarios/api_key_show/ruby.mako +18 -0
  46. data/scenarios/{customer_add_bank_account → bank_account_associate_to_customer}/definition.rb +0 -0
  47. data/scenarios/bank_account_associate_to_customer/request.rb +3 -0
  48. data/scenarios/bank_account_associate_to_customer/ruby.mako +49 -0
  49. data/scenarios/bank_account_create/definition.rb +1 -1
  50. data/scenarios/bank_account_create/request.rb +1 -1
  51. data/scenarios/bank_account_create/ruby.mako +44 -7
  52. data/scenarios/{credit_create_existing_bank_account → bank_account_credit}/definition.rb +0 -0
  53. data/scenarios/bank_account_credit/request.rb +3 -0
  54. data/scenarios/bank_account_credit/ruby.mako +42 -0
  55. data/scenarios/bank_account_debit/definition.rb +1 -0
  56. data/scenarios/bank_account_debit/request.rb +5 -0
  57. data/scenarios/bank_account_debit/ruby.mako +50 -0
  58. data/scenarios/bank_account_delete/request.rb +1 -1
  59. data/scenarios/bank_account_delete/ruby.mako +5 -3
  60. data/scenarios/bank_account_list/ruby.mako +76 -2
  61. data/scenarios/bank_account_show/definition.rb +1 -1
  62. data/scenarios/bank_account_show/request.rb +1 -1
  63. data/scenarios/bank_account_show/ruby.mako +41 -5
  64. data/scenarios/bank_account_update/definition.rb +1 -0
  65. data/scenarios/bank_account_update/request.rb +6 -0
  66. data/scenarios/bank_account_update/ruby.mako +56 -0
  67. data/scenarios/bank_account_verification_create/request.rb +1 -1
  68. data/scenarios/bank_account_verification_create/ruby.mako +20 -3
  69. data/scenarios/bank_account_verification_show/definition.rb +1 -1
  70. data/scenarios/bank_account_verification_show/request.rb +1 -1
  71. data/scenarios/bank_account_verification_show/ruby.mako +21 -4
  72. data/scenarios/bank_account_verification_update/definition.rb +1 -1
  73. data/scenarios/bank_account_verification_update/request.rb +5 -5
  74. data/scenarios/bank_account_verification_update/ruby.mako +24 -8
  75. data/scenarios/callback_create/definition.rb +1 -1
  76. data/scenarios/callback_create/request.rb +2 -2
  77. data/scenarios/callback_create/ruby.mako +22 -0
  78. data/scenarios/callback_delete/definition.rb +1 -1
  79. data/scenarios/callback_delete/request.rb +2 -2
  80. data/scenarios/callback_delete/ruby.mako +12 -0
  81. data/scenarios/callback_list/definition.rb +1 -1
  82. data/scenarios/callback_list/request.rb +1 -2
  83. data/scenarios/callback_list/ruby.mako +20 -0
  84. data/scenarios/callback_show/definition.rb +1 -1
  85. data/scenarios/callback_show/request.rb +1 -1
  86. data/scenarios/callback_show/ruby.mako +20 -0
  87. data/scenarios/{customer_add_card → card_associate_to_customer}/definition.rb +0 -0
  88. data/scenarios/card_associate_to_customer/request.rb +3 -0
  89. data/scenarios/card_associate_to_customer/ruby.mako +49 -0
  90. data/scenarios/card_create/request.rb +1 -2
  91. data/scenarios/card_create/ruby.mako +44 -7
  92. data/scenarios/card_debit/definition.rb +1 -0
  93. data/scenarios/card_debit/request.rb +5 -0
  94. data/scenarios/card_debit/ruby.mako +49 -0
  95. data/scenarios/card_delete/request.rb +1 -1
  96. data/scenarios/card_delete/ruby.mako +5 -3
  97. data/scenarios/card_hold_capture/definition.rb +1 -0
  98. data/scenarios/card_hold_capture/request.rb +5 -0
  99. data/scenarios/card_hold_capture/ruby.mako +49 -0
  100. data/scenarios/card_hold_create/definition.rb +1 -0
  101. data/scenarios/card_hold_create/request.rb +5 -0
  102. data/scenarios/card_hold_create/ruby.mako +38 -0
  103. data/scenarios/card_hold_list/definition.rb +1 -0
  104. data/scenarios/card_hold_list/request.rb +2 -0
  105. data/scenarios/card_hold_list/ruby.mako +60 -0
  106. data/scenarios/card_hold_show/definition.rb +1 -0
  107. data/scenarios/card_hold_show/request.rb +2 -0
  108. data/scenarios/card_hold_show/ruby.mako +36 -0
  109. data/scenarios/card_hold_update/definition.rb +1 -0
  110. data/scenarios/card_hold_update/request.rb +7 -0
  111. data/scenarios/card_hold_update/ruby.mako +42 -0
  112. data/scenarios/card_hold_void/definition.rb +1 -0
  113. data/scenarios/card_hold_void/request.rb +3 -0
  114. data/scenarios/card_hold_void/ruby.mako +36 -0
  115. data/scenarios/card_list/definition.rb +1 -1
  116. data/scenarios/card_list/request.rb +1 -1
  117. data/scenarios/card_list/ruby.mako +78 -5
  118. data/scenarios/card_show/definition.rb +1 -1
  119. data/scenarios/card_show/request.rb +1 -1
  120. data/scenarios/card_show/ruby.mako +42 -4
  121. data/scenarios/card_update/definition.rb +1 -1
  122. data/scenarios/card_update/request.rb +1 -1
  123. data/scenarios/card_update/ruby.mako +45 -4
  124. data/scenarios/credit_list/request.rb +1 -3
  125. data/scenarios/credit_list/ruby.mako +34 -4
  126. data/scenarios/{credit_bank_account_list → credit_list_bank_account}/definition.rb +0 -0
  127. data/scenarios/credit_list_bank_account/request.rb +3 -0
  128. data/scenarios/credit_list_bank_account/ruby.mako +13 -0
  129. data/scenarios/credit_show/definition.rb +1 -1
  130. data/scenarios/credit_show/request.rb +1 -3
  131. data/scenarios/credit_show/ruby.mako +35 -5
  132. data/scenarios/{credit_create_new_bank_account → credit_update}/definition.rb +0 -0
  133. data/scenarios/credit_update/request.rb +7 -0
  134. data/scenarios/credit_update/ruby.mako +48 -0
  135. data/scenarios/customer_create/request.rb +4 -1
  136. data/scenarios/customer_create/ruby.mako +60 -3
  137. data/scenarios/customer_delete/request.rb +1 -1
  138. data/scenarios/customer_delete/ruby.mako +4 -2
  139. data/scenarios/customer_list/definition.rb +1 -0
  140. data/scenarios/customer_list/request.rb +2 -0
  141. data/scenarios/customer_list/ruby.mako +105 -0
  142. data/scenarios/customer_show/definition.rb +1 -0
  143. data/scenarios/customer_show/request.rb +2 -0
  144. data/scenarios/customer_show/ruby.mako +58 -0
  145. data/scenarios/customer_update/definition.rb +1 -0
  146. data/scenarios/customer_update/request.rb +7 -0
  147. data/scenarios/customer_update/ruby.mako +64 -0
  148. data/scenarios/debit_list/request.rb +1 -3
  149. data/scenarios/debit_list/ruby.mako +70 -4
  150. data/scenarios/debit_show/definition.rb +1 -1
  151. data/scenarios/debit_show/request.rb +1 -1
  152. data/scenarios/debit_show/ruby.mako +39 -4
  153. data/scenarios/debit_update/definition.rb +1 -1
  154. data/scenarios/debit_update/request.rb +1 -1
  155. data/scenarios/debit_update/ruby.mako +39 -4
  156. data/scenarios/event_list/definition.rb +1 -1
  157. data/scenarios/event_list/request.rb +1 -2
  158. data/scenarios/event_list/ruby.mako +54 -5
  159. data/scenarios/event_show/definition.rb +1 -1
  160. data/scenarios/event_show/request.rb +1 -1
  161. data/scenarios/event_show/ruby.mako +54 -4
  162. data/scenarios/helpers.rb +29 -2
  163. data/scenarios/order_create/definition.rb +1 -0
  164. data/scenarios/order_create/request.rb +5 -0
  165. data/scenarios/order_create/ruby.mako +46 -0
  166. data/scenarios/order_list/definition.rb +1 -0
  167. data/scenarios/order_list/request.rb +2 -0
  168. data/scenarios/order_list/ruby.mako +42 -0
  169. data/scenarios/order_show/definition.rb +1 -0
  170. data/scenarios/order_show/request.rb +2 -0
  171. data/scenarios/order_show/ruby.mako +44 -0
  172. data/scenarios/order_update/definition.rb +1 -0
  173. data/scenarios/order_update/request.rb +7 -0
  174. data/scenarios/order_update/ruby.mako +50 -0
  175. data/scenarios/refund_create/definition.rb +1 -1
  176. data/scenarios/refund_create/request.rb +2 -1
  177. data/scenarios/refund_create/ruby.mako +33 -5
  178. data/scenarios/refund_list/request.rb +1 -3
  179. data/scenarios/refund_list/ruby.mako +30 -4
  180. data/scenarios/refund_show/definition.rb +1 -1
  181. data/scenarios/refund_show/request.rb +1 -1
  182. data/scenarios/refund_show/ruby.mako +32 -4
  183. data/scenarios/refund_update/definition.rb +1 -1
  184. data/scenarios/refund_update/request.rb +1 -1
  185. data/scenarios/refund_update/ruby.mako +32 -4
  186. data/scenarios/render_mako.rb +59 -4
  187. data/scenarios/reversal_create/definition.rb +1 -0
  188. data/scenarios/reversal_create/request.rb +9 -0
  189. data/scenarios/reversal_create/ruby.mako +45 -0
  190. data/scenarios/reversal_list/definition.rb +1 -0
  191. data/scenarios/reversal_list/request.rb +2 -0
  192. data/scenarios/reversal_list/ruby.mako +36 -0
  193. data/scenarios/reversal_show/definition.rb +1 -0
  194. data/scenarios/reversal_show/request.rb +2 -0
  195. data/scenarios/reversal_show/ruby.mako +37 -0
  196. data/scenarios/reversal_update/definition.rb +1 -0
  197. data/scenarios/reversal_update/request.rb +7 -0
  198. data/scenarios/reversal_update/ruby.mako +44 -0
  199. data/spec/balanced/error_spec.rb +7 -7
  200. data/spec/balanced/pager_spec.rb +10 -10
  201. data/spec/balanced/resources/api_key_spec.rb +6 -35
  202. data/spec/balanced/resources/bank_account_spec.rb +123 -218
  203. data/spec/balanced/resources/callback_spec.rb +12 -13
  204. data/spec/balanced/resources/card_hold_spec.rb +103 -0
  205. data/spec/balanced/resources/card_spec.rb +101 -27
  206. data/spec/balanced/resources/credit_spec.rb +69 -35
  207. data/spec/balanced/resources/customer_spec.rb +91 -271
  208. data/spec/balanced/resources/debit_spec.rb +95 -0
  209. data/spec/balanced/resources/marketplace_spec.rb +17 -170
  210. data/spec/balanced/resources/order_spec.rb +364 -0
  211. data/spec/balanced/resources/resource_spec.rb +25 -32
  212. data/spec/balanced_spec.rb +18 -36
  213. data/spec/client_spec.rb +7 -7
  214. data/spec/spec_helper.rb +19 -18
  215. data/spec/utils_spec.rb +5 -5
  216. metadata +123 -165
  217. data/examples/bank_account_debits.rb +0 -57
  218. data/examples/customers.rb +0 -114
  219. data/examples/events_and_callbacks.rb +0 -81
  220. data/examples/examples.rb +0 -162
  221. data/examples/exception_handling.rb +0 -44
  222. data/lib/balanced/resources/account.rb +0 -179
  223. data/lib/balanced/resources/hold.rb +0 -61
  224. data/lib/balanced/resources/invoice.rb +0 -11
  225. data/lib/balanced/resources/merchant.rb +0 -21
  226. data/lib/balanced/resources/transaction.rb +0 -17
  227. data/scenarios/account_add_card/definition.rb +0 -1
  228. data/scenarios/account_add_card/request.rb +0 -3
  229. data/scenarios/account_add_card/ruby.mako +0 -11
  230. data/scenarios/account_capture_hold/definition.rb +0 -1
  231. data/scenarios/account_capture_hold/request.rb +0 -3
  232. data/scenarios/account_capture_hold/ruby.mako +0 -11
  233. data/scenarios/account_create/definition.rb +0 -1
  234. data/scenarios/account_create/request.rb +0 -2
  235. data/scenarios/account_create/ruby.mako +0 -10
  236. data/scenarios/account_create_buyer/definition.rb +0 -1
  237. data/scenarios/account_create_buyer/request.rb +0 -5
  238. data/scenarios/account_create_buyer/ruby.mako +0 -13
  239. data/scenarios/account_create_debit/definition.rb +0 -1
  240. data/scenarios/account_create_debit/request.rb +0 -3
  241. data/scenarios/account_create_debit/ruby.mako +0 -11
  242. data/scenarios/account_create_hold/definition.rb +0 -1
  243. data/scenarios/account_create_hold/request.rb +0 -3
  244. data/scenarios/account_create_hold/ruby.mako +0 -11
  245. data/scenarios/account_create_merchant/definition.rb +0 -1
  246. data/scenarios/account_create_merchant/request.rb +0 -3
  247. data/scenarios/account_create_merchant/ruby.mako +0 -11
  248. data/scenarios/account_underwrite_business/definition.rb +0 -1
  249. data/scenarios/account_underwrite_business/request.rb +0 -17
  250. data/scenarios/account_underwrite_business/ruby.mako +0 -37
  251. data/scenarios/account_underwrite_person/definition.rb +0 -1
  252. data/scenarios/account_underwrite_person/request.rb +0 -18
  253. data/scenarios/account_underwrite_person/ruby.mako +0 -31
  254. data/scenarios/bank_account_find_and_credit/definition.rb +0 -1
  255. data/scenarios/bank_account_find_and_credit/request.rb +0 -5
  256. data/scenarios/bank_account_find_and_credit/ruby.mako +0 -13
  257. data/scenarios/bank_account_find_and_delete/definition.rb +0 -1
  258. data/scenarios/bank_account_find_and_delete/request.rb +0 -3
  259. data/scenarios/bank_account_find_and_delete/ruby.mako +0 -10
  260. data/scenarios/bank_account_invalid_routing_number/definition.rb +0 -1
  261. data/scenarios/bank_account_invalid_routing_number/request.rb +0 -11
  262. data/scenarios/bank_account_invalid_routing_number/ruby.mako +0 -16
  263. data/scenarios/card_invalidate/definition.rb +0 -1
  264. data/scenarios/card_invalidate/request.rb +0 -3
  265. data/scenarios/card_invalidate/ruby.mako +0 -10
  266. data/scenarios/credit_account_list/definition.rb +0 -1
  267. data/scenarios/credit_account_list/request.rb +0 -3
  268. data/scenarios/credit_account_list/ruby.mako +0 -10
  269. data/scenarios/credit_account_merchant_create/definition.rb +0 -1
  270. data/scenarios/credit_account_merchant_create/request.rb +0 -5
  271. data/scenarios/credit_account_merchant_create/ruby.mako +0 -12
  272. data/scenarios/credit_bank_account_list/request.rb +0 -5
  273. data/scenarios/credit_bank_account_list/ruby.mako +0 -12
  274. data/scenarios/credit_create_existing_bank_account/request.rb +0 -5
  275. data/scenarios/credit_create_existing_bank_account/ruby.mako +0 -12
  276. data/scenarios/credit_create_new_bank_account/request.rb +0 -10
  277. data/scenarios/credit_create_new_bank_account/ruby.mako +0 -21
  278. data/scenarios/credit_customer_list/definition.rb +0 -1
  279. data/scenarios/credit_customer_list/request.rb +0 -4
  280. data/scenarios/credit_customer_list/ruby.mako +0 -12
  281. data/scenarios/credit_failed_state/definition.rb +0 -1
  282. data/scenarios/credit_failed_state/request.rb +0 -10
  283. data/scenarios/credit_failed_state/ruby.mako +0 -18
  284. data/scenarios/credit_paid_state/definition.rb +0 -1
  285. data/scenarios/credit_paid_state/request.rb +0 -11
  286. data/scenarios/credit_paid_state/ruby.mako +0 -19
  287. data/scenarios/credit_pending_state/definition.rb +0 -1
  288. data/scenarios/credit_pending_state/request.rb +0 -9
  289. data/scenarios/credit_pending_state/ruby.mako +0 -17
  290. data/scenarios/customer_add_bank_account/request.rb +0 -3
  291. data/scenarios/customer_add_bank_account/ruby.mako +0 -11
  292. data/scenarios/customer_add_card/request.rb +0 -3
  293. data/scenarios/customer_add_card/ruby.mako +0 -11
  294. data/scenarios/customer_capture_hold/definition.rb +0 -1
  295. data/scenarios/customer_capture_hold/request.rb +0 -3
  296. data/scenarios/customer_capture_hold/ruby.mako +0 -0
  297. data/scenarios/customer_create_debit/definition.rb +0 -1
  298. data/scenarios/customer_create_debit/request.rb +0 -3
  299. data/scenarios/customer_create_debit/ruby.mako +0 -11
  300. data/scenarios/customer_create_hold/definition.rb +0 -1
  301. data/scenarios/customer_create_hold/request.rb +0 -3
  302. data/scenarios/customer_create_hold/ruby.mako +0 -11
  303. data/scenarios/customer_credit/definition.rb +0 -1
  304. data/scenarios/customer_credit/request.rb +0 -2
  305. data/scenarios/customer_credit/ruby.mako +0 -8
  306. data/scenarios/debit_account_list/definition.rb +0 -1
  307. data/scenarios/debit_account_list/request.rb +0 -3
  308. data/scenarios/debit_account_list/ruby.mako +0 -10
  309. data/scenarios/debit_create/definition.rb +0 -1
  310. data/scenarios/debit_create/request.rb +0 -5
  311. data/scenarios/debit_create/ruby.mako +0 -15
  312. data/scenarios/debit_customer_list/definition.rb +0 -1
  313. data/scenarios/debit_customer_list/request.rb +0 -4
  314. data/scenarios/debit_customer_list/ruby.mako +0 -12
  315. data/scenarios/debit_refund/definition.rb +0 -1
  316. data/scenarios/debit_refund/request.rb +0 -3
  317. data/scenarios/debit_refund/ruby.mako +0 -10
  318. data/scenarios/delete.rb +0 -7
  319. data/scenarios/event_replay/definition.rb +0 -0
  320. data/scenarios/event_replay/request.rb +0 -1
  321. data/scenarios/event_replay/ruby.mako +0 -0
  322. data/scenarios/execute.rb +0 -27
  323. data/scenarios/hold_account_list/definition.rb +0 -1
  324. data/scenarios/hold_account_list/request.rb +0 -3
  325. data/scenarios/hold_account_list/ruby.mako +0 -10
  326. data/scenarios/hold_capture/definition.rb +0 -1
  327. data/scenarios/hold_capture/request.rb +0 -5
  328. data/scenarios/hold_capture/ruby.mako +0 -15
  329. data/scenarios/hold_create/definition.rb +0 -1
  330. data/scenarios/hold_create/request.rb +0 -5
  331. data/scenarios/hold_create/ruby.mako +0 -14
  332. data/scenarios/hold_customer_list/definition.rb +0 -1
  333. data/scenarios/hold_customer_list/request.rb +0 -3
  334. data/scenarios/hold_customer_list/ruby.mako +0 -11
  335. data/scenarios/hold_list/definition.rb +0 -1
  336. data/scenarios/hold_list/request.rb +0 -4
  337. data/scenarios/hold_list/ruby.mako +0 -11
  338. data/scenarios/hold_show/definition.rb +0 -1
  339. data/scenarios/hold_show/request.rb +0 -2
  340. data/scenarios/hold_show/ruby.mako +0 -10
  341. data/scenarios/hold_update/definition.rb +0 -1
  342. data/scenarios/hold_update/request.rb +0 -7
  343. data/scenarios/hold_update/ruby.mako +0 -16
  344. data/scenarios/hold_void/definition.rb +0 -1
  345. data/scenarios/hold_void/request.rb +0 -3
  346. data/scenarios/hold_void/ruby.mako +0 -10
  347. data/scenarios/refund_account_list/definition.rb +0 -1
  348. data/scenarios/refund_account_list/request.rb +0 -3
  349. data/scenarios/refund_account_list/ruby.mako +0 -10
  350. data/scenarios/refund_customer_list/definition.rb +0 -1
  351. data/scenarios/refund_customer_list/request.rb +0 -3
  352. data/scenarios/refund_customer_list/ruby.mako +0 -11
  353. data/scenarios/render.rb +0 -32
  354. data/scenarios/render_one.rb +0 -32
  355. data/spec/balanced/resources/account_spec.rb +0 -636
  356. data/spec/balanced/resources/hold_spec.rb +0 -48
  357. data/spec/balanced/resources/merchant_spec.rb +0 -6
  358. data/spec/scenarios_spec.rb +0 -39
  359. data/upload_docs.rb +0 -40
@@ -0,0 +1 @@
1
+ Balanced::Reversal.all
@@ -0,0 +1,2 @@
1
+ <%= boiler_plate %>
2
+ reversals = Balanced::Reversal.all
@@ -0,0 +1,36 @@
1
+ % if mode == 'definition':
2
+ Balanced::Reversal.all
3
+
4
+ % elif mode == 'request':
5
+ require 'balanced'
6
+ Balanced.configure('ak-test-1kvvievk0Qqw5wQPsrlM9g7wQwNe62cyc')
7
+
8
+ reversals = Balanced::Reversal.all
9
+ % elif mode == 'response':
10
+ [#<Balanced::Reversal:0x007fdc9b129420
11
+ @attributes=
12
+ {"amount"=>3000,
13
+ "created_at"=>"2014-01-27T22:58:21.214829Z",
14
+ "currency"=>"USD",
15
+ "description"=>"Reversal for Order #1111",
16
+ "failure_reason"=>nil,
17
+ "failure_reason_code"=>nil,
18
+ "href"=>"/reversals/RV42n8M9XZWna427oPDDi4RG",
19
+ "id"=>"RV42n8M9XZWna427oPDDi4RG",
20
+ "links"=>{"credit"=>"CR40neytmVG2HDBp1opfF7sY", "order"=>nil},
21
+ "meta"=>
22
+ {"fulfillment.item.condition"=>"OK",
23
+ "merchant.feedback"=>"positive",
24
+ "user.refund_reason"=>"not happy with product"},
25
+ "status"=>"succeeded",
26
+ "transaction_number"=>"RV219-169-0008",
27
+ "updated_at"=>"2014-01-27T22:58:22.190749Z"},
28
+ @hyperlinks=
29
+ {"credit"=>
30
+ #<Proc:0x007fdc9b103c48/lib/balanced/resources/resource.rb:60 (lambda)>,
31
+ "events"=>
32
+ #<Proc:0x007fdc9b0aef68/lib/balanced/utils.rb:6 (lambda)>,
33
+ "order"=>
34
+ #<Proc:0x007fdc9b09f4c8/lib/balanced/utils.rb:6 (lambda)>}>]
35
+
36
+ % endif
@@ -0,0 +1 @@
1
+ Balanced::Reversal.fetch
@@ -0,0 +1,2 @@
1
+ <%= boiler_plate %>
2
+ reversal = Balanced::Reversal.fetch('<%= request['uri'] %>')
@@ -0,0 +1,37 @@
1
+ % if mode == 'definition':
2
+ Balanced::Reversal.fetch
3
+
4
+ % elif mode == 'request':
5
+ require 'balanced'
6
+ Balanced.configure('ak-test-1kvvievk0Qqw5wQPsrlM9g7wQwNe62cyc')
7
+
8
+ reversal = Balanced::Reversal.fetch('/reversals/RV42n8M9XZWna427oPDDi4RG')
9
+
10
+ % elif mode == 'response':
11
+ #<Balanced::Reversal:0x007fdc9b047d18
12
+ @attributes=
13
+ {"amount"=>3000,
14
+ "created_at"=>"2014-01-27T22:58:21.214829Z",
15
+ "currency"=>"USD",
16
+ "description"=>"Reversal for Order #1111",
17
+ "failure_reason"=>nil,
18
+ "failure_reason_code"=>nil,
19
+ "href"=>"/reversals/RV42n8M9XZWna427oPDDi4RG",
20
+ "id"=>"RV42n8M9XZWna427oPDDi4RG",
21
+ "links"=>{"credit"=>"CR40neytmVG2HDBp1opfF7sY", "order"=>nil},
22
+ "meta"=>
23
+ {"fulfillment.item.condition"=>"OK",
24
+ "merchant.feedback"=>"positive",
25
+ "user.refund_reason"=>"not happy with product"},
26
+ "status"=>"succeeded",
27
+ "transaction_number"=>"RV219-169-0008",
28
+ "updated_at"=>"2014-01-27T22:58:22.190749Z"},
29
+ @hyperlinks=
30
+ {"credit"=>
31
+ #<Proc:0x007fdc9b03d2f0/lib/balanced/resources/resource.rb:60 (lambda)>,
32
+ "events"=>
33
+ #<Proc:0x007fdc9b02f510/lib/balanced/utils.rb:6 (lambda)>,
34
+ "order"=>
35
+ #<Proc:0x007fdc9b02efc0/lib/balanced/utils.rb:6 (lambda)>}>
36
+
37
+ % endif
@@ -0,0 +1 @@
1
+ Balanced::Reversal.save
@@ -0,0 +1,7 @@
1
+ <%= boiler_plate %>
2
+ reversal = Balanced::Reversal.fetch('<%= request['uri'] %>')
3
+ reversal.description = '<%= payload['description'] %>'
4
+ reversal.meta = {
5
+ <%= params_to_hash_for_args.call(payload['meta']).indent(2) %>
6
+ }
7
+ reversal.save
@@ -0,0 +1,44 @@
1
+ % if mode == 'definition':
2
+ Balanced::Reversal.save
3
+
4
+ % elif mode == 'request':
5
+ require 'balanced'
6
+ Balanced.configure('ak-test-1kvvievk0Qqw5wQPsrlM9g7wQwNe62cyc')
7
+
8
+ reversal = Balanced::Reversal.fetch('/reversals/RV42n8M9XZWna427oPDDi4RG')
9
+ reversal.description = 'update this description'
10
+ reversal.meta = {
11
+ 'refund.reason' => 'user not happy with product',
12
+ 'user.notes' => 'very polite on the phone',
13
+ 'user.satisfaction' => '6'
14
+ }
15
+ reversal.save
16
+
17
+ % elif mode == 'response':
18
+ #<Balanced::Reversal:0x007fdc9e82cd50
19
+ @attributes=
20
+ {"amount"=>3000,
21
+ "created_at"=>"2014-01-27T22:58:21.214829Z",
22
+ "currency"=>"USD",
23
+ "description"=>"update this description",
24
+ "failure_reason"=>nil,
25
+ "failure_reason_code"=>nil,
26
+ "href"=>"/reversals/RV42n8M9XZWna427oPDDi4RG",
27
+ "id"=>"RV42n8M9XZWna427oPDDi4RG",
28
+ "links"=>{"credit"=>"CR40neytmVG2HDBp1opfF7sY", "order"=>nil},
29
+ "meta"=>
30
+ {"refund.reason"=>"user not happy with product",
31
+ "user.notes"=>"very polite on the phone",
32
+ "user.satisfaction"=>"6"},
33
+ "status"=>"succeeded",
34
+ "transaction_number"=>"RV219-169-0008",
35
+ "updated_at"=>"2014-01-27T22:58:27.354488Z"},
36
+ @hyperlinks=
37
+ {"credit"=>
38
+ #<Proc:0x007fdc9e827440/lib/balanced/resources/resource.rb:60 (lambda)>,
39
+ "events"=>
40
+ #<Proc:0x007fdc9e825078/lib/balanced/utils.rb:6 (lambda)>,
41
+ "order"=>
42
+ #<Proc:0x007fdc9e8245b0/lib/balanced/utils.rb:6 (lambda)>}>
43
+
44
+ % endif
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Balanced::Error, '#response' do
4
- it "sets the response in the initializer" do
4
+ it 'sets the response in the initializer' do
5
5
  response = {:status => 200}
6
6
  Balanced::Error.new(response).response.should == response
7
7
  end
@@ -14,13 +14,13 @@ describe Balanced::Error, '#body' do
14
14
  error.body.should == response[:body]
15
15
  end
16
16
 
17
- it "defaults to an empty hash when no body is passed" do
17
+ it 'defaults to an empty hash when no body is passed' do
18
18
  Balanced::Error.new({}).body.should == {}
19
19
  end
20
20
 
21
- describe "generating methods from response keys" do
21
+ describe 'generating methods from response keys' do
22
22
  before do
23
- response = {:body => {:foo => 'bar'}}
23
+ response = {:body => {:errors => [{:foo => 'bar'}]}}
24
24
  @error = Balanced::Error.new(response)
25
25
  end
26
26
 
@@ -44,13 +44,13 @@ describe Balanced::StandardError do
44
44
  end
45
45
 
46
46
  describe Balanced::UnassociatedCardError do
47
- let(:card) { Balanced::Card.new(:uri => '/v1/marketplaces/123/cards/235') }
47
+ let(:card) { Balanced::Card.new(:href => '/v1/marketplaces/123/cards/235') }
48
48
 
49
49
  subject do
50
50
  Balanced::UnassociatedCardError.new(card)
51
51
  end
52
52
 
53
53
  its(:message) do
54
- should == "The Balanced::Card with uri=#{card.attributes['uri']} is not associated to an account"
54
+ should == "The Balanced::Card with uri=#{card.attributes['uri']} is not associated to a customer"
55
55
  end
56
- end
56
+ end
@@ -1,40 +1,40 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe Balanced::Pager do
4
- describe "#adjust_pagination_params" do
5
- subject { Balanced::Pager.new 'a uri'}
4
+ describe '#adjust_pagination_params' do
5
+ subject { Balanced::Pager.new 'a uri' }
6
6
 
7
- it "sets limit based on per" do
7
+ it 'sets limit based on per' do
8
8
  params = subject.send(:adjust_pagination_params, :per => 5)
9
9
  params[:limit].should == 5
10
10
  end
11
11
 
12
- it "sets offset based on page and default limit" do
12
+ it 'sets offset based on page and default limit' do
13
13
  params = subject.send(:adjust_pagination_params, :page => 2)
14
14
  params[:offset].should == 10
15
15
  end
16
16
 
17
- it "sets offset based on page and per" do
17
+ it 'sets offset based on page and per' do
18
18
  params = subject.send(:adjust_pagination_params, :page => 2, :per => 4)
19
19
  params[:offset].should == 4
20
20
  end
21
21
 
22
- it "prefers per to limit" do
22
+ it 'prefers per to limit' do
23
23
  params = subject.send(:adjust_pagination_params, :per => 5, :limit => 10)
24
24
  params[:limit].should == 5
25
25
  end
26
26
 
27
- it "falls back to limit" do
27
+ it 'falls back to limit' do
28
28
  params = subject.send(:adjust_pagination_params, :limit => 3)
29
29
  params[:limit].should == 3
30
30
  end
31
31
 
32
- it "prefers page to offset" do
32
+ it 'prefers page to offset' do
33
33
  params = subject.send(:adjust_pagination_params, :page => 2, :offset => 0)
34
34
  params[:offset].should == 10
35
35
  end
36
36
 
37
- it "falls back to offset" do
37
+ it 'falls back to offset' do
38
38
  params = subject.send(:adjust_pagination_params, :offset => 6)
39
39
  params[:offset].should == 6
40
40
  end
@@ -1,48 +1,19 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe Balanced::ApiKey do
4
- describe "attributes", :vcr do
4
+
5
+ describe 'attributes', :vcr do
6
+
5
7
  before do
6
8
  @key = Balanced::ApiKey.new.save
7
9
  end
8
- describe "#secret" do
10
+
11
+ describe '#secret' do
9
12
  subject { @key.secret }
10
13
  it { should_not be_nil }
11
14
  it { should_not be_empty }
12
15
  end
13
16
 
14
- describe "#merchant" do
15
- subject { @key.merchant }
16
- it { should_not be_nil }
17
- it { should be_instance_of Balanced::Merchant }
18
- end
19
17
  end
20
18
 
21
- describe "new key", :vcr do
22
- describe "before configure", :vcr do
23
- before do
24
- @new_key = Balanced::ApiKey.new.save
25
- end
26
- describe "#merchant", :vcr do
27
- subject { @new_key.merchant }
28
- it { should_not be_nil }
29
- it { should be_instance_of Balanced::Merchant }
30
- end
31
- end
32
-
33
- describe "after configure", :vcr do
34
- before do
35
- @new_key = Balanced::ApiKey.new.save
36
- Balanced.configure @new_key.secret
37
- @new_key = Balanced::ApiKey.new.save
38
- end
39
-
40
- describe "#merchant", :vcr do
41
- subject { @new_key.merchant }
42
- it { should_not be_nil }
43
- it { should be_instance_of Balanced::Merchant }
44
- end
45
- end
46
-
47
- end
48
19
  end
@@ -1,252 +1,157 @@
1
- require "spec_helper"
2
-
3
- describe Balanced::BankAccount, :vcr do
4
- before do
5
- api_key = Balanced::ApiKey.new.save
6
- Balanced.configure api_key.secret
7
-
8
- @marketplace = Balanced::Marketplace.new.save
9
- card = @marketplace.create_card(
10
- :card_number => "5105105105105100",
11
- :expiration_month => "12",
12
- :expiration_year => "2015"
13
- )
14
- # An initial balance for the marketplace
15
- @buyer = @marketplace.create_buyer(
16
- :email_address => 'buyer@example.org',
17
- :card_uri => card.uri
18
- )
19
- @buyer.debit :amount => 10000000
20
-
21
- @incomplete_bank_account_hash = {
22
- :account_number => "0987654321",
23
- :bank_code => "321174851",
24
- :name => "Timmy T. McTimmerson"
1
+ require 'spec_helper'
2
+
3
+ describe Balanced::BankAccount, :vcr => true, :marketplace => true do
4
+
5
+ context 'after successful creation' do
6
+ subject(:bank_account) {
7
+ Balanced::BankAccount.new(
8
+ :name => 'William Henry Cavendish III',
9
+ :routing_number => '321174851',
10
+ :account_number => '0987654321',
11
+ :type => 'checking'
12
+ ).save
25
13
  }
14
+ its(:id) { subject.id.should_not be_nil }
15
+ its(:href) { subject.href.should eq("/bank_accounts/#{subject.id}") }
16
+ its(:account_type) { should eq('checking') }
17
+ its(:routing_number) { should eq('321174851') }
18
+ its(:account_number) { should end_with('4321') }
19
+ its(:name) { should eq('William Henry Cavendish III') }
20
+ its(:fingerprint) { should_not be_nil }
21
+ its(:customer) { should be_nil }
26
22
  end
27
23
 
28
- describe 'when exception is thrown', :vcr do
29
- it 'should not create without a type field' do
24
+ context 'create invalid' do
25
+ it 'should not create without a routing_number field' do
30
26
  lambda { Balanced::BankAccount.new(
31
- :account_number => "0987654321",
32
- :bank_code => "321174851",
33
- :name => "Timmy T. McTimmerson"
27
+ :account_number => '0987654321',
28
+ :name => 'Timmy T. McTimmerson',
29
+ :type => 'checking'
34
30
  ).save }.should raise_error(Balanced::BadRequest)
35
31
  end
36
- end
37
32
 
38
- describe 'create', :vcr do
39
- before do
40
- @bank_account = @marketplace.create_bank_account(
41
- :account_number => "0987654321",
42
- :bank_code => "321174851",
43
- :name => "Timmy T. McTimmerson",
44
- :type => "checking"
45
- )
33
+ it 'should not create without a account_number field' do
34
+ lambda { Balanced::BankAccount.new(
35
+ :routing_number => '321174851',
36
+ :name => 'Timmy T. McTimmerson',
37
+ :type => 'checking'
38
+ ).save }.should raise_error(Balanced::BadRequest)
46
39
  end
47
40
 
48
- context 'without an account' do
49
-
50
- subject { @bank_account.account }
51
- it { should be_nil }
52
-
53
- describe 'has_account?' do
54
-
55
- subject { @bank_account.has_account? }
56
- it { should be_false }
57
-
58
- end
41
+ it 'should not create without a type field' do
42
+ lambda { Balanced::BankAccount.new(
43
+ :account_number => '0987654321',
44
+ :bank_code => '321174851',
45
+ :name => 'Timmy T. McTimmerson'
46
+ ).save }.should raise_error(Balanced::BadRequest)
59
47
  end
48
+ end
60
49
 
61
- context 'with an account', :vcr do
62
- before do
63
- @account = @marketplace.create_account
64
- bank_account = @marketplace.create_bank_account(
65
- :account_number => "0987654321",
66
- :bank_code => "321174851",
67
- :name => "Timmy T. McTimmerson",
68
- :type => "checking"
69
- )
70
- @account.add_bank_account(bank_account.uri)
71
- @bank_account_two = bank_account.reload
72
- end
73
-
74
- describe 'has_account?' do
75
- subject { @bank_account_two.has_account? }
76
- it { should be_true }
77
- end
78
-
50
+ context 'successful verification' do
51
+ subject(:verification) do
52
+ @bank_account = Balanced::BankAccount.new(
53
+ :name => 'William Henry Cavendish III',
54
+ :routing_number => '321174851',
55
+ :account_number => '0987654321',
56
+ :type => 'checking'
57
+ ).save
58
+ @verification = @bank_account.verify
79
59
  end
80
60
 
81
- describe 'account_number', :vcr do
82
- subject { @bank_account.account_number }
83
- it { should end_with '4321' }
61
+ it 'verification#attributes' do
62
+ subject.bank_account.href.should eql(@bank_account.href)
63
+ subject.attempts_remaining.should eql(3)
64
+ subject.verification_status.should eql('pending')
84
65
  end
85
66
 
86
- describe 'fingerprint', :vcr do
87
- subject { @bank_account.fingerprint }
88
- it { should have_at_least(20).characters }
67
+ it 'confirmation#attributes' do
68
+ confirmation = subject.confirm(1, 1)
69
+ confirmation.bank_account.href.should eql(subject.bank_account.href)
70
+ subject.attempts_remaining.should eql(2)
71
+ subject.verification_status.should eql('succeeded')
89
72
  end
90
73
 
91
- describe 'does not invalidate on save', :vcr do
92
- before do
93
- @bank_account = @marketplace.create_bank_account(
94
- :account_number => "0987654321",
95
- :bank_code => "321174851",
96
- :name => "Timmy T. McTimmerson",
97
- :type => "checking"
98
- )
99
- @account = @marketplace.create_account
100
- @account.add_bank_account(@bank_account.uri)
101
- @bank_account = @account.bank_accounts[0]
102
- @bank_account.save
103
- end
104
-
105
- subject { @bank_account.is_valid }
106
- it { should be_true }
74
+ it 'successfully debits' do
75
+ subject.confirm(1, 1)
76
+ subject.verification_status.should eql('succeeded')
77
+ debit = subject.bank_account.debit(:amount => 1000)
78
+ debit.status.should eql('succeeded')
107
79
  end
108
80
 
109
- describe 'credit', :vcr do
110
- before do
111
- @credit = @bank_account.credit(
112
- :amount => 50,
113
- :description => 'Blah'
114
- )
115
- end
116
-
117
- describe 'bank_account' do
118
- subject { @credit.bank_account }
119
- its(:account_number) { should end_with '4321' }
120
- its(:routing_number) { should eql '321174851' }
121
- end
122
-
123
- describe 'without an account', :vcr do
124
- before do
125
- @bank_account = @marketplace.create_bank_account(
126
- :account_number => "1234567890111",
127
- :bank_code => "021000021",
128
- :name => "Timmy T. McTimmerson",
129
- :type => "checking"
130
- )
131
- end
132
-
133
- describe 'with appears_on_statement_as', :vcr do
134
- before do
135
- @credit = @bank_account.credit(:amount => 1000, :description => "Testing", :appears_on_statement_as => "Test Company")
136
- end
137
-
138
- subject { @credit }
139
- its(:appears_on_statement_as) { should eql 'Test Company' }
140
- end
141
- end
142
-
143
- describe 'with an account', :vcr do
144
- before do
145
- @bank_account = @marketplace.create_bank_account(
146
- :account_number => "1234567890111",
147
- :bank_code => "021000021",
148
- :name => "Timmy T. McTimmerson",
149
- :type => "checking"
150
- )
151
- @account = @marketplace.create_account
152
- @account.add_bank_account(@bank_account.uri)
153
- @bank_account.reload
154
- end
155
-
156
- describe 'with appears_on_statement_as', :vcr do
157
- before do
158
- @credit = @bank_account.credit(
159
- :amount => 1000,
160
- :description => "Blahblahblah",
161
- :appears_on_statement_as => "Test Company"
162
- )
163
- end
164
-
165
- subject { @credit }
166
- it { should respond_to :account }
167
- it { should be_instance_of Balanced::Credit }
168
- its(:appears_on_statement_as) { should eql 'Test Company' }
169
- end
170
-
171
- describe 'without appears_on_statement_as', :vcr do
172
- before do
173
- @credit = @bank_account.credit(
174
- :amount => 1000,
175
- :description => "Testing"
176
- )
177
- end
178
-
179
- subject { @credit }
180
- it { should respond_to :account }
181
- it { should be_instance_of Balanced::Credit }
182
- its(:appears_on_statement_as) { should eql 'example.com' }
183
- end
184
- end
185
- end
186
81
  end
187
82
 
188
- describe 'verification' do
189
-
190
- describe 'cannot debit when unverified', :vcr do
191
- before do
192
- @bank_account = @marketplace.create_bank_account(
193
- :account_number => "0987654321",
194
- :bank_code => "321174851",
195
- :name => "Timmy T. McTimmerson",
196
- :type => "checking"
197
- )
198
- @account = @marketplace.create_account
199
- @account.add_bank_account(@bank_account.uri)
200
- end
201
-
202
- it do
203
- lambda {
204
- @account.debit(:amount => 100)
205
- }.should raise_error(Balanced::Conflict)
206
- end
83
+ context 'fails' do
84
+ before do
85
+ @bank_account = Balanced::BankAccount.new(
86
+ :name => 'Karl Malone',
87
+ :routing_number => '021000021',
88
+ :account_number => '9900000002',
89
+ :type => 'checking'
90
+ ).save
91
+ @verification = @bank_account.verify
207
92
  end
208
93
 
209
- describe 'debits when verified', :vcr do
210
- before do
211
- @bank_account = @marketplace.create_bank_account(
212
- :account_number => "0987654321",
213
- :bank_code => "321174851",
214
- :name => "Timmy T. McTimmerson",
215
- :type => "checking"
216
- )
217
- @account = @marketplace.create_account
218
- @account.add_bank_account(@bank_account.uri)
94
+ it 'throws error on invalid amounts' do
95
+ 3.times do
96
+ expect {
97
+ @verification.confirm(2, 3)
98
+ }.to raise_error(Balanced::BankAccountVerificationFailure) { |exc|
99
+ expect(exc.description).to start_with 'Authentication amounts do not match'
100
+ }
219
101
  end
102
+ end
220
103
 
221
- it do
104
+ it 'fails to debit' do
105
+ expect {
106
+ @verification.confirm(2, 3)
107
+ }.to raise_error(Balanced::BankAccountVerificationFailure) { |exc|
108
+ expect(exc.description).to start_with 'Authentication amounts do not match'
109
+ }
110
+ expect {
111
+ @bank_account.debit(:amount => 1000)
112
+ }.to raise_exception(Balanced::Conflict) { |exc|
113
+ expect(exc.description).to start_with 'Funding instrument cannot be debited'
114
+ }
115
+ end
222
116
 
223
- authentication = @bank_account.verify
224
- authentication.confirm(1, 1)
117
+ end
225
118
 
226
- @account.debit(:amount => 100)
227
- end
119
+ describe '#debit' do
120
+ before do
121
+ @bank_account = Balanced::BankAccount.new(
122
+ :name => 'William Henry Cavendish III',
123
+ :routing_number => '321174851',
124
+ :account_number => '0987654321',
125
+ :type => 'checking'
126
+ ).save
127
+ @verification = @bank_account.verify
128
+ @verification.confirm(1, 1)
228
129
  end
229
130
 
230
- describe 'errors when incorrectly verified', :vcr do
231
- before do
232
- @bank_account = @marketplace.create_bank_account(
233
- :account_number => "0987654321",
234
- :bank_code => "321174851",
235
- :name => "Timmy T. McTimmerson",
236
- :type => "checking"
237
- )
238
- @account = @marketplace.create_account
239
- @account.add_bank_account(@bank_account.uri)
240
- end
241
-
242
- it do
131
+ it 'succeeds' do
132
+ debit = @bank_account.debit(:amount => 1000)
133
+ debit.status.should eql('succeeded')
134
+ end
135
+ end
243
136
 
244
- authentication = @bank_account.verify
137
+ describe '#credit' do
138
+ before do
139
+ @bank_account = Balanced::BankAccount.new(
140
+ :name => 'William Henry Cavendish III',
141
+ :routing_number => '321174851',
142
+ :account_number => '0987654321',
143
+ :type => 'checking'
144
+ ).save
145
+ end
245
146
 
246
- lambda {
247
- authentication.confirm(1, 2)
248
- }.should raise_error(Balanced::BankAccountVerificationFailure)
249
- end
147
+ it 'succeeds', :vcr => {:record => :new_episodes} do
148
+ before = Balanced::Marketplace.mine.in_escrow
149
+ @credit = @bank_account.credit(:amount => 1000)
150
+ @credit.should be_instance_of Balanced::Credit
151
+ @credit.status.should eql('succeeded')
152
+ @credit.destination.href.should eql(@bank_account.href)
153
+ after = Balanced::Marketplace.mine.in_escrow
154
+ after.should eql(before - @credit.amount)
250
155
  end
251
156
  end
252
157
  end