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,50 @@
1
+ require_relative '../../lib/mangopay/api/service/events'
2
+ require_relative '../../lib/mangopay/common/sort_field'
3
+ require_relative '../../lib/mangopay/common/sort_direction'
4
+
5
+ describe MangoApi::Events do
6
+
7
+ describe '.all' do
8
+
9
+ context 'from a correctly-configured environment' do
10
+ context 'not having specified filters' do
11
+ default_per_page = 10
12
+
13
+ it 'retrieves list with default parameters' do
14
+ results = MangoApi::Events.all
15
+
16
+ expect(results).to be_kind_of Array
17
+ expect(results.length).to eq default_per_page
18
+ results.each do |result|
19
+ expect(result).to be_kind_of MangoModel::Event
20
+ expect(result.resource_id).not_to be_nil
21
+ end
22
+ end
23
+ end
24
+
25
+ context 'having specified filters' do
26
+ per_page = 13
27
+
28
+ it 'retrieves list with specified parameters' do
29
+ results = MangoApi::Events.all do |filter|
30
+ filter.page = 1
31
+ filter.per_page = per_page
32
+ filter.sort_field = MangoPay::SortField::DATE
33
+ filter.sort_direction = MangoPay::SortDirection::DESC
34
+ end
35
+
36
+ expect(results).to be_kind_of Array
37
+ expect(results.length).to eq per_page
38
+ results.each.with_index do |result, index|
39
+ expect(result).to be_kind_of MangoModel::Event
40
+ expect(result.resource_id).not_to be_nil
41
+ next if index == results.length - 1
42
+ first_date = result.date
43
+ second_date = results[index + 1].date
44
+ expect(first_date >= second_date).to be_truthy
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,71 @@
1
+ require_relative '../context/hook_context'
2
+ require_relative '../../lib/mangopay/api/service/hooks'
3
+ require_relative '../../lib/mangopay/model/enum/hook_status'
4
+ require_relative '../../lib/mangopay/common/sort_field'
5
+ require_relative '../../lib/mangopay/common/sort_direction'
6
+
7
+ describe MangoApi::Hooks do
8
+ include_context 'hook_context'
9
+
10
+
11
+ describe '.create' do
12
+
13
+ context 'given a valid object' do
14
+ hook = HOOK_DATA
15
+
16
+ it 'creates the hook entity' do
17
+ expect { MangoApi::Hooks.create hook }.to raise_error(MangoPay::ResponseError, /already.+registered/)
18
+ end
19
+ end
20
+ end
21
+
22
+ describe '.update' do
23
+
24
+ context 'given a valid object' do
25
+ url = 'https://www.hello.com/hook'
26
+ status = MangoModel::HookStatus::DISABLED
27
+ created = HOOK_PERSISTED
28
+ created.url = url
29
+ created.status = status
30
+
31
+ it 'updates the corresponding entity' do
32
+ updated = MangoApi::Hooks.update created
33
+
34
+ expect(updated).to be_kind_of MangoModel::Hook
35
+ expect(updated.id).to eq created.id
36
+ expect(updated.url).to eq url
37
+ expect(updated.status).to be status
38
+ end
39
+ end
40
+ end
41
+
42
+ describe '.get' do
43
+
44
+ context "given an existing entity's ID" do
45
+ id = HOOK_PERSISTED.id
46
+
47
+ it 'retrieves the corresponding entity' do
48
+ retrieved = MangoApi::Hooks.get id
49
+
50
+ expect(retrieved).to be_kind_of MangoModel::Hook
51
+ expect(retrieved.id).to eq id
52
+ end
53
+ end
54
+ end
55
+
56
+ describe '.all' do
57
+
58
+ context 'not having specified filters' do
59
+
60
+ it 'retrieves list of all events' do
61
+ results = MangoApi::Hooks.all
62
+
63
+ expect(results).to be_kind_of Array
64
+ results.each do |result|
65
+ expect(result).to be_kind_of MangoModel::Hook
66
+ expect(result.id).not_to be_nil
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,180 @@
1
+ require_relative '../context/kyc_document_context'
2
+ require_relative '../../lib/mangopay/api/service/kyc_documents'
3
+ require_relative '../../lib/mangopay/model/document_page_consult'
4
+ require_relative '../../lib/mangopay/model/entity/kyc_document'
5
+ require_relative '../../lib/mangopay/common/sort_field'
6
+ require_relative '../../lib/mangopay/common/sort_direction'
7
+
8
+ describe MangoApi::KycDocuments do
9
+ include_context 'kyc_document_context'
10
+
11
+ describe '.create' do
12
+
13
+ context 'given a valid object' do
14
+ kyc_doc = MangoModel::KycDocument.new
15
+ kyc_doc.type = MangoModel::KycDocumentType::IDENTITY_PROOF
16
+
17
+ it 'creates the kyc document entity' do
18
+ created = MangoApi::KycDocuments.create kyc_doc, NATURAL_USER_PERSISTED.id
19
+
20
+ expect(created).to be_kind_of MangoModel::KycDocument
21
+ expect(created.id).not_to be_nil
22
+ expect(created.status).to be MangoModel::DocumentStatus::CREATED
23
+ expect(its_the_same_kyc_doc(kyc_doc, created)).to be_truthy
24
+ end
25
+ end
26
+ end
27
+
28
+ describe '.upload_page' do
29
+
30
+ context "given a valid file's path" do
31
+ path = File.join(File.dirname(__FILE__), '..', 'resources', 'test_pdf.pdf')
32
+
33
+ it "uploads the file as one of the KYC document's pages" do
34
+ response = MangoApi::KycDocuments.upload_page KYC_DOCUMENT_PERSISTED.id,
35
+ NATURAL_USER_PERSISTED.id,
36
+ path
37
+ expect(response).to be_nil
38
+ end
39
+ end
40
+ end
41
+
42
+ describe '.submit' do
43
+
44
+ context "given an existing entity's ID" do
45
+ created = KYC_DOCUMENT_PERSISTED
46
+ id = created.id
47
+ # upload a page to allow submission
48
+ path = File.join(File.dirname(__FILE__), '..', 'resources', 'test_pdf.pdf')
49
+ MangoApi::KycDocuments.upload_page KYC_DOCUMENT_PERSISTED.id,
50
+ NATURAL_USER_PERSISTED.id,
51
+ path
52
+
53
+ it 'submits the corresponding entity for approval' do
54
+ submitted = MangoApi::KycDocuments.submit id, NATURAL_USER_PERSISTED.id
55
+
56
+ expect(submitted).to be_kind_of MangoModel::KycDocument
57
+ expect(submitted.id).to eq id
58
+ expect(submitted.status).to be MangoModel::DocumentStatus::VALIDATION_ASKED
59
+ expect(its_the_same_kyc_doc(created, submitted)).to be_truthy
60
+ end
61
+ end
62
+ end
63
+
64
+ describe '.of_user' do
65
+
66
+ context "given an existing user entity's ID" do
67
+ id = NATURAL_USER_PERSISTED.id
68
+ # prepare some test data
69
+ 10.times do
70
+ persist_kyc_doc KYC_DOCUMENT_DATA
71
+ end
72
+
73
+ context 'not having specified filters' do
74
+ default_per_page = 10
75
+
76
+ it 'retrieves list with default parameters' do
77
+ results = MangoApi::KycDocuments.of_user id
78
+
79
+ expect(results).to be_kind_of Array
80
+ expect(results.length).to eq default_per_page
81
+ results.each do |result|
82
+ expect(result).to be_kind_of MangoModel::KycDocument
83
+ expect(result.id).not_to be_nil
84
+ expect(result.user_id).to eq id
85
+ end
86
+ end
87
+ end
88
+
89
+ context 'having specified filters' do
90
+ per_page = 11
91
+
92
+ it 'retrieves list with specified parameters' do
93
+ results = MangoApi::KycDocuments.of_user 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::ASC
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::KycDocument
104
+ expect(result.id).not_to be_nil
105
+ expect(result.user_id).to eq id
106
+ next if index == results.length - 1
107
+ first_date = result.creation_date
108
+ second_date = results[index + 1].creation_date
109
+ expect(first_date <= second_date).to be_truthy
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
115
+
116
+ describe '.all' do
117
+
118
+ context 'from a correctly-configured environment' do
119
+ # prepare some test data
120
+ 10.times do
121
+ persist_kyc_doc KYC_DOCUMENT_DATA
122
+ end
123
+
124
+ context 'not having specified filters' do
125
+ default_per_page = 10
126
+
127
+ it 'retrieves list with default parameters' do
128
+ results = MangoApi::KycDocuments.all
129
+
130
+ expect(results).to be_kind_of Array
131
+ expect(results.length).to eq default_per_page
132
+ results.each do |result|
133
+ expect(result).to be_kind_of MangoModel::KycDocument
134
+ expect(result.id).not_to be_nil
135
+ end
136
+ end
137
+ end
138
+
139
+ context 'having specified filters' do
140
+ per_page = 11
141
+
142
+ it 'retrieves list with specified parameters' do
143
+ results = MangoApi::KycDocuments.all do |filter|
144
+ filter.page = 1
145
+ filter.per_page = per_page
146
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
147
+ filter.sort_direction = MangoPay::SortDirection::ASC
148
+ end
149
+
150
+ expect(results).to be_kind_of Array
151
+ expect(results.length).to eq per_page
152
+ results.each.with_index do |result, index|
153
+ expect(result).to be_kind_of MangoModel::KycDocument
154
+ expect(result.id).not_to be_nil
155
+ next if index == results.length - 1
156
+ first_date = result.creation_date
157
+ second_date = results[index + 1].creation_date
158
+ expect(first_date <= second_date).to be_truthy
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
164
+
165
+ describe '.consult' do
166
+
167
+ context "given an existing entity's ID" do
168
+ id = KYC_DOCUMENT_PERSISTED.id
169
+
170
+ it 'creates the document page consult entities' do
171
+ results = MangoApi::KycDocuments.consult id
172
+
173
+ expect(results).to be_kind_of Array
174
+ results.each do |result|
175
+ expect(result).to be_kind_of MangoModel::DocumentPageConsult
176
+ end
177
+ end
178
+ end
179
+ end
180
+ end
@@ -0,0 +1,219 @@
1
+ require_relative '../../lib/mangopay/api/service/mandates'
2
+ require_relative '../../spec/context/mandate_context'
3
+ require_relative '../../lib/mangopay/common/sort_field'
4
+ require_relative '../../lib/mangopay/common/sort_direction'
5
+
6
+ describe MangoApi::Mandates do
7
+ include_context 'mandate_context'
8
+
9
+ describe '.create' do
10
+
11
+ context 'given a valid object' do
12
+ mandate = MANDATE_DATA
13
+
14
+ it 'creates the mandate entity' do
15
+ created = MangoApi::Mandates.create mandate
16
+
17
+ expect(created).to be_kind_of MangoModel::Mandate
18
+ expect(created.id).not_to be_nil
19
+ expect(created.document_url).not_to be_nil
20
+ expect(created.execution_type).to be MangoModel::MandateExecutionType::WEB
21
+ expect(created.mandate_type).to be MangoModel::MandateType::DIRECT_DEBIT
22
+ expect(created.redirect_url).not_to be_nil
23
+ expect(created.return_url).not_to be_nil
24
+ expect(created.status).to be MangoModel::MandateStatus::CREATED
25
+ expect(created.user_id).not_to be_nil
26
+ expect(its_the_same_mandate(mandate, created)).to be_truthy
27
+ end
28
+ end
29
+ end
30
+
31
+ describe '.get' do
32
+
33
+ context "given an existing entity's ID" do
34
+ mandate = MANDATE_PERSISTED
35
+ id = mandate.id
36
+
37
+ it 'retrieves the corresponding entity' do
38
+ retrieved = MangoApi::Mandates.get id
39
+
40
+ expect(retrieved).to be_kind_of MangoModel::Mandate
41
+ expect(retrieved.id).to eq id
42
+ expect(its_the_same_mandate(mandate, retrieved)).to be_truthy
43
+ end
44
+ end
45
+ end
46
+
47
+ # describe '.cancel' do
48
+ #
49
+ # context "given an existing entity's ID" do
50
+ # mandate = MangoModel::Mandate.new
51
+ # mandate.bank_account_id = GB_ACCOUNT_PERSISTED.id
52
+ # mandate.culture = MangoModel::MandateCultureCode::EN
53
+ # mandate.return_url = 'http://www.my-site.com/returnURL/'
54
+ # created = MangoApi::Mandates.create mandate
55
+ # id = created.id
56
+ #
57
+ # it 'cancels the corresponding entity' do
58
+ #
59
+ # # Attention
60
+ # #
61
+ # # To make this test pass, you must pause execution with a breakpoint on
62
+ # # the following line, and use your browser to open the page received
63
+ # # in the +created.redirect_url+ property and click the Confirm button
64
+ # # before continuing.
65
+ # canceled = MangoApi::Mandates.cancel id # Place breakpoint here
66
+ #
67
+ # expect(canceled).to be_kind_of MangoModel::Mandate
68
+ # expect(canceled.id).to eq id
69
+ # expect(canceled.status).to be MangoModel::MandateStatus::FAILED
70
+ # expect(canceled.result_code).to eq '001806' # cancelled
71
+ # end
72
+ # end
73
+ # end
74
+
75
+ describe '.all' do
76
+
77
+ context 'not having specified filters' do
78
+ default_per_page = 10
79
+
80
+ it 'retrieves a list with default parameters' do
81
+ results = MangoApi::Mandates.all
82
+
83
+ expect(results).to be_kind_of Array
84
+ expect(results.length).to eq default_per_page
85
+ results.each do |result|
86
+ expect(result).to be_kind_of MangoModel::Mandate
87
+ expect(result.id).not_to be_nil
88
+ end
89
+ end
90
+ end
91
+
92
+ context 'having specified filters' do
93
+ per_page = 11
94
+
95
+ it 'retrieves a list with specified parameters' do
96
+ results = MangoApi::Mandates.all do |filter|
97
+ filter.page = 1
98
+ filter.per_page = per_page
99
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
100
+ filter.sort_direction = MangoPay::SortDirection::ASC
101
+ end
102
+
103
+ expect(results).to be_kind_of Array
104
+ expect(results.length).to be per_page
105
+ results.each.with_index do |result, index|
106
+ expect(result).to be_kind_of MangoModel::Mandate
107
+ expect(result.id).not_to be_nil
108
+ next if index == results.length - 1
109
+ first_date = result.creation_date
110
+ second_date = results[index + 1].creation_date
111
+ expect(first_date < second_date).to be_truthy
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ describe '.of_user' do
118
+ # prepare test data
119
+ 10.times do
120
+ persist_mandate build_mandate
121
+ end
122
+
123
+ describe "given an existing user entity's ID" do
124
+ id = NATURAL_USER_PERSISTED.id
125
+
126
+ context 'not having specified filters' do
127
+ default_per_page = 10
128
+
129
+ it 'retrieves a list with default parameters' do
130
+ results = MangoApi::Mandates.of_user id
131
+
132
+ expect(results).to be_kind_of Array
133
+ expect(results.length).to eq default_per_page
134
+ results.each do |result|
135
+ expect(result).to be_kind_of MangoModel::Mandate
136
+ expect(result.id).not_to be_nil
137
+ expect(result.user_id).to eq id
138
+ end
139
+ end
140
+ end
141
+
142
+ context 'having specified filters' do
143
+ per_page = 8
144
+
145
+ it 'retrieves a list with specified parameters' do
146
+ results = MangoApi::Mandates.of_user id do |filter|
147
+ filter.page = 1
148
+ filter.per_page = per_page
149
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
150
+ filter.sort_direction = MangoPay::SortDirection::ASC
151
+ end
152
+
153
+ expect(results).to be_kind_of Array
154
+ expect(results.length).to be per_page
155
+ results.each.with_index do |result, index|
156
+ expect(result).to be_kind_of MangoModel::Mandate
157
+ expect(result.id).not_to be_nil
158
+ expect(result.user_id).to eq id
159
+ next if index == results.length - 1
160
+ first_date = result.creation_date
161
+ second_date = results[index + 1].creation_date
162
+ expect(first_date <= second_date).to be_truthy
163
+ end
164
+ end
165
+ end
166
+ end
167
+ end
168
+
169
+ describe '.of_bank_account' do
170
+
171
+ context "given an existing bank account entity's ID" do
172
+ user_id = NATURAL_USER_PERSISTED.id
173
+ account_id = IBAN_ACCOUNT_PERSISTED.id
174
+
175
+ context 'not having specified filters' do
176
+ default_per_page = 10
177
+
178
+ it 'retrieves a list with default parameters' do
179
+ results = MangoApi::Mandates.of_bank_account(user_id, account_id)
180
+
181
+ expect(results).to be_kind_of Array
182
+ expect(results.length).to eq default_per_page
183
+ results.each.with_index do |result, index|
184
+ expect(result).to be_kind_of MangoModel::Mandate
185
+ expect(result.id).not_to be_nil
186
+ next if index == results.length - 1
187
+ first_date = result.creation_date
188
+ second_date = results[index + 1].creation_date
189
+ expect(first_date <= second_date).to be_truthy
190
+ end
191
+ end
192
+ end
193
+
194
+ context 'having specified filters' do
195
+ per_page = 3
196
+
197
+ it 'retrieves a list according to specified parameters' do
198
+ results = MangoApi::Mandates.of_bank_account(user_id, account_id) do |filter|
199
+ filter.page = 1
200
+ filter.per_page = per_page
201
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
202
+ filter.sort_direction = MangoPay::SortDirection::ASC
203
+ end
204
+
205
+ expect(results).to be_kind_of Array
206
+ expect(results.length).to eq per_page
207
+ results.each.with_index do |result, index|
208
+ expect(result).to be_kind_of MangoModel::Mandate
209
+ expect(result.id).not_to be_nil
210
+ next if index == results.length - 1
211
+ first_date = result.creation_date
212
+ second_date = results[index + 1].creation_date
213
+ expect(first_date <= second_date).to be_truthy
214
+ end
215
+ end
216
+ end
217
+ end
218
+ end
219
+ end