adyen-ruby-api-library 11.1.0 → 11.3.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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/workflows/codeql.yml +4 -4
  4. data/.github/workflows/label_new_issues.yml +1 -1
  5. data/.github/workflows/release.yml +2 -2
  6. data/.github/workflows/ruby.yml +11 -3
  7. data/.github/workflows/rubygems_release.yml +2 -2
  8. data/.github/workflows/stale.yml +1 -1
  9. data/AGENTS.md +73 -0
  10. data/README.md +3 -0
  11. data/VERSION +1 -1
  12. data/lib/adyen/client.rb +18 -8
  13. data/lib/adyen/services/balanceControl/balance_control_api.rb +1 -3
  14. data/lib/adyen/services/balancePlatform/account_holders_api.rb +14 -18
  15. data/lib/adyen/services/balancePlatform/authorized_card_users_api.rb +4 -12
  16. data/lib/adyen/services/balancePlatform/balance_accounts_api.rb +10 -30
  17. data/lib/adyen/services/balancePlatform/balances_api.rb +5 -15
  18. data/lib/adyen/services/balancePlatform/bank_account_validation_api.rb +1 -3
  19. data/lib/adyen/services/balancePlatform/card_orders_api.rb +2 -6
  20. data/lib/adyen/services/balancePlatform/direct_debit_mandates_api.rb +48 -0
  21. data/lib/adyen/services/balancePlatform/grant_accounts_api.rb +1 -3
  22. data/lib/adyen/services/balancePlatform/grant_offers_api.rb +2 -6
  23. data/lib/adyen/services/balancePlatform/manage_card_pin_api.rb +3 -9
  24. data/lib/adyen/services/balancePlatform/manage_sca_devices_api.rb +6 -18
  25. data/lib/adyen/services/balancePlatform/network_tokens_api.rb +2 -6
  26. data/lib/adyen/services/balancePlatform/payment_instrument_groups_api.rb +3 -9
  27. data/lib/adyen/services/balancePlatform/payment_instruments_api.rb +9 -27
  28. data/lib/adyen/services/balancePlatform/platform_api.rb +3 -9
  29. data/lib/adyen/services/balancePlatform/sca_association_management_api.rb +40 -0
  30. data/lib/adyen/services/balancePlatform/sca_device_management_api.rb +40 -0
  31. data/lib/adyen/services/balancePlatform/transaction_rules_api.rb +4 -12
  32. data/lib/adyen/services/balancePlatform/transfer_limits_balance_account_level_api.rb +6 -18
  33. data/lib/adyen/services/balancePlatform/transfer_limits_balance_platform_level_api.rb +4 -12
  34. data/lib/adyen/services/balancePlatform/transfer_routes_api.rb +1 -3
  35. data/lib/adyen/services/balancePlatform.rb +15 -0
  36. data/lib/adyen/services/binLookup/bin_lookup_api.rb +2 -6
  37. data/lib/adyen/services/capital/dynamic_offers_api.rb +40 -0
  38. data/lib/adyen/services/capital/grant_accounts_api.rb +24 -0
  39. data/lib/adyen/services/capital/grant_offers_api.rb +32 -0
  40. data/lib/adyen/services/capital/grants_api.rb +64 -0
  41. data/lib/adyen/services/capital.rb +39 -0
  42. data/lib/adyen/services/checkout/donations_api.rb +2 -6
  43. data/lib/adyen/services/checkout/modifications_api.rb +6 -18
  44. data/lib/adyen/services/checkout/orders_api.rb +3 -9
  45. data/lib/adyen/services/checkout/payment_links_api.rb +3 -9
  46. data/lib/adyen/services/checkout/payments_api.rb +6 -18
  47. data/lib/adyen/services/checkout/recurring_api.rb +11 -9
  48. data/lib/adyen/services/checkout/utility_api.rb +4 -12
  49. data/lib/adyen/services/dataProtection/data_protection_api.rb +1 -3
  50. data/lib/adyen/services/disputes/disputes_api.rb +5 -15
  51. data/lib/adyen/services/legalEntityManagement/business_lines_api.rb +4 -12
  52. data/lib/adyen/services/legalEntityManagement/documents_api.rb +4 -12
  53. data/lib/adyen/services/legalEntityManagement/hosted_onboarding_api.rb +3 -9
  54. data/lib/adyen/services/legalEntityManagement/legal_entities_api.rb +7 -21
  55. data/lib/adyen/services/legalEntityManagement/pci_questionnaires_api.rb +5 -15
  56. data/lib/adyen/services/legalEntityManagement/tax_e_delivery_consent_api.rb +2 -6
  57. data/lib/adyen/services/legalEntityManagement/terms_of_service_api.rb +5 -15
  58. data/lib/adyen/services/legalEntityManagement/transfer_instruments_api.rb +4 -12
  59. data/lib/adyen/services/management/account_company_level_api.rb +3 -9
  60. data/lib/adyen/services/management/account_merchant_level_api.rb +4 -12
  61. data/lib/adyen/services/management/account_store_level_api.rb +8 -24
  62. data/lib/adyen/services/management/allowed_origins_company_level_api.rb +4 -12
  63. data/lib/adyen/services/management/allowed_origins_merchant_level_api.rb +4 -12
  64. data/lib/adyen/services/management/android_files_company_level_api.rb +6 -18
  65. data/lib/adyen/services/management/api_credentials_company_level_api.rb +4 -12
  66. data/lib/adyen/services/management/api_credentials_merchant_level_api.rb +4 -12
  67. data/lib/adyen/services/management/api_key_company_level_api.rb +1 -3
  68. data/lib/adyen/services/management/api_key_merchant_level_api.rb +1 -3
  69. data/lib/adyen/services/management/client_key_company_level_api.rb +1 -3
  70. data/lib/adyen/services/management/client_key_merchant_level_api.rb +1 -3
  71. data/lib/adyen/services/management/my_api_credential_api.rb +6 -18
  72. data/lib/adyen/services/management/payment_methods_merchant_level_api.rb +6 -18
  73. data/lib/adyen/services/management/payout_settings_merchant_level_api.rb +5 -15
  74. data/lib/adyen/services/management/split_configuration_merchant_level_api.rb +9 -27
  75. data/lib/adyen/services/management/terminal_actions_company_level_api.rb +2 -6
  76. data/lib/adyen/services/management/terminal_actions_terminal_level_api.rb +1 -3
  77. data/lib/adyen/services/management/terminal_orders_company_level_api.rb +10 -30
  78. data/lib/adyen/services/management/terminal_orders_merchant_level_api.rb +10 -30
  79. data/lib/adyen/services/management/terminal_settings_company_level_api.rb +4 -12
  80. data/lib/adyen/services/management/terminal_settings_merchant_level_api.rb +4 -12
  81. data/lib/adyen/services/management/terminal_settings_store_level_api.rb +8 -24
  82. data/lib/adyen/services/management/terminal_settings_terminal_level_api.rb +4 -12
  83. data/lib/adyen/services/management/terminals_terminal_level_api.rb +2 -6
  84. data/lib/adyen/services/management/users_company_level_api.rb +4 -12
  85. data/lib/adyen/services/management/users_merchant_level_api.rb +4 -12
  86. data/lib/adyen/services/management/webhooks_company_level_api.rb +7 -21
  87. data/lib/adyen/services/management/webhooks_merchant_level_api.rb +7 -21
  88. data/lib/adyen/services/payment/modifications_api.rb +8 -24
  89. data/lib/adyen/services/payment/payments_api.rb +5 -15
  90. data/lib/adyen/services/paymentsApp/payments_app_api.rb +5 -15
  91. data/lib/adyen/services/payout/initialization_api.rb +3 -9
  92. data/lib/adyen/services/payout/instant_payouts_api.rb +1 -3
  93. data/lib/adyen/services/payout/reviewing_api.rb +2 -6
  94. data/lib/adyen/services/posMobile/pos_mobile_api.rb +1 -3
  95. data/lib/adyen/services/recurring/recurring_api.rb +7 -19
  96. data/lib/adyen/services/recurring.rb +1 -1
  97. data/lib/adyen/services/service.rb +10 -2
  98. data/lib/adyen/services/sessionAuthentication/session_authentication_api.rb +1 -3
  99. data/lib/adyen/services/storedValue/stored_value_api.rb +6 -18
  100. data/lib/adyen/services/transfers/capital_api.rb +3 -9
  101. data/lib/adyen/services/transfers/transactions_api.rb +2 -6
  102. data/lib/adyen/services/transfers/transfers_api.rb +6 -18
  103. data/lib/adyen/utils/hmac_validator.rb +0 -1
  104. data/lib/adyen/version.rb +1 -1
  105. data/lib/adyen-ruby-api-library.rb +1 -0
  106. data/sdk-generation-log/balancecontrol.json +8 -0
  107. data/sdk-generation-log/balanceplatform.json +8 -0
  108. data/sdk-generation-log/binlookup.json +8 -0
  109. data/sdk-generation-log/capital.json +8 -0
  110. data/sdk-generation-log/checkout.json +8 -0
  111. data/sdk-generation-log/dataprotection.json +8 -0
  112. data/sdk-generation-log/disputes.json +8 -0
  113. data/sdk-generation-log/legalentitymanagement.json +8 -0
  114. data/sdk-generation-log/management.json +8 -0
  115. data/sdk-generation-log/payment.json +8 -0
  116. data/sdk-generation-log/paymentsapp.json +8 -0
  117. data/sdk-generation-log/payout.json +8 -0
  118. data/sdk-generation-log/posmobile.json +8 -0
  119. data/sdk-generation-log/recurring.json +8 -0
  120. data/sdk-generation-log/sessionauthentication.json +8 -0
  121. data/sdk-generation-log/storedvalue.json +8 -0
  122. data/sdk-generation-log/transfers.json +8 -0
  123. data/spec/balance_platform_spec.rb +111 -0
  124. data/spec/capital_spec.rb +268 -0
  125. data/spec/client_spec.rb +206 -68
  126. data/spec/mocks/requests/BalancePlatform/update_mandate.json +14 -0
  127. data/spec/mocks/responses/BalancePlatform/get_list_of_mandates.json +19 -0
  128. data/spec/mocks/responses/BalancePlatform/get_mandate_by_id.json +14 -0
  129. data/spec/mocks/responses/BalancePlatform/get_tax_form_summary.json +17 -0
  130. data/spec/mocks/responses/Capital/calculate-preliminary-offer-from-dynamic-offer.json +16 -0
  131. data/spec/mocks/responses/Capital/create-static-offer-from-dynamic-offer.json +9 -0
  132. data/spec/mocks/responses/Capital/get-all-dynamic-offers.json +18 -0
  133. data/spec/mocks/responses/Capital/get-grant-account-success.json +20 -0
  134. data/spec/mocks/responses/Capital/get-grant-disbursement-success.json +26 -0
  135. data/spec/mocks/responses/Capital/get-grant-disbursements-success.json +30 -0
  136. data/spec/mocks/responses/Capital/get-grant-offer-success.json +31 -0
  137. data/spec/mocks/responses/Capital/get-grant-success.json +22 -0
  138. data/spec/mocks/responses/Capital/grant-offers-success.json +19 -0
  139. data/spec/mocks/responses/Capital/grants-success.json +26 -0
  140. data/spec/mocks/responses/Capital/request-grant.json +31 -0
  141. data/spec/mocks/responses/Capital/update-grant-disbursement-success.json +26 -0
  142. data/spec/service_spec.rb +40 -0
  143. data/templates/api-small.mustache +1 -3
  144. data/templates/api.mustache +1 -3
  145. metadata +44 -1
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "dataprotection",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:47Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "disputes",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:52Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "legalentitymanagement",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:46Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "management",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:49Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "payment",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:48Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "paymentsapp",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:40:00Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "payout",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:45Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "posmobile",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:47Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "recurring",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:48Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "sessionauthentication",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:49Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "storedvalue",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:48Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "service": "transfers",
3
+ "project": "ruby",
4
+ "generatedAt": "2026-04-20T13:39:51Z",
5
+ "openapiCommitSha": "3550ecd3f320efaad6bee55ffed5122cb9ba09d5",
6
+ "automationCommitSha": "4ad0c0c7e87bc0e5994a9a3350a991d0691350bb",
7
+ "libraryCommitSha": "60ccdbdbbb7069d54600a8a8cd19eea245661134"
8
+ }
@@ -384,6 +384,117 @@ RSpec.describe Adyen::BalancePlatform, service: 'balancePlatform' do
384
384
  expect(response_hash).to be_a_kind_of Hash
385
385
  end
386
386
 
387
+ it 'makes a get_tax_form_summary GET call' do
388
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_tax_form_summary.json')
389
+ account_holder_id = 'AH3227C223222C5GKR23686TF'
390
+
391
+ url = @shared_values[:client].service_url(
392
+ @shared_values[:service],
393
+ "accountHolders/#{account_holder_id}/taxFormSummary",
394
+ @shared_values[:client].balance_platform.version
395
+ )
396
+ WebMock.stub_request(:get, url)
397
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
398
+ .to_return(body: response_body)
399
+
400
+ result = @shared_values[:client].balance_platform.account_holders_api
401
+ .get_tax_form_summary(account_holder_id)
402
+ response_hash = result.response
403
+
404
+ expect(result.status).to eq(200)
405
+ expect(response_hash).to eq(JSON.parse(response_body))
406
+ expect(response_hash).to be_a Adyen::HashWithAccessors
407
+ expect(response_hash).to be_a_kind_of Hash
408
+ end
409
+
410
+ ## directDebitMandates
411
+ it 'makes a get_list_of_mandates GET call' do
412
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_list_of_mandates.json')
413
+
414
+ url = @shared_values[:client].service_url(
415
+ @shared_values[:service],
416
+ 'mandates',
417
+ @shared_values[:client].balance_platform.version
418
+ )
419
+ WebMock.stub_request(:get, url)
420
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
421
+ .to_return(body: response_body)
422
+
423
+ result = @shared_values[:client].balance_platform.direct_debit_mandates_api.get_list_of_mandates
424
+ response_hash = result.response
425
+
426
+ expect(result.status).to eq(200)
427
+ expect(response_hash).to eq(JSON.parse(response_body))
428
+ expect(response_hash).to be_a Adyen::HashWithAccessors
429
+ expect(response_hash).to be_a_kind_of Hash
430
+ end
431
+
432
+ it 'makes a get_mandate_by_id GET call' do
433
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_mandate_by_id.json')
434
+ mandate_id = 'MNDT7QXPLKT9R333640TX334709E'
435
+
436
+ url = @shared_values[:client].service_url(
437
+ @shared_values[:service],
438
+ "mandates/#{mandate_id}",
439
+ @shared_values[:client].balance_platform.version
440
+ )
441
+ WebMock.stub_request(:get, url)
442
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
443
+ .to_return(body: response_body)
444
+
445
+ result = @shared_values[:client].balance_platform.direct_debit_mandates_api.get_mandate_by_id(mandate_id)
446
+ response_hash = result.response
447
+
448
+ expect(result.status).to eq(200)
449
+ expect(response_hash).to eq(JSON.parse(response_body))
450
+ expect(response_hash).to be_a Adyen::HashWithAccessors
451
+ expect(response_hash).to be_a_kind_of Hash
452
+ end
453
+
454
+ it 'makes a cancel_mandate POST call' do
455
+ mandate_id = 'MNDT7QXPLKT9R333640TX334709E'
456
+
457
+ url = @shared_values[:client].service_url(
458
+ @shared_values[:service],
459
+ "mandates/#{mandate_id}/cancel",
460
+ @shared_values[:client].balance_platform.version
461
+ )
462
+ WebMock.stub_request(:post, url)
463
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
464
+ .to_return(status: 202, body: '')
465
+
466
+ result = @shared_values[:client].balance_platform.direct_debit_mandates_api.cancel_mandate(mandate_id)
467
+
468
+ expect(result.status).to eq(202)
469
+ end
470
+
471
+ it 'makes an update_mandate PATCH call' do
472
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/update_mandate.json'))
473
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_mandate_by_id.json')
474
+ mandate_id = 'MNDT7QXPLKT9R333640TX334709E'
475
+
476
+ url = @shared_values[:client].service_url(
477
+ @shared_values[:service],
478
+ "mandates/#{mandate_id}",
479
+ @shared_values[:client].balance_platform.version
480
+ )
481
+ WebMock.stub_request(:patch, url)
482
+ .with(
483
+ body: request_body,
484
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
485
+ )
486
+ .to_return(body: response_body)
487
+
488
+ result = @shared_values[:client].balance_platform.direct_debit_mandates_api
489
+ .update_mandate(request_body, mandate_id)
490
+ response_hash = result.response
491
+
492
+ expect(result.status).to eq(200)
493
+ expect(response_hash).to eq(JSON.parse(response_body))
494
+ expect(response_hash).to be_a Adyen::HashWithAccessors
495
+ expect(response_hash).to be_a_kind_of Hash
496
+ end
497
+
387
498
  ## authorisedCardUsers
388
499
  it 'makes a get_all_authorised_card_users GET call' do
389
500
  response_body = json_from_file('mocks/responses/BalancePlatform/get_all_authorised_card_users.json')
@@ -0,0 +1,268 @@
1
+ require 'spec_helper'
2
+ require 'json'
3
+
4
+ RSpec.describe Adyen::Capital do
5
+ let(:client) { create_client(:api_key) }
6
+ let(:service) { 'Capital' }
7
+ let(:version) { client.capital.version }
8
+
9
+ describe 'DynamicOffersApi' do
10
+ let(:dynamic_offer_id) { 'DO00000000000000000000001' }
11
+
12
+ it 'calculates a preliminary offer from a dynamic offer' do
13
+ response_body = json_from_file('mocks/responses/Capital/calculate-preliminary-offer-from-dynamic-offer.json')
14
+ request_payload = { "amount" => { "currency" => "EUR", "value" => 10000 } }
15
+
16
+ url = client.service_url(service, "dynamicOffers/#{dynamic_offer_id}/calculate", version)
17
+
18
+ WebMock.stub_request(:post, url)
19
+ .with(
20
+ body: request_payload,
21
+ headers: { 'x-api-key' => client.api_key }
22
+ )
23
+ .to_return(body: response_body)
24
+
25
+ result = client.capital.dynamic_offers_api.calculate_preliminary_offer_from_dynamic_offer(request_payload, dynamic_offer_id)
26
+
27
+ expect(result.status).to eq(200)
28
+ expect(result.response).to eq(JSON.parse(response_body))
29
+ expect(result.response).to be_a(Adyen::HashWithAccessors)
30
+ expect(result.response['id']).to eq(dynamic_offer_id)
31
+ end
32
+
33
+ it 'creates a static offer from a dynamic offer' do
34
+ response_body = json_from_file('mocks/responses/Capital/create-static-offer-from-dynamic-offer.json')
35
+ request_payload = { "amount" => { "currency" => "EUR", "value" => 10000 } }
36
+
37
+ url = client.service_url(service, "dynamicOffers/#{dynamic_offer_id}/grantOffer", version)
38
+
39
+ WebMock.stub_request(:post, url)
40
+ .with(
41
+ body: request_payload,
42
+ headers: { 'x-api-key' => client.api_key }
43
+ )
44
+ .to_return(body: response_body)
45
+
46
+ result = client.capital.dynamic_offers_api.create_static_offer_from_dynamic_offer(request_payload, dynamic_offer_id)
47
+
48
+ expect(result.status).to eq(200)
49
+ expect(result.response).to eq(JSON.parse(response_body))
50
+ expect(result.response).to be_a(Adyen::HashWithAccessors)
51
+ expect(result.response['id']).to eq('GO00000000000000000000002')
52
+ end
53
+
54
+ it 'gets all dynamic offers' do
55
+ response_body = json_from_file('mocks/responses/Capital/get-all-dynamic-offers.json')
56
+
57
+ url = client.service_url(service, 'dynamicOffers', version)
58
+
59
+ WebMock.stub_request(:get, url)
60
+ .with(headers: { 'x-api-key' => client.api_key })
61
+ .to_return(body: response_body)
62
+
63
+ result = client.capital.dynamic_offers_api.get_all_dynamic_offers
64
+
65
+ expect(result.status).to eq(200)
66
+ expect(result.response).to eq(JSON.parse(response_body))
67
+ expect(result.response).to be_a(Adyen::HashWithAccessors)
68
+ expect(result.response['dynamicOffers'].first['id']).to eq(dynamic_offer_id)
69
+ end
70
+
71
+ it 'gets all dynamic offers with query params' do
72
+ response_body = json_from_file('mocks/responses/Capital/get-all-dynamic-offers.json')
73
+ account_holder_id = 'AH00000000000000000000001'
74
+
75
+ url = client.service_url(service, 'dynamicOffers', version)
76
+
77
+ WebMock.stub_request(:get, url)
78
+ .with(
79
+ query: { 'accountHolderId' => account_holder_id },
80
+ headers: { 'x-api-key' => client.api_key }
81
+ )
82
+ .to_return(body: response_body)
83
+
84
+ result = client.capital.dynamic_offers_api.get_all_dynamic_offers(query_params: { 'accountHolderId' => account_holder_id })
85
+
86
+ expect(result.status).to eq(200)
87
+ expect(result.response).to eq(JSON.parse(response_body))
88
+ end
89
+ end
90
+
91
+ describe 'GrantAccountsApi' do
92
+ it 'gets grant account information' do
93
+ response_body = json_from_file('mocks/responses/Capital/get-grant-account-success.json')
94
+ grant_account_id = 'CG00000000000000000000001'
95
+
96
+ url = client.service_url(service, "grantAccounts/#{grant_account_id}", version)
97
+
98
+ WebMock.stub_request(:get, url)
99
+ .with(headers: { 'x-api-key' => client.api_key })
100
+ .to_return(body: response_body)
101
+
102
+ result = client.capital.grant_accounts_api.get_grant_account_information(grant_account_id)
103
+
104
+ expect(result.status).to eq(200)
105
+ expect(result.response).to eq(JSON.parse(response_body))
106
+ expect(result.response).to be_a(Adyen::HashWithAccessors)
107
+ expect(result.response).to be_a(Hash)
108
+ end
109
+ end
110
+
111
+ describe 'GrantOffersApi' do
112
+ it 'gets all grant offers with query params' do
113
+ response_body = json_from_file('mocks/responses/Capital/grant-offers-success.json')
114
+ account_holder_id = 'AH00000000000000000000001'
115
+
116
+ url = client.service_url(service, 'grantOffers', version)
117
+
118
+ WebMock.stub_request(:get, url)
119
+ .with(
120
+ query: { 'accountHolderId' => account_holder_id },
121
+ headers: { 'x-api-key' => client.api_key }
122
+ )
123
+ .to_return(body: response_body)
124
+
125
+ result = client.capital.grant_offers_api.get_all_grant_offers(query_params: { 'accountHolderId' => account_holder_id })
126
+
127
+ expect(result.status).to eq(200)
128
+ expect(result.response).to eq(JSON.parse(response_body))
129
+ end
130
+
131
+ it 'gets all grant offers without query params' do
132
+ response_body = json_from_file('mocks/responses/Capital/grant-offers-success.json')
133
+
134
+ url = client.service_url(service, 'grantOffers', version)
135
+
136
+ WebMock.stub_request(:get, url)
137
+ .with(headers: { 'x-api-key' => client.api_key })
138
+ .to_return(body: response_body)
139
+
140
+ result = client.capital.grant_offers_api.get_all_grant_offers
141
+
142
+ expect(result.status).to eq(200)
143
+ expect(result.response).to eq(JSON.parse(response_body))
144
+ end
145
+
146
+ it 'gets a specific grant offer' do
147
+ response_body = json_from_file('mocks/responses/Capital/get-grant-offer-success.json')
148
+ id = 'GO00000000000000000000001'
149
+
150
+ url = client.service_url(service, "grantOffers/#{id}", version)
151
+
152
+ WebMock.stub_request(:get, url)
153
+ .with(headers: { 'x-api-key' => client.api_key })
154
+ .to_return(body: response_body)
155
+
156
+ result = client.capital.grant_offers_api.get_grant_offer(id)
157
+
158
+ expect(result.status).to eq(200)
159
+ expect(result.response).to eq(JSON.parse(response_body))
160
+ end
161
+ end
162
+
163
+ describe 'GrantsApi' do
164
+ it 'gets a specific grant' do
165
+ response_body = json_from_file('mocks/responses/Capital/get-grant-success.json')
166
+ id = 'GR00000000000000000000001'
167
+
168
+ url = client.service_url(service, "grants/#{id}", version)
169
+
170
+ WebMock.stub_request(:get, url)
171
+ .with(headers: { 'x-api-key' => client.api_key })
172
+ .to_return(body: response_body)
173
+
174
+ result = client.capital.grants_api.get_grant(id)
175
+
176
+ expect(result.status).to eq(200)
177
+ expect(result.response).to eq(JSON.parse(response_body))
178
+ end
179
+
180
+ it 'gets all grants' do
181
+ response_body = json_from_file('mocks/responses/Capital/grants-success.json')
182
+
183
+ url = client.service_url(service, 'grants', version)
184
+
185
+ WebMock.stub_request(:get, url)
186
+ .with(headers: { 'x-api-key' => client.api_key })
187
+ .to_return(body: response_body)
188
+
189
+ result = client.capital.grants_api.get_all_grants
190
+
191
+ expect(result.status).to eq(200)
192
+ expect(result.response).to eq(JSON.parse(response_body))
193
+ end
194
+
195
+ it 'requests a grant' do
196
+ request_payload = { "grantAccountId" => "GR00000000000000000000001" }
197
+ response_body = json_from_file('mocks/responses/Capital/request-grant.json')
198
+
199
+ url = client.service_url(service, 'grants', version)
200
+
201
+ WebMock.stub_request(:post, url)
202
+ .with(
203
+ body: request_payload,
204
+ headers: { 'x-api-key' => client.api_key }
205
+ )
206
+ .to_return(body: response_body)
207
+
208
+ result = client.capital.grants_api.request_grant(request_payload)
209
+
210
+ expect(result.status).to eq(200)
211
+ expect(result.response).to eq(JSON.parse(response_body))
212
+ end
213
+
214
+ it 'gets a grant disbursement' do
215
+ response_body = json_from_file('mocks/responses/Capital/get-grant-disbursement-success.json')
216
+ grant_id = 'GR00000000000000000000001'
217
+ disbursement_id = 'DI00000000000000000000001'
218
+
219
+ url = client.service_url(service, "grants/#{grant_id}/disbursements/#{disbursement_id}", version)
220
+
221
+ WebMock.stub_request(:get, url)
222
+ .with(headers: { 'x-api-key' => client.api_key })
223
+ .to_return(body: response_body)
224
+
225
+ result = client.capital.grants_api.get_grant_disbursement(grant_id, disbursement_id)
226
+
227
+ expect(result.status).to eq(200)
228
+ expect(result.response).to eq(JSON.parse(response_body))
229
+ end
230
+
231
+ it 'gets all grant disbursements' do
232
+ response_body = json_from_file('mocks/responses/Capital/get-grant-disbursements-success.json')
233
+ grant_id = 'GR00000000000000000000001'
234
+
235
+ url = client.service_url(service, "grants/#{grant_id}/disbursements", version)
236
+
237
+ WebMock.stub_request(:get, url)
238
+ .with(headers: { 'x-api-key' => client.api_key })
239
+ .to_return(body: response_body)
240
+
241
+ result = client.capital.grants_api.get_all_grant_disbursements(grant_id)
242
+
243
+ expect(result.status).to eq(200)
244
+ expect(result.response).to eq(JSON.parse(response_body))
245
+ end
246
+
247
+ it 'updates a grant disbursement' do
248
+ response_body = json_from_file('mocks/responses/Capital/update-grant-disbursement-success.json')
249
+ grant_id = 'GR00000000000000000000001'
250
+ disbursement_id = 'DI00000000000000000000001'
251
+ request_payload = {}
252
+
253
+ url = client.service_url(service, "grants/#{grant_id}/disbursements/#{disbursement_id}", version)
254
+
255
+ WebMock.stub_request(:patch, url)
256
+ .with(
257
+ body: request_payload,
258
+ headers: { 'x-api-key' => client.api_key }
259
+ )
260
+ .to_return(body: response_body)
261
+
262
+ result = client.capital.grants_api.update_grant_disbursement(request_payload, grant_id, disbursement_id)
263
+
264
+ expect(result.status).to eq(200)
265
+ expect(result.response).to eq(JSON.parse(response_body))
266
+ end
267
+ end
268
+ end