fat_zebra 3.0.11 → 3.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +3 -5
  4. data/.travis.yml +3 -3
  5. data/README.md +5 -5
  6. data/fat_zebra.gemspec +5 -7
  7. data/lib/fat_zebra.rb +8 -0
  8. data/lib/fat_zebra/api_operation/search.rb +1 -1
  9. data/lib/fat_zebra/authenticate.rb +64 -0
  10. data/lib/fat_zebra/card.rb +1 -0
  11. data/lib/fat_zebra/direct_credit.rb +1 -1
  12. data/lib/fat_zebra/direct_debit.rb +1 -1
  13. data/lib/fat_zebra/paypal/authorization.rb +49 -0
  14. data/lib/fat_zebra/paypal/billing_agreement.rb +56 -0
  15. data/lib/fat_zebra/paypal/capture.rb +36 -0
  16. data/lib/fat_zebra/paypal/order.rb +22 -0
  17. data/lib/fat_zebra/paypal/refund.rb +22 -0
  18. data/lib/fat_zebra/refund.rb +4 -0
  19. data/lib/fat_zebra/util.rb +1 -1
  20. data/lib/fat_zebra/validation.rb +4 -0
  21. data/lib/fat_zebra/version.rb +1 -1
  22. data/spec/cassettes/FatZebra_Authenticate/_authenticate/validations/1_3_5_1.yml +46 -0
  23. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_1.yml +90 -0
  24. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_2.yml +90 -0
  25. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_1.yml +90 -0
  26. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_2.yml +90 -0
  27. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_1.yml +90 -0
  28. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_2.yml +87 -0
  29. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_3.yml +92 -0
  30. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_4.yml +91 -0
  31. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_type_validation/1_3_4_1.yml +46 -0
  32. data/spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_invalid/returns_error_when_invalid_token.yml +47 -0
  33. data/spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_valid/decodes_JWT.yml +87 -0
  34. data/spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_given_params.yml +44 -0
  35. data/spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_no_amount.yml +44 -0
  36. data/spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_amount_is_invalid.yml +44 -0
  37. data/spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_currency_is_invalid.yml +46 -0
  38. data/spec/cassettes/FatZebra_BankAccount/_create/1_1_1.yml +8 -14
  39. data/spec/cassettes/FatZebra_BankAccount/_create/1_1_2.yml +8 -14
  40. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_1.yml +34 -52
  41. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_2.yml +34 -52
  42. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_3.yml +34 -52
  43. data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_1.yml +11 -17
  44. data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_2.yml +11 -17
  45. data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_1.yml +11 -17
  46. data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_2.yml +11 -17
  47. data/spec/cassettes/FatZebra_Batch/_find/1_2_1.yml +19 -31
  48. data/spec/cassettes/FatZebra_Batch/_find/1_2_2.yml +19 -31
  49. data/spec/cassettes/FatZebra_Batch/_result/1_4_1.yml +26 -44
  50. data/spec/cassettes/FatZebra_Batch/_search/1_3_1.yml +8 -14
  51. data/spec/cassettes/FatZebra_Batch/_search/1_3_2.yml +8 -14
  52. data/spec/cassettes/FatZebra_Batch/_search/1_3_3.yml +8 -14
  53. data/spec/cassettes/FatZebra_Card/_create/1_1_1.yml +7 -13
  54. data/spec/cassettes/FatZebra_Card/_create/1_1_2.yml +7 -13
  55. data/spec/cassettes/FatZebra_Card/_create/1_1_3.yml +7 -13
  56. data/spec/cassettes/FatZebra_Card/_create/1_1_4.yml +7 -13
  57. data/spec/cassettes/FatZebra_Card/_create/1_1_5.yml +7 -13
  58. data/spec/cassettes/FatZebra_Card/_create/1_1_6.yml +7 -13
  59. data/spec/cassettes/FatZebra_Card/_find/1_3_1.yml +111 -0
  60. data/spec/cassettes/FatZebra_Card/_find/1_3_2.yml +111 -0
  61. data/spec/cassettes/FatZebra_Card/_update/1_2_1.yml +15 -27
  62. data/spec/cassettes/FatZebra_Card/_update/1_2_2.yml +15 -27
  63. data/spec/cassettes/FatZebra_Card/_update/1_2_3.yml +15 -27
  64. data/spec/cassettes/FatZebra_Card/_update/validations/1_2_4_1.yml +7 -13
  65. data/spec/cassettes/FatZebra_Customer/_create/1_1_1.yml +9 -15
  66. data/spec/cassettes/FatZebra_Customer/_create/1_1_2.yml +9 -15
  67. data/spec/cassettes/FatZebra_Customer/_create/1_1_3.yml +9 -15
  68. data/spec/cassettes/FatZebra_Customer/_create/1_1_4.yml +9 -15
  69. data/spec/cassettes/FatZebra_Customer/_create/1_1_5.yml +9 -15
  70. data/spec/cassettes/FatZebra_Customer/_create/1_1_6.yml +9 -15
  71. data/spec/cassettes/FatZebra_Customer/_delete/1_5_1.yml +18 -30
  72. data/spec/cassettes/FatZebra_Customer/_find/1_3_1.yml +18 -30
  73. data/spec/cassettes/FatZebra_Customer/_find/1_3_2.yml +18 -30
  74. data/spec/cassettes/FatZebra_Customer/_search/1_2_1.yml +14 -24
  75. data/spec/cassettes/FatZebra_Customer/_search/1_2_2.yml +14 -24
  76. data/spec/cassettes/FatZebra_Customer/_search/1_2_3.yml +14 -24
  77. data/spec/cassettes/FatZebra_Customer/_update/1_4_1.yml +19 -31
  78. data/spec/cassettes/FatZebra_Customer/_update/1_4_2.yml +19 -31
  79. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_1.yml +8 -14
  80. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_2.yml +8 -14
  81. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_3.yml +8 -14
  82. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_4.yml +8 -14
  83. data/spec/cassettes/FatZebra_DirectCredit/_create/validations/valid/1_1_5_1_1.yml +7 -13
  84. data/spec/cassettes/FatZebra_DirectCredit/_delete/1_4_1.yml +16 -28
  85. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_1.yml +16 -28
  86. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_2.yml +16 -28
  87. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_3.yml +103 -0
  88. data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_1.yml +24 -42
  89. data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_2.yml +24 -42
  90. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_1.yml +8 -14
  91. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_2.yml +8 -14
  92. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_3.yml +8 -14
  93. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_4.yml +8 -14
  94. data/spec/cassettes/FatZebra_DirectDebit/_create/validations/valid/1_1_5_1_1.yml +7 -13
  95. data/spec/cassettes/FatZebra_DirectDebit/_delete/1_4_1.yml +16 -28
  96. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_1.yml +16 -28
  97. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_2.yml +16 -28
  98. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_3.yml +103 -0
  99. data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_1.yml +24 -42
  100. data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_2.yml +24 -42
  101. data/spec/cassettes/FatZebra_Information/_ping/1_1_1.yml +7 -13
  102. data/spec/cassettes/FatZebra_Information/_ping/1_1_2.yml +7 -13
  103. data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_1.yml +52 -76
  104. data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_2.yml +52 -76
  105. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_1.yml +22 -34
  106. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_2.yml +22 -34
  107. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_3.yml +22 -34
  108. data/spec/cassettes/FatZebra_PaymentPlan/_delete/1_5_1.yml +31 -49
  109. data/spec/cassettes/FatZebra_PaymentPlan/_destroy/1_6_1.yml +31 -49
  110. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_1.yml +35 -53
  111. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_2.yml +35 -53
  112. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_3.yml +35 -53
  113. data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_1.yml +37 -55
  114. data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_2.yml +37 -55
  115. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_1.yml +31 -49
  116. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_2.yml +31 -49
  117. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_3.yml +31 -49
  118. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_1.yml +37 -55
  119. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_2.yml +37 -55
  120. data/spec/cassettes/FatZebra_Paypal_Authorization/_capture/returns_a_new_capture_record.yml +45 -0
  121. data/spec/cassettes/FatZebra_Paypal_Authorization/_find/when_found/returns_authorization.yml +46 -0
  122. data/spec/cassettes/FatZebra_Paypal_Authorization/_search/with_date_filter/returns_records_created_after_start_date.yml +46 -0
  123. data/spec/cassettes/FatZebra_Paypal_Authorization/_void/returns_a_voided_capture_record.yml +44 -0
  124. data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_charge/Valid_payload/returns_a_new_order_record.yml +48 -0
  125. data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_find/when_found/returns_billing_agreement.yml +48 -0
  126. data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_search/with_date_filter/returns_records_created_after_start_date.yml +48 -0
  127. data/spec/cassettes/FatZebra_Paypal_Capture/_find/when_found/returns_capture.yml +47 -0
  128. data/spec/cassettes/FatZebra_Paypal_Capture/_refund/returns_a_new_refund_record.yml +45 -0
  129. data/spec/cassettes/FatZebra_Paypal_Capture/_search/with_date_filter/returns_records_created_after_start_date.yml +49 -0
  130. data/spec/cassettes/FatZebra_Paypal_Order/_find/when_found/returns_order.yml +48 -0
  131. data/spec/cassettes/FatZebra_Paypal_Order/_search/with_date_filter/returns_orders_created_after_start_date.yml +55 -0
  132. data/spec/cassettes/FatZebra_Paypal_Refund/_find/when_found/returns_refund.yml +47 -0
  133. data/spec/cassettes/FatZebra_Paypal_Refund/_search/with_date_filter/returns_all_refund_records_created_after_start_date.yml +50 -0
  134. data/spec/cassettes/FatZebra_Purchase/_create/1_1_1.yml +9 -15
  135. data/spec/cassettes/FatZebra_Purchase/_create/1_1_10.yml +9 -15
  136. data/spec/cassettes/FatZebra_Purchase/_create/1_1_11.yml +9 -15
  137. data/spec/cassettes/FatZebra_Purchase/_create/1_1_12.yml +9 -15
  138. data/spec/cassettes/FatZebra_Purchase/_create/1_1_13.yml +9 -15
  139. data/spec/cassettes/FatZebra_Purchase/_create/1_1_2.yml +9 -15
  140. data/spec/cassettes/FatZebra_Purchase/_create/1_1_3.yml +9 -15
  141. data/spec/cassettes/FatZebra_Purchase/_create/1_1_4.yml +9 -15
  142. data/spec/cassettes/FatZebra_Purchase/_create/1_1_5.yml +9 -15
  143. data/spec/cassettes/FatZebra_Purchase/_create/1_1_6.yml +9 -15
  144. data/spec/cassettes/FatZebra_Purchase/_create/1_1_7.yml +9 -15
  145. data/spec/cassettes/FatZebra_Purchase/_create/1_1_8.yml +9 -15
  146. data/spec/cassettes/FatZebra_Purchase/_create/1_1_9.yml +9 -15
  147. data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_1.yml +11 -17
  148. data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_2.yml +11 -17
  149. data/spec/cassettes/FatZebra_Purchase/_search/1_3_1.yml +36 -54
  150. data/spec/cassettes/FatZebra_Purchase/_search/1_3_2.yml +36 -54
  151. data/spec/cassettes/FatZebra_Purchase/_search/1_3_3.yml +36 -54
  152. data/spec/cassettes/FatZebra_Purchase/_void/1_6_1.yml +18 -30
  153. data/spec/cassettes/FatZebra_Purchase/_void/1_6_2.yml +18 -30
  154. data/spec/cassettes/FatZebra_Purchase/_void/1_6_3.yml +18 -30
  155. data/spec/cassettes/FatZebra_Purchase/_void/1_6_4.yml +18 -30
  156. data/spec/cassettes/FatZebra_Purchase/_void/1_7_1.yml +18 -30
  157. data/spec/cassettes/FatZebra_Purchase/_void/1_7_2.yml +18 -30
  158. data/spec/cassettes/FatZebra_Purchase/_void/1_7_3.yml +18 -30
  159. data/spec/cassettes/FatZebra_Purchase/_void/1_7_4.yml +18 -30
  160. data/spec/cassettes/FatZebra_Refund/_create/1_1_1.yml +18 -30
  161. data/spec/cassettes/FatZebra_Refund/_create/1_1_10.yml +18 -30
  162. data/spec/cassettes/FatZebra_Refund/_create/1_1_2.yml +18 -30
  163. data/spec/cassettes/FatZebra_Refund/_create/1_1_3.yml +18 -30
  164. data/spec/cassettes/FatZebra_Refund/_create/1_1_4.yml +18 -30
  165. data/spec/cassettes/FatZebra_Refund/_create/1_1_5.yml +18 -30
  166. data/spec/cassettes/FatZebra_Refund/_create/1_1_6.yml +18 -30
  167. data/spec/cassettes/FatZebra_Refund/_create/1_1_7.yml +18 -30
  168. data/spec/cassettes/FatZebra_Refund/_create/1_1_8.yml +18 -30
  169. data/spec/cassettes/FatZebra_Refund/_create/1_1_9.yml +18 -30
  170. data/spec/cassettes/FatZebra_Refund/_find/1_2_1.yml +27 -45
  171. data/spec/cassettes/FatZebra_Refund/_find/1_2_2.yml +27 -45
  172. data/spec/cassettes/FatZebra_Refund/_find/1_2_3.yml +27 -45
  173. data/spec/cassettes/FatZebra_Refund/_search/responds_with_the_newly-created_refunds.yml +214 -0
  174. data/spec/cassettes/FatZebra_Refund/_void/1_4_1.yml +27 -45
  175. data/spec/cassettes/FatZebra_Refund/_void/1_4_2.yml +27 -45
  176. data/spec/cassettes/FatZebra_Refund/_void/1_4_3.yml +27 -45
  177. data/spec/cassettes/FatZebra_Refund/_void/1_4_4.yml +27 -45
  178. data/spec/cassettes/FatZebra_WebHook/_create/1_1_1.yml +7 -13
  179. data/spec/cassettes/FatZebra_WebHook/_create/1_1_2.yml +7 -13
  180. data/spec/cassettes/FatZebra_WebHook/_create/1_1_3.yml +7 -13
  181. data/spec/cassettes/FatZebra_WebHook/_delete/1_4_1.yml +15 -27
  182. data/spec/cassettes/FatZebra_WebHook/_search/1_2_1.yml +115 -43
  183. data/spec/cassettes/FatZebra_WebHook/_search/1_2_2.yml +115 -43
  184. data/spec/cassettes/FatZebra_WebHook/_update/1_3_1.yml +15 -27
  185. data/spec/cassettes/FatZebra_WebHook/_update/1_3_2.yml +15 -27
  186. data/spec/lib/fat_zebra/authenticate_spec.rb +187 -0
  187. data/spec/lib/fat_zebra/card_spec.rb +8 -0
  188. data/spec/lib/fat_zebra/direct_credit_spec.rb +14 -1
  189. data/spec/lib/fat_zebra/direct_debit_spec.rb +14 -1
  190. data/spec/lib/fat_zebra/payment_plan_spec.rb +1 -1
  191. data/spec/lib/fat_zebra/paypal/authorization_spec.rb +79 -0
  192. data/spec/lib/fat_zebra/paypal/billing_agreement_spec.rb +62 -0
  193. data/spec/lib/fat_zebra/paypal/capture_spec.rb +60 -0
  194. data/spec/lib/fat_zebra/paypal/order_spec.rb +35 -0
  195. data/spec/lib/fat_zebra/paypal/refund_spec.rb +36 -0
  196. data/spec/lib/fat_zebra/purchase_spec.rb +3 -3
  197. data/spec/lib/fat_zebra/refund_spec.rb +37 -17
  198. data/spec/spec_helper.rb +0 -1
  199. data/spec/support/payloads.rb +135 -0
  200. metadata +59 -15
  201. data/spec/cassettes/FatZebra_Refund/_search/1_3_1.yml +0 -295
  202. data/spec/cassettes/FatZebra_Refund/_search/1_3_2.yml +0 -295
@@ -38,4 +38,12 @@ describe FatZebra::Card do
38
38
  end
39
39
  end
40
40
 
41
+ describe '.find', :vcr do
42
+ let(:create) { FatZebra::Card.create(valid_credit_card_payload) }
43
+ subject(:card) { FatZebra::Card.find(create.token) }
44
+
45
+ it { is_expected.to be_accepted }
46
+ it { expect(card.token).to eq(create.token) }
47
+ end
48
+
41
49
  end
@@ -4,7 +4,7 @@ describe FatZebra::DirectCredit do
4
4
 
5
5
  let(:valid_direct_credit_payload) {{
6
6
  description: 'Confirmation',
7
- amount: 42,
7
+ amount: 42.0,
8
8
  bsb: '123-123',
9
9
  account_name: 'Test',
10
10
  account_number: '012345678'
@@ -30,6 +30,18 @@ describe FatZebra::DirectCredit do
30
30
 
31
31
  it { expect{ direct_credit }.to raise_error(FatZebra::RequestValidationError) }
32
32
  end
33
+
34
+ context 'failed with non-float' do
35
+ let(:valid_direct_credit_payload) {{
36
+ description: 'Confirmation',
37
+ amount: 123,
38
+ bsb: '123-123',
39
+ account_name: 'Test',
40
+ account_number: '012345678'
41
+ }}
42
+
43
+ it { expect{ direct_credit }.to raise_error(FatZebra::RequestValidationError) }
44
+ end
33
45
  end
34
46
  end
35
47
 
@@ -39,6 +51,7 @@ describe FatZebra::DirectCredit do
39
51
 
40
52
  it { is_expected.to be_accepted }
41
53
  it { expect(direct_credit.reference).to eq(create.reference) }
54
+ it { expect(direct_credit.amount).to be_instance_of(Float) }
42
55
  end
43
56
 
44
57
  describe '.search', :vcr do
@@ -4,7 +4,7 @@ describe FatZebra::DirectDebit do
4
4
 
5
5
  let(:valid_direct_debit_payload) {{
6
6
  description: 'Confirmation',
7
- amount: 42,
7
+ amount: 42.0,
8
8
  bsb: '123-123',
9
9
  account_name: 'Test',
10
10
  account_number: '012345678'
@@ -30,6 +30,18 @@ describe FatZebra::DirectDebit do
30
30
 
31
31
  it { expect{ direct_debit }.to raise_error(FatZebra::RequestValidationError) }
32
32
  end
33
+
34
+ context 'failed with non-float' do
35
+ let(:valid_direct_debit_payload) {{
36
+ description: 'Confirmation',
37
+ amount: 123,
38
+ bsb: '123-123',
39
+ account_name: 'Test',
40
+ account_number: '012345678'
41
+ }}
42
+
43
+ it { expect{ direct_debit }.to raise_error(FatZebra::RequestValidationError) }
44
+ end
33
45
  end
34
46
  end
35
47
 
@@ -39,6 +51,7 @@ describe FatZebra::DirectDebit do
39
51
 
40
52
  it { is_expected.to be_accepted }
41
53
  it { expect(direct_debit.reference).to eq(create.reference) }
54
+ it { expect(direct_debit.amount).to be_instance_of(Float) }
42
55
  end
43
56
 
44
57
  describe '.search', :vcr do
@@ -9,7 +9,7 @@ describe FatZebra::PaymentPlan do
9
9
  reference: SecureRandom.hex,
10
10
  setup_fee: 0,
11
11
  amount: 100,
12
- start_date: '2015-07-16',
12
+ start_date: (Date.today + 90).strftime('%Y-%m-%d'),
13
13
  frequency: 'Weekly',
14
14
  anniversary: 5,
15
15
  total_count: 5,
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::Authorization do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:authorization) { FatZebra::Paypal::Authorization.find(authorization_id) }
7
+
8
+ context 'when found' do
9
+ let(:authorization_id) { '071-PPA-3AM3CXFFKMFYI3QM' }
10
+
11
+ it 'returns authorization' do
12
+ expect(authorization).to be_accepted
13
+ expect(authorization.id).to eq(authorization_id)
14
+ expect(authorization.order).to include('PPO')
15
+ end
16
+ end
17
+ end
18
+
19
+ describe '.search', :vcr do
20
+ context 'with date filter' do
21
+ subject(:authorizations) { FatZebra::Paypal::Authorization.search(from: start) }
22
+
23
+ let(:start) { Date.parse('2020-08-05') }
24
+
25
+ it 'returns records created after start date' do
26
+ created_date_check = authorizations.data.map { |rec| DateTime.strptime(rec.transaction_date, '%Y-%m-%dT%H:%M:%S%z').iso8601 >= start.iso8601 }
27
+
28
+ is_expected.to be_accepted
29
+
30
+ expect(authorizations.data).to be_a(Array)
31
+ expect(authorizations.data.first).to be_a(FatZebra::Paypal::Authorization)
32
+ expect(created_date_check.all?).to be(true)
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '#capture', :vcr do
38
+ subject(:capture_record) { FatZebra::Paypal::Authorization.capture(authorization_id, params_for_capture) }
39
+
40
+ let(:authorization_id) { '071-PPA-3AM3CXFFKMFYI3QM' }
41
+ let(:capture_amount) { 200 }
42
+ let(:note) { 'test capture $2' }
43
+ let(:params_for_capture) do
44
+ {
45
+ amount: capture_amount,
46
+ final_Capture: false,
47
+ note_to_payer: note
48
+ }
49
+ end
50
+
51
+ it 'returns a new capture record' do
52
+ is_expected.to be_accepted
53
+ is_expected.to be_successful
54
+
55
+ expect(capture_record).to be_a(FatZebra::Paypal::Capture)
56
+ expect(capture_record.id).to include('PPC')
57
+ expect(capture_record.order).to include('PPO')
58
+ expect(capture_record.amount).to eq(capture_amount)
59
+ expect(capture_record.note_to_payer).to eq(note)
60
+ expect(capture_record.balance_available_for_capture).to be > 0
61
+ end
62
+ end
63
+
64
+ describe '#void', :vcr do
65
+ subject(:voided_authorization_record) { FatZebra::Paypal::Authorization.void(authorization_id) }
66
+
67
+ let(:authorization_id) { '071-PPA-XB5CXLVNIGCNTB8V' }
68
+
69
+ it 'returns a voided capture record' do
70
+ is_expected.to be_accepted
71
+ is_expected.to be_successful
72
+
73
+ expect(voided_authorization_record).to be_a(FatZebra::Paypal::Authorization)
74
+ expect(voided_authorization_record.id).to include('PPA')
75
+ expect(voided_authorization_record.response_code).to eq('00')
76
+ expect(voided_authorization_record.balance_available_for_capture).to eq(0)
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::BillingAgreement do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:billing_agreement) { FatZebra::Paypal::BillingAgreement.find(id) }
7
+
8
+ context 'when found' do
9
+ let(:id) { '071-PBA-PYG1L6M4CV4DYHTZ' }
10
+
11
+ it 'returns billing_agreement' do
12
+ expect(billing_agreement).to be_accepted
13
+ expect(billing_agreement.id).to eq(id)
14
+ end
15
+ end
16
+ end
17
+
18
+ describe '.search', :vcr do
19
+ context 'with date filter' do
20
+ subject(:billing_agreements) { FatZebra::Paypal::BillingAgreement.search(from: start) }
21
+
22
+ let(:start) { Date.parse('2020-08-05') }
23
+
24
+ it 'returns records created after start date' do
25
+ created_date_check = billing_agreements.data.map { |rec| DateTime.strptime(rec.created_at, '%Y-%m-%dT%H:%M:%S%z').iso8601 >= start.iso8601 }
26
+
27
+ is_expected.to be_accepted
28
+
29
+ expect(billing_agreements.data).to be_a(Array)
30
+ expect(billing_agreements.data.first).to be_a(FatZebra::Paypal::BillingAgreement)
31
+ expect(created_date_check.all?).to be(true)
32
+ end
33
+ end
34
+ end
35
+
36
+ describe '#charge', :vcr do
37
+ let(:id) { '071-PBA-PYG1L6M4CV4DYHTZ' }
38
+
39
+ context 'Valid payload' do
40
+ subject(:charge) { FatZebra::Paypal::BillingAgreement.charge(id, valid_charge_billing_agreement_payload) }
41
+
42
+ it 'returns a new order record' do
43
+ is_expected.to be_accepted
44
+ is_expected.to be_successful
45
+
46
+ expect(charge).to be_a(FatZebra::Paypal::Order)
47
+ expect(charge.billing_agreement_id).to eq(id)
48
+ expect(charge.payment_source).to eq('BILLING_AGREEMENT')
49
+ expect(charge.id).to include('PPO')
50
+ expect(charge.captures.count).to eq(1)
51
+ end
52
+ end
53
+
54
+ context 'Invalid payload' do
55
+ subject(:charge) { FatZebra::Paypal::BillingAgreement.charge(id, {}) }
56
+
57
+ it 'failed to execute call' do
58
+ expect{ charge }.to raise_error(FatZebra::RequestValidationError)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::Capture do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:capture) { FatZebra::Paypal::Capture.find(capture_id) }
7
+
8
+ context 'when found' do
9
+ let(:capture_id) { '071-PPC-TUOHT8YJHBY7SBJU' }
10
+
11
+ it 'returns capture' do
12
+ expect(capture).to be_accepted
13
+ expect(capture.id).to eq(capture_id)
14
+ expect(capture.order).to include('PPO')
15
+ end
16
+ end
17
+ end
18
+
19
+ describe '.search', :vcr do
20
+ context 'with date filter' do
21
+ subject(:captures) { FatZebra::Paypal::Capture.search(from: start) }
22
+
23
+ let(:start) { Date.parse('2020-08-05') }
24
+
25
+ it 'returns records created after start date' do
26
+ created_date_check = captures.data.map { |rec| DateTime.strptime(rec.transaction_date, '%Y-%m-%dT%H:%M:%S%z').iso8601 >= start.iso8601 }
27
+
28
+ is_expected.to be_accepted
29
+
30
+ expect(captures.data).to be_a(Array)
31
+ expect(captures.data.first).to be_a(FatZebra::Paypal::Capture)
32
+ expect(created_date_check.all?).to be(true)
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '#refund', :vcr do
38
+ subject(:refund_record) { FatZebra::Paypal::Capture.refund(capture_id, params_for_refund) }
39
+
40
+ let(:capture_id) { '071-PPC-TUOHT8YJHBY7SBJU' }
41
+ let(:refund_amount) { 100 }
42
+ let(:params_for_refund) do
43
+ {
44
+ amount: refund_amount,
45
+ note_to_payer: 'test note'
46
+ }
47
+ end
48
+
49
+ it 'returns a new refund record' do
50
+ is_expected.to be_accepted
51
+ is_expected.to be_successful
52
+
53
+ expect(refund_record).to be_a(FatZebra::Paypal::Refund)
54
+ expect(refund_record.amount).to eq(refund_amount)
55
+ expect(refund_record.note_to_payer).to eq('test note')
56
+ expect(refund_record.id).to include('PPR')
57
+ expect(refund_record.order).to include('PPO')
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::Order do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:order) { FatZebra::Paypal::Order.find(order_id) }
7
+
8
+ context 'when found' do
9
+ let(:order_id) { '071-PPO-U7RRMGM3OY3V2ZMN' }
10
+
11
+ it 'returns order' do
12
+ expect(order).to be_accepted
13
+ expect(order.id).to eq(order_id)
14
+ end
15
+ end
16
+ end
17
+
18
+ describe '.search', :vcr do
19
+ context 'with date filter' do
20
+ subject(:orders) { FatZebra::Paypal::Order.search(from: start) }
21
+
22
+ let(:start) { Date.parse('2020-08-05') }
23
+
24
+ it 'returns orders created after start date' do
25
+ created_date_check = orders.data.map { |rec| DateTime.strptime(rec.transaction_date, '%Y-%m-%dT%H:%M:%S%z').iso8601 >= start.iso8601 }
26
+
27
+ is_expected.to be_accepted
28
+
29
+ expect(orders.data).to be_a(Array)
30
+ expect(orders.data.first).to be_a(FatZebra::Paypal::Order)
31
+ expect(created_date_check.all?).to be(true)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::Refund do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:refund) { FatZebra::Paypal::Refund.find(refund_id) }
7
+
8
+ context 'when found' do
9
+ let(:refund_id) { '071-PPR-SRR9FP7ZKXT9IXU3' }
10
+
11
+ it 'returns refund' do
12
+ expect(refund).to be_accepted
13
+ expect(refund.id).to eq(refund_id)
14
+ expect(refund.order).to include('PPO')
15
+ end
16
+ end
17
+ end
18
+
19
+ describe '.search', :vcr do
20
+ context 'with date filter' do
21
+ subject(:refunds) { FatZebra::Paypal::Refund.search(from: start) }
22
+
23
+ let(:start) { Date.parse('2020-08-05') }
24
+
25
+ it 'returns all refund records created after start date' do
26
+ created_date_check = refunds.data.map { |rec| DateTime.strptime(rec.transaction_date, '%Y-%m-%dT%H:%M:%S%z').iso8601 >= start.iso8601 }
27
+
28
+ is_expected.to be_accepted
29
+
30
+ expect(refunds.data).to be_a(Array)
31
+ expect(refunds.data.first).to be_a(FatZebra::Paypal::Refund)
32
+ expect(created_date_check.all?).to be(true)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -16,7 +16,7 @@ describe FatZebra::Purchase do
16
16
  it { expect(purchase.card_category).to eq('Credit') }
17
17
  it { expect(purchase.card_token).to_not be_empty }
18
18
  it { expect(purchase.addendum_data).to eq({}) }
19
- it { expect(purchase.metadata).to eq({}) }
19
+ it { expect(purchase.metadata).to eq({ "authorization_tracking_id" => "", "original_transaction_reference" => "" }) }
20
20
  it { expect(purchase.response_code).to eq('00') }
21
21
 
22
22
  context 'bad request' do
@@ -77,7 +77,7 @@ describe FatZebra::Purchase do
77
77
  subject(:void) { FatZebra::Purchase.void(purchase.id) }
78
78
 
79
79
  it { is_expected.to be_accepted }
80
- it { is_expected.to_not be_successful }
80
+ it { is_expected.to be_successful }
81
81
  it { expect(void.message).to eq('Voided') }
82
82
  it { expect(void).to be_a(FatZebra::Purchase) }
83
83
  end
@@ -87,7 +87,7 @@ describe FatZebra::Purchase do
87
87
  before { expect(purchase.void).to be_truthy }
88
88
 
89
89
  it { is_expected.to be_accepted }
90
- it { is_expected.to_not be_successful }
90
+ it { is_expected.to be_successful }
91
91
  it { expect(purchase.message).to eq('Voided') }
92
92
  it { expect(purchase).to be_a(FatZebra::Purchase) }
93
93
  end
@@ -8,10 +8,11 @@ describe FatZebra::Refund do
8
8
  }}
9
9
 
10
10
  describe '.create', :vcr do
11
+ subject(:refund) { FatZebra::Refund.create(valid_refund_payload) }
12
+
11
13
  let(:purchase) { FatZebra::Purchase.create(valid_purchase_payload) }
12
14
  let(:transaction_id) { purchase.transaction_id }
13
15
  let(:reference) { purchase.reference }
14
- subject(:refund) { FatZebra::Refund.create(valid_refund_payload) }
15
16
 
16
17
  it { is_expected.to be_accepted }
17
18
  it { is_expected.to be_successful }
@@ -32,44 +33,63 @@ describe FatZebra::Refund do
32
33
  end
33
34
 
34
35
  describe '.find', :vcr do
36
+ subject(:found_refund) { FatZebra::Refund.find(created_refund.reference) }
37
+
35
38
  let(:purchase) { FatZebra::Purchase.create(valid_purchase_payload) }
36
39
  let(:transaction_id) { purchase.transaction_id }
37
40
  let(:reference) { purchase.reference }
38
- let(:create) { FatZebra::Refund.create(valid_refund_payload) }
39
-
40
- subject(:direct_credit) { FatZebra::Refund.find(create.reference) }
41
+ let(:created_refund) { FatZebra::Refund.create(valid_refund_payload) }
41
42
 
42
43
  it { is_expected.to be_accepted }
43
44
  it { is_expected.to be_successful }
44
- it { expect(direct_credit.reference).to eq(create.reference) }
45
+ it { expect(found_refund.reference).to eq(created_refund.reference) }
45
46
  end
46
47
 
47
48
  describe '.search', :vcr do
48
- subject(:direct_credits) { FatZebra::Refund.search }
49
+ subject(:found_refunds) { FatZebra::Refund.search }
49
50
 
50
- before do
51
- 2.times do |i|
52
- purchase = FatZebra::Purchase.create(valid_purchase_payload)
53
- FatZebra::Refund.create(amount: 10000, reference: purchase.reference, transaction_id: purchase.transaction_id)
54
- end
51
+ let(:created_refunds) do
52
+ purchase = FatZebra::Purchase.create(valid_purchase_payload)
53
+ [
54
+ FatZebra::Refund.create(amount: 1000, reference: SecureRandom.hex, transaction_id: purchase.transaction_id),
55
+ FatZebra::Refund.create(amount: 1000, reference: SecureRandom.hex, transaction_id: purchase.transaction_id),
56
+ ]
55
57
  end
56
58
 
57
- it { is_expected.to be_accepted }
58
- it { expect(direct_credits.data.count).to be >= 2 }
59
+ before { created_refunds }
60
+
61
+ it "responds with the newly-created refunds" do
62
+ is_expected.to be_accepted
63
+ expect(found_refunds.data.map(&:id)).to include(*created_refunds.map(&:id))
64
+ end
59
65
  end
60
66
 
61
67
  describe '#void', :vcr do
68
+ subject(:refund) { FatZebra::Refund.create(valid_refund_payload).void }
69
+
62
70
  let(:purchase) { FatZebra::Purchase.create(valid_purchase_payload) }
63
71
  let(:transaction_id) { purchase.transaction_id }
64
72
  let(:reference) { purchase.reference }
65
- subject(:refund) { FatZebra::Refund.create(valid_refund_payload) }
66
-
67
- before { refund.void() }
68
73
 
69
74
  it { is_expected.to be_accepted }
70
- it { is_expected.to_not be_successful }
75
+ it { is_expected.to be_successful }
71
76
  it { expect(refund.message).to eq('Voided') }
72
77
  it { expect(refund).to be_a(FatZebra::Refund) }
73
78
  end
74
79
 
80
+ describe '#declined?' do
81
+ subject { refund.declined? }
82
+
83
+ let(:refund) { described_class.initialize_from({ 'response' => { 'refunded' => refunded } }) }
84
+
85
+ context do
86
+ let(:refunded) { 'Declined' }
87
+ it { is_expected.to be(true) }
88
+ end
89
+
90
+ context do
91
+ let(:refunded) { 'Approved' }
92
+ it { is_expected.to be(false) }
93
+ end
94
+ end
75
95
  end