solidus_paypal_commerce_platform 0.3.2 → 0.5.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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +25 -2
  3. data/.rubocop.yml +6 -5
  4. data/CHANGELOG.md +180 -122
  5. data/Gemfile +16 -3
  6. data/README.md +27 -2
  7. data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/button_actions.js +3 -1
  8. data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/buttons.js +14 -0
  9. data/app/controllers/solidus_paypal_commerce_platform/orders_controller.rb +1 -1
  10. data/app/controllers/solidus_paypal_commerce_platform/payments_controller.rb +4 -2
  11. data/app/helpers/solidus_paypal_commerce_platform/button_options_helper.rb +4 -0
  12. data/app/models/solidus_paypal_commerce_platform/gateway.rb +20 -3
  13. data/app/models/solidus_paypal_commerce_platform/payment_method.rb +21 -1
  14. data/app/models/solidus_paypal_commerce_platform/payment_source.rb +12 -1
  15. data/app/models/solidus_paypal_commerce_platform/paypal_order.rb +6 -21
  16. data/app/models/solidus_paypal_commerce_platform/wizard.rb +1 -1
  17. data/bin/rails-engine +1 -1
  18. data/config/locales/en.yml +34 -1
  19. data/db/migrate/20211220133406_add_paypal_funding_source_to_paypal_commerce_platform_sources.rb +5 -0
  20. data/lib/paypal/access_token.rb +22 -0
  21. data/lib/paypal/lib.rb +19 -0
  22. data/lib/paypal/paypal_checkout_sdk/orders/orders_authorize_request.rb +44 -0
  23. data/lib/paypal/paypal_checkout_sdk/orders/orders_capture_request.rb +42 -0
  24. data/lib/paypal/paypal_checkout_sdk/orders/orders_create_request.rb +36 -0
  25. data/lib/paypal/paypal_checkout_sdk/orders/orders_get_request.rb +26 -0
  26. data/lib/paypal/paypal_checkout_sdk/orders/orders_patch_request.rb +77 -0
  27. data/lib/paypal/paypal_checkout_sdk/orders/orders_validate_request.rb +34 -0
  28. data/lib/paypal/paypal_checkout_sdk/payments/authorizations_capture_request.rb +38 -0
  29. data/lib/paypal/paypal_checkout_sdk/payments/authorizations_get_request.rb +26 -0
  30. data/lib/paypal/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb +45 -0
  31. data/lib/paypal/paypal_checkout_sdk/payments/authorizations_void_request.rb +27 -0
  32. data/lib/paypal/paypal_checkout_sdk/payments/captures_get_request.rb +26 -0
  33. data/lib/paypal/paypal_checkout_sdk/payments/captures_refund_request.rb +40 -0
  34. data/lib/paypal/paypal_checkout_sdk/payments/refunds_get_request.rb +26 -0
  35. data/lib/paypal/paypal_environment.rb +39 -0
  36. data/lib/paypal/paypal_http_client.rb +56 -0
  37. data/lib/paypal/token_requests.rb +42 -0
  38. data/lib/solidus_paypal_commerce_platform/access_token_authorization_request.rb +1 -1
  39. data/lib/solidus_paypal_commerce_platform/client.rb +4 -4
  40. data/lib/solidus_paypal_commerce_platform/configuration.rb +4 -4
  41. data/lib/solidus_paypal_commerce_platform/engine.rb +11 -3
  42. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_authorize_request.rb +48 -0
  43. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_capture_request.rb +46 -0
  44. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_patch_request.rb +80 -0
  45. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_validate_request.rb +36 -0
  46. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb +50 -0
  47. data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/captures_refund_request.rb +43 -0
  48. data/lib/solidus_paypal_commerce_platform/testing_support/factories.rb +2 -1
  49. data/lib/solidus_paypal_commerce_platform/version.rb +1 -1
  50. data/lib/solidus_paypal_commerce_platform.rb +1 -0
  51. data/lib/views/backend/spree/admin/payments/source_views/_paypal_commerce_platform.html.erb +3 -0
  52. data/lib/views/frontend/solidus_paypal_commerce_platform/payments/_payment.html.erb +4 -0
  53. data/lib/views/frontend/spree/checkout/payment/_paypal_commerce_platform.html.erb +17 -3
  54. data/solidus_paypal_commerce_platform.gemspec +9 -8
  55. metadata +52 -78
  56. data/spec/features/backend/new_payment_method_spec.rb +0 -40
  57. data/spec/features/frontend/cart_spec.rb +0 -46
  58. data/spec/features/frontend/checkout_spec.rb +0 -89
  59. data/spec/features/frontend/product_spec.rb +0 -91
  60. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.COMPLETED.v2.json +0 -121
  61. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.PROCESSED.v2.json +0 -121
  62. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v1.json +0 -50
  63. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v2.json +0 -72
  64. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v1.json +0 -50
  65. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v2.json +0 -68
  66. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v1.json +0 -51
  67. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v2.json +0 -63
  68. data/spec/jobs/solidus_paypal_commerce_platform/webhook_job_spec.rb +0 -44
  69. data/spec/lib/solidus_paypal_commerce_platform/client_spec.rb +0 -21
  70. data/spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb +0 -91
  71. data/spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb +0 -129
  72. data/spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb +0 -62
  73. data/spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb +0 -67
  74. data/spec/models/solidus_paypal_commerce_platform/paypal_order_spec.rb +0 -33
  75. data/spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb +0 -38
  76. data/spec/models/solidus_paypal_commerce_platform/wizard_spec.rb +0 -9
  77. data/spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb +0 -36
  78. data/spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb +0 -44
  79. data/spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb +0 -44
  80. data/spec/spec_helper.rb +0 -32
  81. data/spec/support/capybara.rb +0 -11
  82. data/spec/support/paypal_sdk_script_tag_helper.rb +0 -13
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe SolidusPaypalCommercePlatform::ShippingRatesController, type: :request do
4
- stub_authorization!
5
- let(:new_country) { create(:country, iso: "IT", states_required: true) }
6
- let(:new_state) { create(:state, country: new_country) }
7
- let(:new_address) { build(:address, country: new_country, state: new_state) }
8
- let(:order) { Spree::TestingSupport::OrderWalkthrough.up_to(:payment) }
9
- let(:paypal_address) {
10
- {
11
- country_code: new_country.iso,
12
- city: new_address.city,
13
- state: new_state&.abbr,
14
- postal_code: new_address.zipcode
15
- }
16
- }
17
-
18
- describe "GET /simulate_shipping_rates" do
19
- before do
20
- get solidus_paypal_commerce_platform.shipping_rates_path, params: {
21
- order_id: order.number,
22
- address: paypal_address
23
- }
24
- end
25
-
26
- it "returns a paypal_order without the simulated address" do
27
- expect(response.body).not_to include "admin_area_1\":\"#{new_address.state.abbr}\""
28
- expect(response.body).not_to include "admin_area_1\":\"#{order.ship_address.state.abbr}\""
29
- end
30
-
31
- it "does not modify original address" do
32
- expect(order.ship_address).not_to eq new_address
33
- end
34
-
35
- context "with an invalid address" do
36
- let(:new_state) { nil }
37
-
38
- it "returns a list of errors" do
39
- expect(response.status).to be(422) # unprocessable_entity
40
- expect(response.body).to include "State can't be blank"
41
- end
42
- end
43
- end
44
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe SolidusPaypalCommercePlatform::WizardController, type: :request do
4
- stub_authorization!
5
-
6
- let(:wizard) { SolidusPaypalCommercePlatform::Wizard.new }
7
-
8
- describe "POST /solidus_paypal_commerce_platform/wizard" do
9
- let(:params) {
10
- {
11
- authCode: "PFc4d2vp4DVfHqcnEHbGAA12C_H29U39NM_vmQrZBPzdLcxA12Br-GzjbliqXGu3AG6Gfwo5G9GTal6REkcKGMREc9fPsR_wv",
12
- sharedId: "awj45zMAy1XonxWfgIhjjGHZGAPStkZFzXp4bfe1QmNWA-9DL6HkpklD0skHig4vVF7zVZD8Uwy5Qop4",
13
- nonce: wizard.nonce,
14
- }
15
- }
16
-
17
- it "creates a new payment method from data received from PayPal" do
18
- expect_any_instance_of(SolidusPaypalCommercePlatform::Client).to receive(:execute) do |_client, request|
19
- case request
20
- when SolidusPaypalCommercePlatform::AccessTokenAuthorizationRequest
21
- OpenStruct.new(result: OpenStruct.new(access_token: "ACCESS-TOKEN"))
22
- when SolidusPaypalCommercePlatform::FetchMerchantCredentialsRequest
23
- expect(request.headers.fetch("Authorization")).to eq("Bearer ACCESS-TOKEN")
24
- OpenStruct.new(result: OpenStruct.new(
25
- client_id: "CLIENT-ID",
26
- client_secret: "CLIENT-SECRET",
27
- ))
28
- else
29
- raise "unexpected request: #{request}"
30
- end
31
- end.twice
32
-
33
- expect {
34
- post solidus_paypal_commerce_platform.wizard_index_path, params: params
35
- }.to change(SolidusPaypalCommercePlatform::PaymentMethod, :count).from(0).to(1)
36
-
37
- payment_method = SolidusPaypalCommercePlatform::PaymentMethod.last
38
-
39
- expect(payment_method.preferred_client_id).to eq("CLIENT-ID")
40
- expect(payment_method.preferred_client_secret).to eq("CLIENT-SECRET")
41
- expect(response).to have_http_status(:created)
42
- end
43
- end
44
- end
data/spec/spec_helper.rb DELETED
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Configure Rails Environment
4
- ENV['RAILS_ENV'] = 'test'
5
-
6
- # Run Coverage report
7
- require 'solidus_dev_support/rspec/coverage'
8
-
9
- # Create the dummy app if it's still missing.
10
- dummy_env = "#{__dir__}/dummy/config/environment.rb"
11
- system 'bin/rake extension:test_app' unless File.exist? dummy_env
12
- require dummy_env
13
-
14
- # Requires factories and other useful helpers defined in spree_core.
15
- require 'solidus_dev_support/rspec/feature_helper'
16
- require 'spree/testing_support/order_walkthrough'
17
-
18
- # Requires supporting ruby files with custom matchers and macros, etc,
19
- # in spec/support/ and its subdirectories.
20
- Dir["#{__dir__}/support/**/*.rb"].sort.each { |f| require f }
21
-
22
- # Requires factories defined in lib/solidus_paypal_commerce_platform/testing_support/factories.rb
23
- SolidusDevSupport::TestingSupport::Factories.load_for(SolidusPaypalCommercePlatform::Engine)
24
-
25
- RSpec.configure do |config|
26
- config.infer_spec_type_from_file_location!
27
- config.use_transactional_fixtures = false
28
-
29
- if Spree.solidus_gem_version < Gem::Version.new('2.11')
30
- config.extend Spree::TestingSupport::AuthorizationHelpers::Request, type: :system
31
- end
32
- end
@@ -1,11 +0,0 @@
1
- require "capybara/cuprite"
2
-
3
- Capybara.javascript_driver = :cuprite
4
-
5
- Capybara.register_driver(:cuprite) do |app|
6
- # Set `export INSPECTOR=true` and add `page.driver.debug(binding)` to open a Chrome tab
7
- # to debug the browser status.
8
- #
9
- # See also: https://github.com/rubycdp/cuprite#debugging
10
- Capybara::Cuprite::Driver.new(app, window_size: [1920, 1080], inspector: ENV["INSPECTOR"])
11
- end
@@ -1,13 +0,0 @@
1
- module PaypalSdkScriptTagHelper
2
- def js_sdk_script_query
3
- URI(page.find('script[src*="sdk/js?"]', visible: false)[:src]).query.split('&')
4
- end
5
-
6
- def js_sdk_script_partner_id
7
- page.find('script[src*="sdk/js?"]', visible: false)['data-partner-attribution-id']
8
- end
9
- end
10
-
11
- RSpec.configure do |config|
12
- config.include PaypalSdkScriptTagHelper, type: :feature
13
- end