mangopay-v4 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +30 -0
  3. data/.rspec +4 -0
  4. data/.rubocop.yml +2 -0
  5. data/.travis.yml +13 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE +20 -0
  8. data/README.md +380 -0
  9. data/bin/mangopay +9 -0
  10. data/lib/mangopay.rb +133 -0
  11. data/lib/mangopay/api/api.rb +9 -0
  12. data/lib/mangopay/api/api_methods.rb +137 -0
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -0
  14. data/lib/mangopay/api/http_client.rb +325 -0
  15. data/lib/mangopay/api/service/bank_accounts.rb +146 -0
  16. data/lib/mangopay/api/service/cards.rb +152 -0
  17. data/lib/mangopay/api/service/client_wallets.rb +89 -0
  18. data/lib/mangopay/api/service/clients.rb +68 -0
  19. data/lib/mangopay/api/service/dispute_documents.rb +158 -0
  20. data/lib/mangopay/api/service/disputes.rb +187 -0
  21. data/lib/mangopay/api/service/e_money.rb +42 -0
  22. data/lib/mangopay/api/service/events.rb +47 -0
  23. data/lib/mangopay/api/service/hooks.rb +93 -0
  24. data/lib/mangopay/api/service/kyc_documents.rb +153 -0
  25. data/lib/mangopay/api/service/mandates.rb +142 -0
  26. data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
  27. data/lib/mangopay/api/service/pay_ins.rb +260 -0
  28. data/lib/mangopay/api/service/pay_outs.rb +54 -0
  29. data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
  30. data/lib/mangopay/api/service/refunds.rb +62 -0
  31. data/lib/mangopay/api/service/reports.rb +151 -0
  32. data/lib/mangopay/api/service/repudiations.rb +32 -0
  33. data/lib/mangopay/api/service/responses.rb +102 -0
  34. data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
  35. data/lib/mangopay/api/service/transactions.rb +183 -0
  36. data/lib/mangopay/api/service/transfers.rb +54 -0
  37. data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
  38. data/lib/mangopay/api/service/users.rb +163 -0
  39. data/lib/mangopay/api/service/wallets.rb +99 -0
  40. data/lib/mangopay/api/uri_provider.rb +35 -0
  41. data/lib/mangopay/common/json_tag_converter.rb +68 -0
  42. data/lib/mangopay/common/jsonifier.rb +249 -0
  43. data/lib/mangopay/common/log_provider.rb +34 -0
  44. data/lib/mangopay/common/rate_limit_interval.rb +17 -0
  45. data/lib/mangopay/common/read_only_fields.rb +27 -0
  46. data/lib/mangopay/common/response_error.rb +61 -0
  47. data/lib/mangopay/common/sort_direction.rb +15 -0
  48. data/lib/mangopay/common/sort_field.rb +13 -0
  49. data/lib/mangopay/common/template_url_options.rb +9 -0
  50. data/lib/mangopay/configuration.rb +39 -0
  51. data/lib/mangopay/environment.rb +66 -0
  52. data/lib/mangopay/model/address.rb +27 -0
  53. data/lib/mangopay/model/declared_ubo.rb +21 -0
  54. data/lib/mangopay/model/dispute_reason.rb +15 -0
  55. data/lib/mangopay/model/document_page_consult.rb +15 -0
  56. data/lib/mangopay/model/e_money.rb +18 -0
  57. data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
  58. data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
  59. data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
  60. data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
  61. data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
  62. data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
  63. data/lib/mangopay/model/entity/card.rb +45 -0
  64. data/lib/mangopay/model/entity/card_registration.rb +43 -0
  65. data/lib/mangopay/model/entity/client.rb +63 -0
  66. data/lib/mangopay/model/entity/client_wallet.rb +23 -0
  67. data/lib/mangopay/model/entity/dispute.rb +50 -0
  68. data/lib/mangopay/model/entity/dispute_document.rb +29 -0
  69. data/lib/mangopay/model/entity/entity_base.rb +18 -0
  70. data/lib/mangopay/model/entity/hook.rb +26 -0
  71. data/lib/mangopay/model/entity/kyc_document.rb +28 -0
  72. data/lib/mangopay/model/entity/mandate.rb +51 -0
  73. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
  74. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
  75. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
  76. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
  77. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
  78. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
  79. data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
  80. data/lib/mangopay/model/entity/pay_out.rb +22 -0
  81. data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
  82. data/lib/mangopay/model/entity/refund.rb +18 -0
  83. data/lib/mangopay/model/entity/report.rb +51 -0
  84. data/lib/mangopay/model/entity/repudiation.rb +18 -0
  85. data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
  86. data/lib/mangopay/model/entity/transaction.rb +52 -0
  87. data/lib/mangopay/model/entity/transfer.rb +13 -0
  88. data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
  89. data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
  90. data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
  91. data/lib/mangopay/model/entity/user/user.rb +18 -0
  92. data/lib/mangopay/model/entity/wallet.rb +28 -0
  93. data/lib/mangopay/model/enum/account_type.rb +24 -0
  94. data/lib/mangopay/model/enum/card_status.rb +15 -0
  95. data/lib/mangopay/model/enum/card_type.rb +33 -0
  96. data/lib/mangopay/model/enum/card_validity.rb +19 -0
  97. data/lib/mangopay/model/enum/country_iso.rb +759 -0
  98. data/lib/mangopay/model/enum/culture_code.rb +44 -0
  99. data/lib/mangopay/model/enum/currency_iso.rb +552 -0
  100. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
  101. data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
  102. data/lib/mangopay/model/enum/deposit_type.rb +15 -0
  103. data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
  104. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
  105. data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
  106. data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
  107. data/lib/mangopay/model/enum/dispute_status.rb +21 -0
  108. data/lib/mangopay/model/enum/dispute_type.rb +15 -0
  109. data/lib/mangopay/model/enum/document_status.rb +21 -0
  110. data/lib/mangopay/model/enum/download_format.rb +11 -0
  111. data/lib/mangopay/model/enum/event_type.rb +74 -0
  112. data/lib/mangopay/model/enum/funds_type.rb +15 -0
  113. data/lib/mangopay/model/enum/hook_status.rb +13 -0
  114. data/lib/mangopay/model/enum/hook_validity.rb +15 -0
  115. data/lib/mangopay/model/enum/income_range.rb +21 -0
  116. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
  117. data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
  118. data/lib/mangopay/model/enum/kyc_level.rb +13 -0
  119. data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
  120. data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
  121. data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
  122. data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
  123. data/lib/mangopay/model/enum/mandate_status.rb +24 -0
  124. data/lib/mangopay/model/enum/mandate_type.rb +11 -0
  125. data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
  126. data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
  127. data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
  128. data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
  129. data/lib/mangopay/model/enum/payment_status.rb +21 -0
  130. data/lib/mangopay/model/enum/person_type.rb +15 -0
  131. data/lib/mangopay/model/enum/platform_type.rb +23 -0
  132. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
  133. data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
  134. data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
  135. data/lib/mangopay/model/enum/report_status.rb +17 -0
  136. data/lib/mangopay/model/enum/report_type.rb +13 -0
  137. data/lib/mangopay/model/enum/secure_mode.rb +16 -0
  138. data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
  139. data/lib/mangopay/model/enum/transaction_status.rb +15 -0
  140. data/lib/mangopay/model/enum/transaction_type.rb +15 -0
  141. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
  142. data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
  143. data/lib/mangopay/model/event.rb +18 -0
  144. data/lib/mangopay/model/model.rb +194 -0
  145. data/lib/mangopay/model/money.rb +17 -0
  146. data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
  147. data/lib/mangopay/model/refund_reason.rb +15 -0
  148. data/lib/mangopay/model/report_filter.rb +83 -0
  149. data/lib/mangopay/model/request/cancel_request.rb +16 -0
  150. data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
  151. data/lib/mangopay/model/request/currency_request.rb +13 -0
  152. data/lib/mangopay/model/request/deactivation_request.rb +10 -0
  153. data/lib/mangopay/model/request/filter_request.rb +38 -0
  154. data/lib/mangopay/model/request/submit_document_request.rb +14 -0
  155. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
  156. data/lib/mangopay/model/request/upload_file_request.rb +9 -0
  157. data/lib/mangopay/model/response_replica.rb +27 -0
  158. data/lib/mangopay/util/custom_formatter.rb +12 -0
  159. data/lib/mangopay/util/custom_logger.rb +34 -0
  160. data/lib/mangopay/util/enum.rb +52 -0
  161. data/lib/mangopay/util/file_encoder.rb +16 -0
  162. data/lib/mangopay/util/non_instantiable.rb +6 -0
  163. data/lib/mangopay/util/storage_strategy.rb +10 -0
  164. data/lib/mangopay/util/void_logger.rb +6 -0
  165. data/mangopay.gemspec +32 -0
  166. data/spec/context/address_context.rb +25 -0
  167. data/spec/context/bank_account_context.rb +138 -0
  168. data/spec/context/card_context.rb +46 -0
  169. data/spec/context/client_context.rb +45 -0
  170. data/spec/context/dispute_context.rb +37 -0
  171. data/spec/context/dispute_document_context.rb +20 -0
  172. data/spec/context/hook_context.rb +16 -0
  173. data/spec/context/kyc_document_context.rb +23 -0
  174. data/spec/context/mandate_context.rb +27 -0
  175. data/spec/context/pay_in_context.rb +225 -0
  176. data/spec/context/pay_out_context.rb +39 -0
  177. data/spec/context/pre_authorization_context.rb +41 -0
  178. data/spec/context/refund_context.rb +33 -0
  179. data/spec/context/report_context.rb +22 -0
  180. data/spec/context/repudiation_context.rb +19 -0
  181. data/spec/context/settlement_transfer_context.rb +28 -0
  182. data/spec/context/transfer_context.rb +51 -0
  183. data/spec/context/ubo_declaration_context.rb +25 -0
  184. data/spec/context/user_context.rb +83 -0
  185. data/spec/context/wallet_context.rb +53 -0
  186. data/spec/mangopay/bank_accounts_spec.rb +229 -0
  187. data/spec/mangopay/cards_spec.rb +135 -0
  188. data/spec/mangopay/client_wallets_spec.rb +148 -0
  189. data/spec/mangopay/clients_spec.rb +55 -0
  190. data/spec/mangopay/configuration_spec.rb +126 -0
  191. data/spec/mangopay/dispute_documents_spec.rb +174 -0
  192. data/spec/mangopay/disputes_spec.rb +265 -0
  193. data/spec/mangopay/e_money_spec.rb +38 -0
  194. data/spec/mangopay/events_spec.rb +50 -0
  195. data/spec/mangopay/hooks_spec.rb +71 -0
  196. data/spec/mangopay/kyc_documents_spec.rb +180 -0
  197. data/spec/mangopay/mandates_spec.rb +219 -0
  198. data/spec/mangopay/oauth_tokens_spec.rb +41 -0
  199. data/spec/mangopay/pay_ins_spec.rb +181 -0
  200. data/spec/mangopay/pay_outs_spec.rb +39 -0
  201. data/spec/mangopay/pre_authorizations_spec.rb +58 -0
  202. data/spec/mangopay/refunds_spec.rb +40 -0
  203. data/spec/mangopay/reports_spec.rb +121 -0
  204. data/spec/mangopay/responses_spec.rb +295 -0
  205. data/spec/mangopay/settlement_transfers_spec.rb +37 -0
  206. data/spec/mangopay/transactions_spec.rb +233 -0
  207. data/spec/mangopay/transfers_spec.rb +38 -0
  208. data/spec/mangopay/ubo_declarations_spec.rb +65 -0
  209. data/spec/mangopay/users_spec.rb +146 -0
  210. data/spec/mangopay/wallets_spec.rb +104 -0
  211. data/spec/resources/logo.png +0 -0
  212. data/spec/resources/test_pdf.pdf +0 -0
  213. data/spec/spec_helper.rb +72 -0
  214. metadata +349 -0
@@ -0,0 +1,174 @@
1
+ require_relative '../../lib/mangopay/api/service/dispute_documents'
2
+ require_relative '../context/dispute_document_context'
3
+ require_relative '../../lib/mangopay/common/sort_field'
4
+ require_relative '../../lib/mangopay/common/sort_direction'
5
+
6
+ describe MangoApi::DisputeDocuments do
7
+ include_context 'dispute_document_context'
8
+
9
+ describe '.create' do
10
+
11
+ context 'given a valid object' do
12
+ id = DISPUTE_PERSISTED.id
13
+ document = DISPUTE_DOCUMENT_DATA
14
+
15
+ it 'creates the dispute document entity' do
16
+ expect { MangoApi::DisputeDocuments.create(document, id) }.to(raise_error { |err|
17
+ expect(err).to be_kind_of MangoPay::ResponseError
18
+ expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
19
+ })
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '.upload_page' do
25
+
26
+ context "given a valid file's path" do
27
+ path = File.join(File.dirname(__FILE__), '..', 'resources', 'test_pdf.pdf')
28
+
29
+ it "uploads the file as one of the dispute document's pages" do
30
+ expect do
31
+ MangoApi::DisputeDocuments.upload_page(DISPUTE_DOCUMENT_PERSISTED.id,
32
+ DISPUTE_DOCUMENT_PERSISTED.dispute_id,
33
+ path)
34
+ end.to(raise_error do |err|
35
+ expect(err).to be_kind_of MangoPay::ResponseError
36
+ expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
37
+ end)
38
+ end
39
+ end
40
+ end
41
+
42
+ describe '.submit' do
43
+
44
+ context "given an existing entity's ID" do
45
+ created = DISPUTE_DOCUMENT_PERSISTED
46
+ id = created.id
47
+
48
+ it 'submits the corresponding entity for approval' do
49
+ expect { MangoApi::DisputeDocuments.submit(id, created.dispute_id) }.to(raise_error do |err|
50
+ expect(err).to be_kind_of MangoPay::ResponseError
51
+ expect(err.type).to eq 'cant_validate_empty_document'
52
+ end)
53
+ end
54
+ end
55
+ end
56
+
57
+ describe '.get' do
58
+
59
+ context "given an existing entity's ID" do
60
+ document = DISPUTE_DOCUMENT_PERSISTED
61
+ id = document.id
62
+
63
+ it 'retrieves the corresponding entity' do
64
+ retrieved = MangoApi::DisputeDocuments.get id
65
+
66
+ expect(retrieved).to be_kind_of MangoModel::DisputeDocument
67
+ expect(retrieved.id).to eq id
68
+ end
69
+ end
70
+ end
71
+
72
+ describe '.of_dispute' do
73
+
74
+ context "given an existing dispute entity's ID" do
75
+ id = DISPUTE_PERSISTED.id
76
+
77
+ context 'not having specified filters' do
78
+ it 'retrieves list with default parameters' do
79
+ results = MangoApi::DisputeDocuments.of_dispute id
80
+
81
+ expect(results).to be_kind_of Array
82
+ results.each do |result|
83
+ expect(result).to be_kind_of MangoModel::DisputeDocument
84
+ expect(result.id).not_to be_nil
85
+ end
86
+ end
87
+ end
88
+
89
+ context 'having specified filters' do
90
+ per_page = 5
91
+
92
+ it 'retrieves a list with specified parameters' do
93
+ results = MangoApi::DisputeDocuments.of_dispute id do |filter|
94
+ filter.page = 1
95
+ filter.per_page = per_page
96
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
97
+ filter.sort_direction = MangoPay::SortDirection::DESC
98
+ end
99
+
100
+ expect(results).to be_kind_of Array
101
+ expect(results.length).to eq per_page
102
+ results.each.with_index do |result, index|
103
+ expect(result).to be_kind_of MangoModel::DisputeDocument
104
+ expect(result.id).not_to be_nil
105
+ next if index == results.length - 1
106
+ first_date = result.creation_date
107
+ second_date = results[index + 1].creation_date
108
+ expect(first_date >= second_date).to be_truthy
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+
115
+ describe '.all' do
116
+
117
+ context 'from a correctly-configured environment' do
118
+ context 'not having specified filters' do
119
+ default_per_page = 10
120
+
121
+ it 'retrieves list with default parameters' do
122
+ results = MangoApi::DisputeDocuments.all
123
+
124
+ expect(results).to be_kind_of Array
125
+ expect(results.length).to eq default_per_page
126
+ results.each do |result|
127
+ expect(result).to be_kind_of MangoModel::DisputeDocument
128
+ expect(result.id).not_to be_nil
129
+ end
130
+ end
131
+ end
132
+
133
+ context 'having specified filters' do
134
+ per_page = 11
135
+
136
+ it 'retrieves list with specified parameters' do
137
+ results = MangoApi::DisputeDocuments.all do |filter|
138
+ filter.page = 1
139
+ filter.per_page = per_page
140
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
141
+ filter.sort_direction = MangoPay::SortDirection::DESC
142
+ end
143
+
144
+ expect(results).to be_kind_of Array
145
+ expect(results.length).to eq per_page
146
+ results.each.with_index do |result, index|
147
+ expect(result).to be_kind_of MangoModel::DisputeDocument
148
+ expect(result.id).not_to be_nil
149
+ next if index == results.length - 1
150
+ first_date = result.creation_date
151
+ second_date = results[index + 1].creation_date
152
+ expect(first_date >= second_date).to be_truthy
153
+ end
154
+ end
155
+ end
156
+ end
157
+ end
158
+
159
+ describe '.consult' do
160
+
161
+ context "given an existing entity's ID" do
162
+ id = DISPUTE_DOCUMENT_PERSISTED.id
163
+
164
+ it 'creates the document page consult entities' do
165
+ results = MangoApi::DisputeDocuments.consult id
166
+
167
+ expect(results).to be_kind_of Array
168
+ results.each do |result|
169
+ expect(result).to be_kind_of MangoModel::DocumentPageConsult
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
@@ -0,0 +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
265
+ end
@@ -0,0 +1,38 @@
1
+ require_relative '../context/user_context'
2
+ require_relative '../../lib/mangopay/api/service/e_money'
3
+
4
+ describe MangoApi::EMoney do
5
+ include_context 'user_context'
6
+
7
+ describe '.of_user' do
8
+
9
+ describe "given an existing user entity's ID" do
10
+ id = NATURAL_USER_PERSISTED.id
11
+
12
+ context 'not having specified currency' do
13
+ default_currency = MangoModel::CurrencyIso::EUR
14
+
15
+ it 'retrieves the corresponding e-money entity in default currency' do
16
+ retrieved = MangoApi::EMoney.of_user id
17
+
18
+ expect(retrieved).to be_kind_of MangoModel::EMoney
19
+ expect(retrieved.credited_e_money.currency).to be default_currency
20
+ expect(retrieved.debited_e_money.currency).to be default_currency
21
+ end
22
+ end
23
+
24
+ # TODO: Results always come in EUR
25
+ # context 'having specified currency' do
26
+ # currency = MangoModel::CurrencyIso::GBP
27
+ #
28
+ # it 'retrieves the corresponding e-money entity in specified currency' do
29
+ # retrieved = MangoApi::EMoney.of_user id, currency
30
+ #
31
+ # expect(retrieved).to be_kind_of MangoModel::EMoney
32
+ # expect(retrieved.credited_e_money.currency).to be currency
33
+ # expect(retrieved.debited_e_money.currency).to be currency
34
+ # end
35
+ # end
36
+ end
37
+ end
38
+ end