mangopay-v4 4.0.0 → 4.0.1

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 (234) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +29 -29
  3. data/.rspec +3 -3
  4. data/.rubocop.yml +1 -1
  5. data/.travis.yml +21 -13
  6. data/Gemfile +2 -2
  7. data/LICENSE +20 -20
  8. data/README.md +379 -379
  9. data/bin/mangopay +9 -9
  10. data/lib/mangopay.rb +132 -132
  11. data/lib/mangopay/api/api.rb +8 -8
  12. data/lib/mangopay/api/api_methods.rb +160 -136
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -173
  14. data/lib/mangopay/api/http_client.rb +324 -324
  15. data/lib/mangopay/api/service/bank_accounts.rb +145 -145
  16. data/lib/mangopay/api/service/banking_aliases.rb +83 -0
  17. data/lib/mangopay/api/service/cards.rb +151 -151
  18. data/lib/mangopay/api/service/client_wallets.rb +88 -88
  19. data/lib/mangopay/api/service/clients.rb +67 -67
  20. data/lib/mangopay/api/service/dispute_documents.rb +157 -157
  21. data/lib/mangopay/api/service/disputes.rb +186 -186
  22. data/lib/mangopay/api/service/e_money.rb +63 -41
  23. data/lib/mangopay/api/service/events.rb +46 -46
  24. data/lib/mangopay/api/service/hooks.rb +92 -92
  25. data/lib/mangopay/api/service/kyc_documents.rb +152 -152
  26. data/lib/mangopay/api/service/mandates.rb +141 -141
  27. data/lib/mangopay/api/service/oauth_tokens.rb +24 -24
  28. data/lib/mangopay/api/service/pay_ins.rb +369 -259
  29. data/lib/mangopay/api/service/pay_outs.rb +53 -53
  30. data/lib/mangopay/api/service/pre_authorizations.rb +126 -68
  31. data/lib/mangopay/api/service/refunds.rb +159 -61
  32. data/lib/mangopay/api/service/reports.rb +150 -150
  33. data/lib/mangopay/api/service/repudiations.rb +31 -31
  34. data/lib/mangopay/api/service/responses.rb +101 -101
  35. data/lib/mangopay/api/service/settlement_transfers.rb +54 -54
  36. data/lib/mangopay/api/service/transactions.rb +246 -182
  37. data/lib/mangopay/api/service/transfers.rb +53 -53
  38. data/lib/mangopay/api/service/ubo_declarations.rb +94 -69
  39. data/lib/mangopay/api/service/users.rb +162 -162
  40. data/lib/mangopay/api/service/wallets.rb +98 -98
  41. data/lib/mangopay/api/uri_provider.rb +32 -34
  42. data/lib/mangopay/common/json_tag_converter.rb +70 -67
  43. data/lib/mangopay/common/jsonifier.rb +266 -248
  44. data/lib/mangopay/common/log_provider.rb +33 -33
  45. data/lib/mangopay/common/rate_limit_interval.rb +16 -16
  46. data/lib/mangopay/common/read_only_fields.rb +26 -26
  47. data/lib/mangopay/common/response_error.rb +61 -61
  48. data/lib/mangopay/common/sort_direction.rb +14 -14
  49. data/lib/mangopay/common/sort_field.rb +12 -12
  50. data/lib/mangopay/common/template_url_options.rb +8 -8
  51. data/lib/mangopay/configuration.rb +38 -38
  52. data/lib/mangopay/environment.rb +65 -65
  53. data/lib/mangopay/model/address.rb +26 -26
  54. data/lib/mangopay/model/billing.rb +13 -0
  55. data/lib/mangopay/model/birthplace.rb +15 -0
  56. data/lib/mangopay/model/declared_ubo.rb +20 -20
  57. data/lib/mangopay/model/dispute_reason.rb +14 -14
  58. data/lib/mangopay/model/document_page_consult.rb +14 -14
  59. data/lib/mangopay/model/e_money.rb +17 -17
  60. data/lib/mangopay/model/entity/account/bank_account.rb +25 -25
  61. data/lib/mangopay/model/entity/account/ca_bank_account.rb +26 -26
  62. data/lib/mangopay/model/entity/account/debited_bank_account.rb +31 -0
  63. data/lib/mangopay/model/entity/account/gb_bank_account.rb +20 -20
  64. data/lib/mangopay/model/entity/account/iban_bank_account.rb +20 -20
  65. data/lib/mangopay/model/entity/account/other_bank_account.rb +23 -23
  66. data/lib/mangopay/model/entity/account/us_bank_account.rb +23 -23
  67. data/lib/mangopay/model/entity/banking_alias.rb +27 -0
  68. data/lib/mangopay/model/entity/card.rb +44 -44
  69. data/lib/mangopay/model/entity/card_registration.rb +42 -42
  70. data/lib/mangopay/model/entity/client.rb +65 -62
  71. data/lib/mangopay/model/entity/client_wallet.rb +22 -22
  72. data/lib/mangopay/model/entity/dispute.rb +49 -49
  73. data/lib/mangopay/model/entity/dispute_document.rb +28 -28
  74. data/lib/mangopay/model/entity/entity_base.rb +17 -17
  75. data/lib/mangopay/model/entity/hook.rb +25 -25
  76. data/lib/mangopay/model/entity/kyc_document.rb +27 -27
  77. data/lib/mangopay/model/entity/mandate.rb +50 -50
  78. data/lib/mangopay/model/entity/pay_in/apple_pay_direct_pay_in.rb +26 -0
  79. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +24 -21
  80. data/lib/mangopay/model/entity/pay_in/bank_wire_external_instruction_pay_in.rb +19 -0
  81. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +41 -32
  82. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +15 -12
  83. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +36 -39
  84. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +25 -22
  85. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +37 -37
  86. data/lib/mangopay/model/entity/pay_in/google_pay_direct_pay_in.rb +28 -0
  87. data/lib/mangopay/model/entity/pay_in/pay_in.rb +18 -15
  88. data/lib/mangopay/model/entity/pay_in/paypal_web_pay_in.rb +15 -0
  89. data/lib/mangopay/model/entity/pay_out.rb +21 -21
  90. data/lib/mangopay/model/entity/pre_authorization.rb +74 -67
  91. data/lib/mangopay/model/entity/refund.rb +17 -17
  92. data/lib/mangopay/model/entity/report.rb +50 -50
  93. data/lib/mangopay/model/entity/repudiation.rb +17 -17
  94. data/lib/mangopay/model/entity/settlement_transfer.rb +16 -16
  95. data/lib/mangopay/model/entity/transaction.rb +51 -51
  96. data/lib/mangopay/model/entity/transfer.rb +12 -12
  97. data/lib/mangopay/model/entity/ubo.rb +30 -0
  98. data/lib/mangopay/model/entity/ubo_declaration.rb +29 -31
  99. data/lib/mangopay/model/entity/user/legal_user.rb +55 -52
  100. data/lib/mangopay/model/entity/user/natural_user.rb +49 -49
  101. data/lib/mangopay/model/entity/user/user.rb +17 -17
  102. data/lib/mangopay/model/entity/wallet.rb +27 -27
  103. data/lib/mangopay/model/enum/account_type.rb +23 -23
  104. data/lib/mangopay/model/enum/avs_result.rb +19 -0
  105. data/lib/mangopay/model/enum/banking_alias_type.rb +12 -0
  106. data/lib/mangopay/model/enum/business_type.rb +17 -0
  107. data/lib/mangopay/model/enum/card_status.rb +14 -14
  108. data/lib/mangopay/model/enum/card_type.rb +32 -32
  109. data/lib/mangopay/model/enum/card_validity.rb +18 -18
  110. data/lib/mangopay/model/enum/country_iso.rb +758 -758
  111. data/lib/mangopay/model/enum/culture_code.rb +43 -43
  112. data/lib/mangopay/model/enum/currency_iso.rb +551 -551
  113. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +15 -15
  114. data/lib/mangopay/model/enum/declared_ubo_status.rb +17 -17
  115. data/lib/mangopay/model/enum/deposit_type.rb +14 -14
  116. data/lib/mangopay/model/enum/direct_debit_type.rb +12 -12
  117. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +24 -24
  118. data/lib/mangopay/model/enum/dispute_document_type.rb +22 -22
  119. data/lib/mangopay/model/enum/dispute_reason_type.rb +32 -32
  120. data/lib/mangopay/model/enum/dispute_status.rb +20 -20
  121. data/lib/mangopay/model/enum/dispute_type.rb +14 -14
  122. data/lib/mangopay/model/enum/document_status.rb +20 -20
  123. data/lib/mangopay/model/enum/download_format.rb +10 -10
  124. data/lib/mangopay/model/enum/event_type.rb +76 -73
  125. data/lib/mangopay/model/enum/funds_type.rb +14 -14
  126. data/lib/mangopay/model/enum/hook_status.rb +12 -12
  127. data/lib/mangopay/model/enum/hook_validity.rb +14 -14
  128. data/lib/mangopay/model/enum/income_range.rb +20 -20
  129. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +36 -36
  130. data/lib/mangopay/model/enum/kyc_document_type.rb +18 -18
  131. data/lib/mangopay/model/enum/kyc_level.rb +12 -12
  132. data/lib/mangopay/model/enum/legal_person_type.rb +14 -14
  133. data/lib/mangopay/model/enum/mandate_culture_code.rb +22 -22
  134. data/lib/mangopay/model/enum/mandate_execution_type.rb +10 -10
  135. data/lib/mangopay/model/enum/mandate_scheme.rb +12 -12
  136. data/lib/mangopay/model/enum/mandate_status.rb +23 -23
  137. data/lib/mangopay/model/enum/mandate_type.rb +10 -10
  138. data/lib/mangopay/model/enum/natural_user_capacity.rb +14 -14
  139. data/lib/mangopay/model/enum/pay_in_execution_type.rb +17 -17
  140. data/lib/mangopay/model/enum/pay_in_payment_type.rb +29 -20
  141. data/lib/mangopay/model/enum/pay_out_payment_type.rb +10 -10
  142. data/lib/mangopay/model/enum/payment_status.rb +20 -20
  143. data/lib/mangopay/model/enum/person_type.rb +14 -14
  144. data/lib/mangopay/model/enum/platform_type.rb +22 -22
  145. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +10 -10
  146. data/lib/mangopay/model/enum/pre_authorization_status.rb +17 -17
  147. data/lib/mangopay/model/enum/refund_reason_type.rb +20 -20
  148. data/lib/mangopay/model/enum/report_status.rb +16 -16
  149. data/lib/mangopay/model/enum/report_type.rb +12 -12
  150. data/lib/mangopay/model/enum/sector.rb +29 -0
  151. data/lib/mangopay/model/enum/secure_mode.rb +15 -15
  152. data/lib/mangopay/model/enum/transaction_nature.rb +16 -16
  153. data/lib/mangopay/model/enum/transaction_status.rb +14 -14
  154. data/lib/mangopay/model/enum/transaction_type.rb +14 -14
  155. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +18 -18
  156. data/lib/mangopay/model/enum/ubo_declaration_status.rb +20 -20
  157. data/lib/mangopay/model/event.rb +17 -17
  158. data/lib/mangopay/model/model.rb +214 -193
  159. data/lib/mangopay/model/money.rb +16 -16
  160. data/lib/mangopay/model/pay_in_web_extended_view.rb +30 -30
  161. data/lib/mangopay/model/platform_categorization.rb +15 -0
  162. data/lib/mangopay/model/refund_reason.rb +14 -14
  163. data/lib/mangopay/model/report_filter.rb +82 -82
  164. data/lib/mangopay/model/request/cancel_request.rb +15 -15
  165. data/lib/mangopay/model/request/complete_registration_request.rb +12 -12
  166. data/lib/mangopay/model/request/currency_request.rb +12 -12
  167. data/lib/mangopay/model/request/deactivation_request.rb +9 -9
  168. data/lib/mangopay/model/request/filter_request.rb +37 -37
  169. data/lib/mangopay/model/request/submit_document_request.rb +13 -13
  170. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +16 -13
  171. data/lib/mangopay/model/request/upload_file_request.rb +8 -8
  172. data/lib/mangopay/model/response_replica.rb +26 -26
  173. data/lib/mangopay/model/security_info.rb +13 -0
  174. data/lib/mangopay/util/custom_formatter.rb +11 -11
  175. data/lib/mangopay/util/custom_logger.rb +33 -33
  176. data/lib/mangopay/util/enum.rb +51 -51
  177. data/lib/mangopay/util/file_encoder.rb +15 -15
  178. data/lib/mangopay/util/non_instantiable.rb +5 -5
  179. data/lib/mangopay/util/storage_strategy.rb +9 -9
  180. data/lib/mangopay/util/void_logger.rb +5 -5
  181. data/mangopay-v4.gemspec +32 -0
  182. data/mangopay.gemspec +32 -32
  183. data/spec/context/address_context.rb +24 -24
  184. data/spec/context/bank_account_context.rb +137 -137
  185. data/spec/context/banking_alias_context.rb +17 -0
  186. data/spec/context/birthplace_context.rb +17 -0
  187. data/spec/context/card_context.rb +45 -45
  188. data/spec/context/client_context.rb +43 -44
  189. data/spec/context/dispute_context.rb +36 -36
  190. data/spec/context/dispute_document_context.rb +19 -19
  191. data/spec/context/hook_context.rb +15 -15
  192. data/spec/context/kyc_document_context.rb +22 -22
  193. data/spec/context/mandate_context.rb +26 -26
  194. data/spec/context/pay_in_context.rb +319 -224
  195. data/spec/context/pay_out_context.rb +39 -38
  196. data/spec/context/pre_authorization_context.rb +44 -40
  197. data/spec/context/refund_context.rb +32 -32
  198. data/spec/context/report_context.rb +21 -21
  199. data/spec/context/repudiation_context.rb +18 -18
  200. data/spec/context/settlement_transfer_context.rb +27 -27
  201. data/spec/context/transfer_context.rb +50 -50
  202. data/spec/context/ubo_declaration_context.rb +29 -24
  203. data/spec/context/user_context.rb +83 -82
  204. data/spec/context/wallet_context.rb +52 -52
  205. data/spec/mangopay/bank_accounts_spec.rb +228 -228
  206. data/spec/mangopay/banking_alias_spec.rb +85 -0
  207. data/spec/mangopay/cards_spec.rb +133 -134
  208. data/spec/mangopay/client_wallets_spec.rb +147 -147
  209. data/spec/mangopay/clients_spec.rb +56 -54
  210. data/spec/mangopay/configuration_spec.rb +125 -125
  211. data/spec/mangopay/dispute_documents_spec.rb +173 -173
  212. data/spec/mangopay/disputes_spec.rb +264 -264
  213. data/spec/mangopay/e_money_spec.rb +57 -37
  214. data/spec/mangopay/events_spec.rb +49 -49
  215. data/spec/mangopay/hooks_spec.rb +70 -70
  216. data/spec/mangopay/kyc_documents_spec.rb +179 -179
  217. data/spec/mangopay/mandates_spec.rb +218 -218
  218. data/spec/mangopay/oauth_tokens_spec.rb +40 -40
  219. data/spec/mangopay/pay_ins_spec.rb +279 -180
  220. data/spec/mangopay/pay_outs_spec.rb +38 -38
  221. data/spec/mangopay/pre_authorizations_spec.rb +134 -57
  222. data/spec/mangopay/refunds_spec.rb +187 -39
  223. data/spec/mangopay/reports_spec.rb +118 -120
  224. data/spec/mangopay/responses_spec.rb +324 -294
  225. data/spec/mangopay/settlement_transfers_spec.rb +36 -36
  226. data/spec/mangopay/transactions_spec.rb +347 -232
  227. data/spec/mangopay/transfers_spec.rb +37 -37
  228. data/spec/mangopay/ubo_declarations_spec.rb +127 -64
  229. data/spec/mangopay/users_spec.rb +145 -145
  230. data/spec/mangopay/wallets_spec.rb +103 -103
  231. data/spec/spec_helper.rb +72 -72
  232. data/spec/tmp/MangoPay.AuthorizationToken.FileStore.tmp +6 -0
  233. data/spec/tmp/mangopay.log.tmp +1201 -0
  234. metadata +31 -5
@@ -1,265 +1,265 @@
1
- require_relative '../../lib/mangopay/api/service/disputes'
2
- require_relative '../../lib/mangopay/api/service/repudiations'
3
- require_relative '../context/dispute_context'
4
- require_relative '../context/repudiation_context'
5
- require_relative '../../lib/mangopay/common/sort_field'
6
- require_relative '../../lib/mangopay/common/sort_direction'
7
-
8
- describe MangoApi::Disputes do
9
- include_context 'dispute_context'
10
- include_context 'repudiation_context'
11
-
12
- describe '.update' do
13
-
14
- context 'given a valid object' do
15
- tag = 'Updated tag'
16
- existing = DISPUTE_PERSISTED
17
- existing.tag = tag
18
-
19
- it 'updates the corresponding entity' do
20
- updated = MangoApi::Disputes.update existing
21
-
22
- expect(updated).to be_kind_of MangoModel::Dispute
23
- expect(updated.id).to eq existing.id
24
- expect(updated.tag).to eq tag
25
- expect(its_the_same_dispute(existing, updated)).to be_truthy
26
- end
27
- end
28
- end
29
-
30
- describe '.close' do
31
-
32
- context "given an existing entity's ID" do
33
- id = DISPUTE_PERSISTED.id
34
-
35
- it 'closes the corresponding dispute entity' do
36
- expect { MangoApi::Disputes.close id }.to(raise_error { |err|
37
- expect(err).to be_kind_of MangoPay::ResponseError
38
- expect(err.type).to eq 'dispute_cant_be_closed'
39
- })
40
- end
41
- end
42
- end
43
-
44
- describe '.submit' do
45
-
46
- context 'given a valid object' do
47
- dispute = DISPUTE_PERSISTED
48
-
49
- it 'contests the corresponding dispute entity' do
50
- expect { MangoApi::Disputes.submit dispute }.to(raise_error { |err|
51
- expect(err).to be_kind_of MangoPay::ResponseError
52
- expect(err.type).to eq 'dispute_contest_deadline_passed'
53
- })
54
- end
55
- end
56
- end
57
-
58
- describe '.resubmit' do
59
-
60
- context "given an existing entity's ID" do
61
- id = DISPUTE_PERSISTED.id
62
-
63
- it 'resubmits the corresponding dispute entity' do
64
- expect { MangoApi::Disputes.resubmit id }.to(raise_error { |err|
65
- expect(err).to be_kind_of MangoPay::ResponseError
66
- expect(err.type).to eq 'dispute_contest_deadline_passed'
67
- })
68
- end
69
- end
70
- end
71
-
72
- describe '.get' do
73
-
74
- context "given an existing entity's ID" do
75
- existing = DISPUTE_PERSISTED
76
- id = existing.id
77
-
78
- it 'retrieves the corresponding entity' do
79
- retrieved = MangoApi::Disputes.get id
80
-
81
- expect(retrieved).to be_kind_of MangoModel::Dispute
82
- expect(retrieved.id).to eq id
83
- expect(its_the_same_dispute(existing, retrieved)).to be_truthy
84
- end
85
- end
86
- end
87
-
88
- describe '.of_user' do
89
-
90
- context "given an existing user entity's ID" do
91
- id = NATURAL_USER_PERSISTED.id
92
-
93
- context 'not having specified filters' do
94
- it 'retrieves list with default parameters' do
95
- results = MangoApi::Disputes.of_user id
96
-
97
- expect(results).to be_kind_of Array
98
- results.each do |result|
99
- expect(result).to be_kind_of MangoModel::Dispute
100
- expect(result.id).not_to be_nil
101
- end
102
- end
103
- end
104
-
105
- context 'having specified filters' do
106
- it 'retrieves list with specified parameters' do
107
- results = MangoApi::Disputes.of_user id do |filter|
108
- filter.page = 1
109
- filter.per_page = 5
110
- filter.status = MangoModel::DisputeStatus::CREATED
111
- end
112
-
113
- expect(results).to be_kind_of Array
114
- results.each do |result|
115
- expect(result).to be_kind_of MangoModel::Dispute
116
- expect(result.id).not_to be_nil
117
- end
118
- end
119
- end
120
- end
121
- end
122
-
123
- describe '.of_wallet' do
124
-
125
- context "given an existing wallet entity's ID" do
126
- id = WALLET_PERSISTED.id
127
-
128
- context 'not having specified filters' do
129
- it 'retrieves list with default parameters' do
130
- results = MangoApi::Disputes.of_wallet id
131
-
132
- expect(results).to be_kind_of Array
133
- results.each do |result|
134
- expect(result).to be_kind_of MangoModel::Dispute
135
- expect(result.id).not_to be_nil
136
- end
137
- end
138
- end
139
-
140
- context 'having specified filters' do
141
- it 'retrieves list with specified parameters' do
142
- results = MangoApi::Disputes.of_wallet id do |filter|
143
- filter.page = 1
144
- filter.per_page = 5
145
- end
146
-
147
- expect(results).to be_kind_of Array
148
- results.each do |result|
149
- expect(result).to be_kind_of MangoModel::Dispute
150
- expect(result.id).not_to be_nil
151
- end
152
- end
153
- end
154
- end
155
- end
156
-
157
- describe '.pending_settlement' do
158
-
159
- context 'from a correctly-configured environment' do
160
- context 'not having specified filters' do
161
- default_per_page = 10
162
-
163
- it 'retrieves list with default parameters' do
164
- results = MangoApi::Disputes.pending_settlement
165
-
166
- expect(results).to be_kind_of Array
167
- expect(results.length).to eq default_per_page
168
- results.each do |result|
169
- expect(result).to be_kind_of MangoModel::Dispute
170
- expect(result.id).not_to be_nil
171
- end
172
- end
173
- end
174
-
175
- context 'having specified filters' do
176
- per_page = 11
177
-
178
- it 'retrieves list with specified parameters' do
179
- results = MangoApi::Disputes.pending_settlement do |filter|
180
- filter.page = 1
181
- filter.per_page = per_page
182
- filter.sort_field = MangoPay::SortField::CREATION_DATE
183
- filter.sort_direction = MangoPay::SortDirection::DESC
184
- end
185
-
186
- expect(results).to be_kind_of Array
187
- expect(results.length).to eq per_page
188
- results.each.with_index do |result, index|
189
- expect(result).to be_kind_of MangoModel::Dispute
190
- expect(result.id).not_to be_nil
191
- next if index == results.length - 1
192
- first_date = result.creation_date
193
- second_date = results[index + 1].creation_date
194
- expect(first_date >= second_date).to be_truthy
195
- end
196
- end
197
- end
198
- end
199
- end
200
-
201
- describe '.all' do
202
-
203
- context 'from a correctly-configured environment' do
204
- context 'not having specified filters' do
205
- default_per_page = 10
206
-
207
- it 'retrieves list with default parameters' do
208
- results = MangoApi::Disputes.all
209
-
210
- expect(results).to be_kind_of Array
211
- expect(results.length).to eq default_per_page
212
- results.each do |result|
213
- expect(result).to be_kind_of MangoModel::Dispute
214
- expect(result.id).not_to be_nil
215
- end
216
- end
217
- end
218
-
219
- context 'having specified filters' do
220
- per_page = 11
221
- status = MangoModel::DisputeStatus::CLOSED
222
-
223
- it 'retrieves list with specified parameters' do
224
- results = MangoApi::Disputes.all do |filter|
225
- filter.page = 1
226
- filter.per_page = per_page
227
- filter.sort_field = MangoPay::SortField::CREATION_DATE
228
- filter.sort_direction = MangoPay::SortDirection::DESC
229
- filter.status = status
230
- end
231
-
232
- expect(results).to be_kind_of Array
233
- expect(results.length).to eq per_page
234
- results.each.with_index do |result, index|
235
- expect(result).to be_kind_of MangoModel::Dispute
236
- expect(result.id).not_to be_nil
237
- expect(result.status).to be status
238
- next if index == results.length - 1
239
- first_date = result.creation_date
240
- second_date = results[index + 1].creation_date
241
- expect(first_date >= second_date).to be_truthy
242
- end
243
- end
244
- end
245
- end
246
- end
247
- end
248
-
249
- describe MangoApi::Repudiations do
250
-
251
- describe '.get' do
252
-
253
- context "given an existing entity's ID" do
254
- id = REPUDIATION_PERSISTED.id
255
-
256
- it 'retrieves the corresponding entity' do
257
- expect(id).not_to be_nil, 'there is no repudiation to retrieve'
258
- retrieved = MangoApi::Repudiations.get id
259
-
260
- expect(retrieved).to be_kind_of MangoModel::Repudiation
261
- expect(retrieved.id).not_to be_nil
262
- end
263
- end
264
- end
1
+ require_relative '../../lib/mangopay/api/service/disputes'
2
+ require_relative '../../lib/mangopay/api/service/repudiations'
3
+ require_relative '../context/dispute_context'
4
+ require_relative '../context/repudiation_context'
5
+ require_relative '../../lib/mangopay/common/sort_field'
6
+ require_relative '../../lib/mangopay/common/sort_direction'
7
+
8
+ describe MangoApi::Disputes do
9
+ include_context 'dispute_context'
10
+ include_context 'repudiation_context'
11
+
12
+ describe '.update' do
13
+
14
+ context 'given a valid object' do
15
+ tag = 'Updated tag'
16
+ existing = DISPUTE_PERSISTED
17
+ existing.tag = tag
18
+
19
+ it 'updates the corresponding entity' do
20
+ updated = MangoApi::Disputes.update existing
21
+
22
+ expect(updated).to be_kind_of MangoModel::Dispute
23
+ expect(updated.id).to eq existing.id
24
+ expect(updated.tag).to eq tag
25
+ expect(its_the_same_dispute(existing, updated)).to be_truthy
26
+ end
27
+ end
28
+ end
29
+
30
+ describe '.close' do
31
+
32
+ context "given an existing entity's ID" do
33
+ id = DISPUTE_PERSISTED.id
34
+
35
+ it 'closes the corresponding dispute entity' do
36
+ expect { MangoApi::Disputes.close id }.to(raise_error { |err|
37
+ expect(err).to be_kind_of MangoPay::ResponseError
38
+ expect(err.type).to eq 'dispute_cant_be_closed'
39
+ })
40
+ end
41
+ end
42
+ end
43
+
44
+ describe '.submit' do
45
+
46
+ context 'given a valid object' do
47
+ dispute = DISPUTE_PERSISTED
48
+
49
+ it 'contests the corresponding dispute entity' do
50
+ expect { MangoApi::Disputes.submit dispute }.to(raise_error { |err|
51
+ expect(err).to be_kind_of MangoPay::ResponseError
52
+ expect(err.type).to eq 'dispute_contest_deadline_passed'
53
+ })
54
+ end
55
+ end
56
+ end
57
+
58
+ describe '.resubmit' do
59
+
60
+ context "given an existing entity's ID" do
61
+ id = DISPUTE_PERSISTED.id
62
+
63
+ it 'resubmits the corresponding dispute entity' do
64
+ expect { MangoApi::Disputes.resubmit id }.to(raise_error { |err|
65
+ expect(err).to be_kind_of MangoPay::ResponseError
66
+ expect(err.type).to eq 'dispute_contest_deadline_passed'
67
+ })
68
+ end
69
+ end
70
+ end
71
+
72
+ describe '.get' do
73
+
74
+ context "given an existing entity's ID" do
75
+ existing = DISPUTE_PERSISTED
76
+ id = existing.id
77
+
78
+ it 'retrieves the corresponding entity' do
79
+ retrieved = MangoApi::Disputes.get id
80
+
81
+ expect(retrieved).to be_kind_of MangoModel::Dispute
82
+ expect(retrieved.id).to eq id
83
+ expect(its_the_same_dispute(existing, retrieved)).to be_truthy
84
+ end
85
+ end
86
+ end
87
+
88
+ describe '.of_user' do
89
+
90
+ context "given an existing user entity's ID" do
91
+ id = NATURAL_USER_PERSISTED.id
92
+
93
+ context 'not having specified filters' do
94
+ it 'retrieves list with default parameters' do
95
+ results = MangoApi::Disputes.of_user id
96
+
97
+ expect(results).to be_kind_of Array
98
+ results.each do |result|
99
+ expect(result).to be_kind_of MangoModel::Dispute
100
+ expect(result.id).not_to be_nil
101
+ end
102
+ end
103
+ end
104
+
105
+ context 'having specified filters' do
106
+ it 'retrieves list with specified parameters' do
107
+ results = MangoApi::Disputes.of_user id do |filter|
108
+ filter.page = 1
109
+ filter.per_page = 5
110
+ filter.status = MangoModel::DisputeStatus::CREATED
111
+ end
112
+
113
+ expect(results).to be_kind_of Array
114
+ results.each do |result|
115
+ expect(result).to be_kind_of MangoModel::Dispute
116
+ expect(result.id).not_to be_nil
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
122
+
123
+ describe '.of_wallet' do
124
+
125
+ context "given an existing wallet entity's ID" do
126
+ id = WALLET_PERSISTED.id
127
+
128
+ context 'not having specified filters' do
129
+ it 'retrieves list with default parameters' do
130
+ results = MangoApi::Disputes.of_wallet id
131
+
132
+ expect(results).to be_kind_of Array
133
+ results.each do |result|
134
+ expect(result).to be_kind_of MangoModel::Dispute
135
+ expect(result.id).not_to be_nil
136
+ end
137
+ end
138
+ end
139
+
140
+ context 'having specified filters' do
141
+ it 'retrieves list with specified parameters' do
142
+ results = MangoApi::Disputes.of_wallet id do |filter|
143
+ filter.page = 1
144
+ filter.per_page = 5
145
+ end
146
+
147
+ expect(results).to be_kind_of Array
148
+ results.each do |result|
149
+ expect(result).to be_kind_of MangoModel::Dispute
150
+ expect(result.id).not_to be_nil
151
+ end
152
+ end
153
+ end
154
+ end
155
+ end
156
+
157
+ describe '.pending_settlement' do
158
+
159
+ context 'from a correctly-configured environment' do
160
+ context 'not having specified filters' do
161
+ default_per_page = 10
162
+
163
+ it 'retrieves list with default parameters' do
164
+ results = MangoApi::Disputes.pending_settlement
165
+
166
+ expect(results).to be_kind_of Array
167
+ expect(results.length).to eq default_per_page
168
+ results.each do |result|
169
+ expect(result).to be_kind_of MangoModel::Dispute
170
+ expect(result.id).not_to be_nil
171
+ end
172
+ end
173
+ end
174
+
175
+ context 'having specified filters' do
176
+ per_page = 11
177
+
178
+ it 'retrieves list with specified parameters' do
179
+ results = MangoApi::Disputes.pending_settlement do |filter|
180
+ filter.page = 1
181
+ filter.per_page = per_page
182
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
183
+ filter.sort_direction = MangoPay::SortDirection::DESC
184
+ end
185
+
186
+ expect(results).to be_kind_of Array
187
+ expect(results.length).to eq per_page
188
+ results.each.with_index do |result, index|
189
+ expect(result).to be_kind_of MangoModel::Dispute
190
+ expect(result.id).not_to be_nil
191
+ next if index == results.length - 1
192
+ first_date = result.creation_date
193
+ second_date = results[index + 1].creation_date
194
+ expect(first_date >= second_date).to be_truthy
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end
200
+
201
+ describe '.all' do
202
+
203
+ context 'from a correctly-configured environment' do
204
+ context 'not having specified filters' do
205
+ default_per_page = 10
206
+
207
+ it 'retrieves list with default parameters' do
208
+ results = MangoApi::Disputes.all
209
+
210
+ expect(results).to be_kind_of Array
211
+ expect(results.length).to eq default_per_page
212
+ results.each do |result|
213
+ expect(result).to be_kind_of MangoModel::Dispute
214
+ expect(result.id).not_to be_nil
215
+ end
216
+ end
217
+ end
218
+
219
+ context 'having specified filters' do
220
+ per_page = 11
221
+ status = MangoModel::DisputeStatus::CLOSED
222
+
223
+ it 'retrieves list with specified parameters' do
224
+ results = MangoApi::Disputes.all do |filter|
225
+ filter.page = 1
226
+ filter.per_page = per_page
227
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
228
+ filter.sort_direction = MangoPay::SortDirection::DESC
229
+ filter.status = status
230
+ end
231
+
232
+ expect(results).to be_kind_of Array
233
+ expect(results.length).to eq per_page
234
+ results.each.with_index do |result, index|
235
+ expect(result).to be_kind_of MangoModel::Dispute
236
+ expect(result.id).not_to be_nil
237
+ expect(result.status).to be status
238
+ next if index == results.length - 1
239
+ first_date = result.creation_date
240
+ second_date = results[index + 1].creation_date
241
+ expect(first_date >= second_date).to be_truthy
242
+ end
243
+ end
244
+ end
245
+ end
246
+ end
247
+ end
248
+
249
+ describe MangoApi::Repudiations do
250
+
251
+ describe '.get' do
252
+
253
+ context "given an existing entity's ID" do
254
+ id = REPUDIATION_PERSISTED.id
255
+
256
+ it 'retrieves the corresponding entity' do
257
+ expect(id).not_to be_nil, 'there is no repudiation to retrieve'
258
+ retrieved = MangoApi::Repudiations.get id
259
+
260
+ expect(retrieved).to be_kind_of MangoModel::Repudiation
261
+ expect(retrieved.id).not_to be_nil
262
+ end
263
+ end
264
+ end
265
265
  end