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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +25 -2
- data/.rubocop.yml +6 -5
- data/CHANGELOG.md +180 -122
- data/Gemfile +16 -3
- data/README.md +27 -2
- data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/button_actions.js +3 -1
- data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/buttons.js +14 -0
- data/app/controllers/solidus_paypal_commerce_platform/orders_controller.rb +1 -1
- data/app/controllers/solidus_paypal_commerce_platform/payments_controller.rb +4 -2
- data/app/helpers/solidus_paypal_commerce_platform/button_options_helper.rb +4 -0
- data/app/models/solidus_paypal_commerce_platform/gateway.rb +20 -3
- data/app/models/solidus_paypal_commerce_platform/payment_method.rb +21 -1
- data/app/models/solidus_paypal_commerce_platform/payment_source.rb +12 -1
- data/app/models/solidus_paypal_commerce_platform/paypal_order.rb +6 -21
- data/app/models/solidus_paypal_commerce_platform/wizard.rb +1 -1
- data/bin/rails-engine +1 -1
- data/config/locales/en.yml +34 -1
- data/db/migrate/20211220133406_add_paypal_funding_source_to_paypal_commerce_platform_sources.rb +5 -0
- data/lib/paypal/access_token.rb +22 -0
- data/lib/paypal/lib.rb +19 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_authorize_request.rb +44 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_capture_request.rb +42 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_create_request.rb +36 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_get_request.rb +26 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_patch_request.rb +77 -0
- data/lib/paypal/paypal_checkout_sdk/orders/orders_validate_request.rb +34 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_capture_request.rb +38 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_get_request.rb +26 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb +45 -0
- data/lib/paypal/paypal_checkout_sdk/payments/authorizations_void_request.rb +27 -0
- data/lib/paypal/paypal_checkout_sdk/payments/captures_get_request.rb +26 -0
- data/lib/paypal/paypal_checkout_sdk/payments/captures_refund_request.rb +40 -0
- data/lib/paypal/paypal_checkout_sdk/payments/refunds_get_request.rb +26 -0
- data/lib/paypal/paypal_environment.rb +39 -0
- data/lib/paypal/paypal_http_client.rb +56 -0
- data/lib/paypal/token_requests.rb +42 -0
- data/lib/solidus_paypal_commerce_platform/access_token_authorization_request.rb +1 -1
- data/lib/solidus_paypal_commerce_platform/client.rb +4 -4
- data/lib/solidus_paypal_commerce_platform/configuration.rb +4 -4
- data/lib/solidus_paypal_commerce_platform/engine.rb +11 -3
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_authorize_request.rb +48 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_capture_request.rb +46 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_patch_request.rb +80 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/orders/orders_validate_request.rb +36 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/authorizations_reauthorize_request.rb +50 -0
- data/lib/solidus_paypal_commerce_platform/paypal_checkout_sdk/payments/captures_refund_request.rb +43 -0
- data/lib/solidus_paypal_commerce_platform/testing_support/factories.rb +2 -1
- data/lib/solidus_paypal_commerce_platform/version.rb +1 -1
- data/lib/solidus_paypal_commerce_platform.rb +1 -0
- data/lib/views/backend/spree/admin/payments/source_views/_paypal_commerce_platform.html.erb +3 -0
- data/lib/views/frontend/solidus_paypal_commerce_platform/payments/_payment.html.erb +4 -0
- data/lib/views/frontend/spree/checkout/payment/_paypal_commerce_platform.html.erb +17 -3
- data/solidus_paypal_commerce_platform.gemspec +9 -8
- metadata +52 -78
- data/spec/features/backend/new_payment_method_spec.rb +0 -40
- data/spec/features/frontend/cart_spec.rb +0 -46
- data/spec/features/frontend/checkout_spec.rb +0 -89
- data/spec/features/frontend/product_spec.rb +0 -91
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.COMPLETED.v2.json +0 -121
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.PROCESSED.v2.json +0 -121
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v1.json +0 -50
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v2.json +0 -72
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v1.json +0 -50
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v2.json +0 -68
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v1.json +0 -51
- data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v2.json +0 -63
- data/spec/jobs/solidus_paypal_commerce_platform/webhook_job_spec.rb +0 -44
- data/spec/lib/solidus_paypal_commerce_platform/client_spec.rb +0 -21
- data/spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb +0 -91
- data/spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb +0 -129
- data/spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb +0 -62
- data/spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb +0 -67
- data/spec/models/solidus_paypal_commerce_platform/paypal_order_spec.rb +0 -33
- data/spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb +0 -38
- data/spec/models/solidus_paypal_commerce_platform/wizard_spec.rb +0 -9
- data/spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb +0 -36
- data/spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb +0 -44
- data/spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb +0 -44
- data/spec/spec_helper.rb +0 -32
- data/spec/support/capybara.rb +0 -11
- 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
|
data/spec/support/capybara.rb
DELETED
|
@@ -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
|