solidus_paypal_commerce_platform 0.1.0 → 0.3.1
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/.github/stale.yml +4 -4
- data/.github_changelog_generator +2 -0
- data/.rubocop.yml +5 -14
- data/CHANGELOG.md +181 -0
- data/README.md +26 -25
- data/app/controllers/solidus_paypal_commerce_platform/orders_controller.rb +8 -5
- data/app/decorators/models/solidus_paypal_commerce_platform/spree/address_decorator.rb +17 -0
- data/app/jobs/solidus_paypal_commerce_platform/webhook_job.rb +3 -3
- data/app/models/solidus_paypal_commerce_platform/payment_method.rb +4 -1
- data/app/models/solidus_paypal_commerce_platform/paypal_address.rb +19 -20
- data/app/models/solidus_paypal_commerce_platform/paypal_order.rb +3 -3
- data/app/models/solidus_paypal_commerce_platform/pricing_options.rb +1 -1
- data/app/models/solidus_paypal_commerce_platform/state_guesser.rb +1 -1
- data/bin/sandbox +1 -1
- data/lib/generators/solidus_paypal_commerce_platform/install/install_generator.rb +9 -0
- data/lib/generators/solidus_paypal_commerce_platform/install/templates/initializer.rb +6 -0
- data/lib/solidus_paypal_commerce_platform.rb +7 -5
- data/lib/solidus_paypal_commerce_platform/client.rb +2 -2
- data/lib/solidus_paypal_commerce_platform/configuration.rb +4 -0
- data/lib/solidus_paypal_commerce_platform/{factories.rb → testing_support/factories.rb} +0 -0
- data/lib/solidus_paypal_commerce_platform/version.rb +1 -1
- data/lib/views/frontend/solidus_paypal_commerce_platform/shared/_javascript_sdk_tag.html.erb +6 -0
- data/lib/views/frontend/spree/checkout/payment/_paypal_commerce_platform.html.erb +6 -1
- data/lib/views/frontend/spree/orders/payment/_paypal_commerce_platform.html.erb +3 -2
- data/lib/views/frontend/spree/products/payment/_paypal_commerce_platform.html.erb +3 -2
- data/solidus_paypal_commerce_platform.gemspec +7 -7
- data/spec/features/frontend/cart_spec.rb +21 -13
- data/spec/features/frontend/checkout_spec.rb +21 -13
- data/spec/features/frontend/product_spec.rb +23 -15
- data/spec/lib/solidus_paypal_commerce_platform/client_spec.rb +1 -1
- data/spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb +10 -4
- data/spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb +19 -0
- data/spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb +17 -5
- data/spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb +2 -2
- data/spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb +3 -3
- data/spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/support/paypal_sdk_script_tag_helper.rb +13 -0
- metadata +33 -21
- data/app/decorators/solidus_paypal_commerce_platform/remove_required_phone_from_address.rb +0 -13
@@ -10,7 +10,7 @@ RSpec.describe SolidusPaypalCommercePlatform::Client do
|
|
10
10
|
let(:status_code) { 201 }
|
11
11
|
|
12
12
|
it 'forwards to the upstream client adding i18n response messages' do
|
13
|
-
|
13
|
+
allow_any_instance_of(PayPal::PayPalHttpClient)
|
14
14
|
.to receive(:execute).with(paypal_request).and_return(paypal_response)
|
15
15
|
|
16
16
|
response = subject.execute_with_response(paypal_request)
|
@@ -12,16 +12,16 @@ RSpec.describe SolidusPaypalCommercePlatform::Configuration do
|
|
12
12
|
it "falls back to Rails.env if ENV['PAYPAL_ENV'] is not set" do
|
13
13
|
expect(ENV).to receive(:[]).with("PAYPAL_ENV").and_return(nil).at_least(:once)
|
14
14
|
|
15
|
-
|
15
|
+
allow(Rails).to receive(:env).and_return("development".inquiry)
|
16
16
|
expect(subject.default_env).to eq("sandbox")
|
17
17
|
|
18
|
-
|
18
|
+
allow(Rails).to receive(:env).and_return("test".inquiry)
|
19
19
|
expect(subject.default_env).to eq("sandbox")
|
20
20
|
|
21
|
-
|
21
|
+
allow(Rails).to receive(:env).and_return("production".inquiry)
|
22
22
|
expect(subject.default_env).to eq("live")
|
23
23
|
|
24
|
-
|
24
|
+
allow(Rails).to receive(:env).and_return("staging".inquiry)
|
25
25
|
expect{ subject.default_env }.to raise_error(described_class::InvalidEnvironment)
|
26
26
|
end
|
27
27
|
end
|
@@ -82,4 +82,10 @@ RSpec.describe SolidusPaypalCommercePlatform::Configuration do
|
|
82
82
|
expect(subject.state_guesser_class).to eq(SolidusPaypalCommercePlatform::BetterStateGuesser)
|
83
83
|
end
|
84
84
|
end
|
85
|
+
|
86
|
+
describe "#partner_code" do
|
87
|
+
it "returns the correct code" do
|
88
|
+
expect(subject.partner_code).to eq("Solidus_PCP_SP")
|
89
|
+
end
|
90
|
+
end
|
85
91
|
end
|
@@ -92,6 +92,25 @@ RSpec.describe SolidusPaypalCommercePlatform::PaymentMethod, type: :model do
|
|
92
92
|
expect(url.query.split("&")).to include("commit=true")
|
93
93
|
end
|
94
94
|
end
|
95
|
+
|
96
|
+
context 'when messaging is turned on' do
|
97
|
+
let(:order) { instance_double(Spree::Order, checkout_steps: { "foo" => "bar" }) }
|
98
|
+
|
99
|
+
it 'includes messaging component' do
|
100
|
+
paypal_payment_method.preferences.update(display_credit_messaging: true)
|
101
|
+
expect(url.query.split("&")).to include("components=buttons%2Cmessages")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'when messaging is turned off' do
|
106
|
+
let(:order) { instance_double(Spree::Order, checkout_steps: { "foo" => "bar" }) }
|
107
|
+
|
108
|
+
it 'only includes buttons components' do
|
109
|
+
paypal_payment_method.preferences.update(display_credit_messaging: false)
|
110
|
+
expect(url.query.split("&")).not_to include("messages")
|
111
|
+
expect(url.query.split("&")).to include("components=buttons")
|
112
|
+
end
|
113
|
+
end
|
95
114
|
end
|
96
115
|
|
97
116
|
private
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
RSpec.describe SolidusPaypalCommercePlatform::PaypalAddress, type: :model do
|
4
4
|
let(:order) { create(:order) }
|
5
5
|
let(:original_address) { create(:address) }
|
6
|
-
let(:address) { create(:address) }
|
6
|
+
let(:address) { create(:address, name_attributes) }
|
7
7
|
let(:params) {
|
8
8
|
{
|
9
9
|
updated_address: {
|
@@ -16,8 +16,8 @@ RSpec.describe SolidusPaypalCommercePlatform::PaypalAddress, type: :model do
|
|
16
16
|
},
|
17
17
|
recipient: {
|
18
18
|
name: {
|
19
|
-
given_name:
|
20
|
-
surname:
|
19
|
+
given_name: "Alexander",
|
20
|
+
surname: "Hamilton"
|
21
21
|
}
|
22
22
|
}
|
23
23
|
}
|
@@ -37,8 +37,12 @@ RSpec.describe SolidusPaypalCommercePlatform::PaypalAddress, type: :model do
|
|
37
37
|
expect(subject.address2).to eq address.address2
|
38
38
|
expect(subject.zipcode).to eq address.zipcode
|
39
39
|
expect(subject.country).to eq address.country
|
40
|
-
|
41
|
-
|
40
|
+
if SolidusSupport.combined_first_and_last_name_in_address?
|
41
|
+
expect(subject.name).to eq address.name
|
42
|
+
else
|
43
|
+
expect(subject.firstname).to eq address.firstname
|
44
|
+
expect(subject.lastname).to eq address.lastname
|
45
|
+
end
|
42
46
|
expect(subject.phone).to eq original_address.phone
|
43
47
|
end
|
44
48
|
|
@@ -52,4 +56,12 @@ RSpec.describe SolidusPaypalCommercePlatform::PaypalAddress, type: :model do
|
|
52
56
|
end
|
53
57
|
end
|
54
58
|
end
|
59
|
+
|
60
|
+
def name_attributes
|
61
|
+
if SolidusSupport.combined_first_and_last_name_in_address?
|
62
|
+
{ name: "Alexander Hamilton" }
|
63
|
+
else
|
64
|
+
{ firstname: "Alexander", lastname: "Hamilton" }
|
65
|
+
end
|
66
|
+
end
|
55
67
|
end
|
@@ -15,7 +15,7 @@ RSpec.describe SolidusPaypalCommercePlatform::OrdersController, type: :request d
|
|
15
15
|
|
16
16
|
get solidus_paypal_commerce_platform.verify_total_path, params: params
|
17
17
|
|
18
|
-
expect(response).to have_http_status(
|
18
|
+
expect(response).to have_http_status(:ok)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -29,7 +29,7 @@ RSpec.describe SolidusPaypalCommercePlatform::OrdersController, type: :request d
|
|
29
29
|
|
30
30
|
get solidus_paypal_commerce_platform.verify_total_path, params: params
|
31
31
|
|
32
|
-
expect(response).to have_http_status(
|
32
|
+
expect(response).to have_http_status(:bad_request)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -23,9 +23,9 @@ RSpec.describe SolidusPaypalCommercePlatform::ShippingRatesController, type: :re
|
|
23
23
|
}
|
24
24
|
end
|
25
25
|
|
26
|
-
it "returns a paypal_order
|
27
|
-
expect(response.body).
|
28
|
-
expect(response.body).not_to include order.ship_address.state.abbr
|
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
29
|
end
|
30
30
|
|
31
31
|
it "does not modify original address" do
|
@@ -38,7 +38,7 @@ RSpec.describe SolidusPaypalCommercePlatform::WizardController, type: :request d
|
|
38
38
|
|
39
39
|
expect(payment_method.preferred_client_id).to eq("CLIENT-ID")
|
40
40
|
expect(payment_method.preferred_client_secret).to eq("CLIENT-SECRET")
|
41
|
-
expect(response).to have_http_status(
|
41
|
+
expect(response).to have_http_status(:created)
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -19,8 +19,8 @@ require 'spree/testing_support/order_walkthrough'
|
|
19
19
|
# in spec/support/ and its subdirectories.
|
20
20
|
Dir["#{__dir__}/support/**/*.rb"].sort.each { |f| require f }
|
21
21
|
|
22
|
-
# Requires factories defined in lib/solidus_paypal_commerce_platform/factories.rb
|
23
|
-
|
22
|
+
# Requires factories defined in lib/solidus_paypal_commerce_platform/testing_support/factories.rb
|
23
|
+
SolidusDevSupport::TestingSupport::Factories.load_for(SolidusPaypalCommercePlatform::Engine)
|
24
24
|
|
25
25
|
RSpec.configure do |config|
|
26
26
|
config.infer_spec_type_from_file_location!
|
@@ -0,0 +1,13 @@
|
|
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
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_paypal_commerce_platform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Denny
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-04-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: deface
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
version: 2.0.0
|
35
35
|
- - "<"
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
37
|
+
version: '4'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -44,35 +44,41 @@ dependencies:
|
|
44
44
|
version: 2.0.0
|
45
45
|
- - "<"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '4'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: solidus_support
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.8.0
|
55
|
+
- - "<"
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
57
|
+
version: '1'
|
55
58
|
type: :runtime
|
56
59
|
prerelease: false
|
57
60
|
version_requirements: !ruby/object:Gem::Requirement
|
58
61
|
requirements:
|
59
|
-
- - "
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 0.8.0
|
65
|
+
- - "<"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
67
|
+
version: '1'
|
62
68
|
- !ruby/object:Gem::Dependency
|
63
69
|
name: solidus_webhooks
|
64
70
|
requirement: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.2
|
74
|
+
version: '0.2'
|
69
75
|
type: :runtime
|
70
76
|
prerelease: false
|
71
77
|
version_requirements: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.2
|
81
|
+
version: '0.2'
|
76
82
|
- !ruby/object:Gem::Dependency
|
77
83
|
name: paypal-checkout-sdk
|
78
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -105,16 +111,16 @@ dependencies:
|
|
105
111
|
name: solidus_dev_support
|
106
112
|
requirement: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
|
-
- - "
|
114
|
+
- - "~>"
|
109
115
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
116
|
+
version: '2.1'
|
111
117
|
type: :development
|
112
118
|
prerelease: false
|
113
119
|
version_requirements: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
|
-
- - "
|
121
|
+
- - "~>"
|
116
122
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
123
|
+
version: '2.1'
|
118
124
|
description:
|
119
125
|
email: contact@solidus.io
|
120
126
|
executables: []
|
@@ -124,9 +130,11 @@ files:
|
|
124
130
|
- ".circleci/config.yml"
|
125
131
|
- ".gem_release.yml"
|
126
132
|
- ".github/stale.yml"
|
133
|
+
- ".github_changelog_generator"
|
127
134
|
- ".gitignore"
|
128
135
|
- ".rspec"
|
129
136
|
- ".rubocop.yml"
|
137
|
+
- CHANGELOG.md
|
130
138
|
- Gemfile
|
131
139
|
- LICENSE
|
132
140
|
- README.md
|
@@ -145,7 +153,7 @@ files:
|
|
145
153
|
- app/controllers/solidus_paypal_commerce_platform/paypal_orders_controller.rb
|
146
154
|
- app/controllers/solidus_paypal_commerce_platform/shipping_rates_controller.rb
|
147
155
|
- app/controllers/solidus_paypal_commerce_platform/wizard_controller.rb
|
148
|
-
- app/decorators/solidus_paypal_commerce_platform/
|
156
|
+
- app/decorators/models/solidus_paypal_commerce_platform/spree/address_decorator.rb
|
149
157
|
- app/helpers/solidus_paypal_commerce_platform/button_options_helper.rb
|
150
158
|
- app/jobs/solidus_paypal_commerce_platform/application_job.rb
|
151
159
|
- app/jobs/solidus_paypal_commerce_platform/webhook_job.rb
|
@@ -179,13 +187,14 @@ files:
|
|
179
187
|
- config/routes.rb
|
180
188
|
- db/migrate/20200521190038_add_paypal_commerce_platform_sources.rb
|
181
189
|
- lib/generators/solidus_paypal_commerce_platform/install/install_generator.rb
|
190
|
+
- lib/generators/solidus_paypal_commerce_platform/install/templates/initializer.rb
|
182
191
|
- lib/solidus_paypal_commerce_platform.rb
|
183
192
|
- lib/solidus_paypal_commerce_platform/access_token_authorization_request.rb
|
184
193
|
- lib/solidus_paypal_commerce_platform/client.rb
|
185
194
|
- lib/solidus_paypal_commerce_platform/configuration.rb
|
186
195
|
- lib/solidus_paypal_commerce_platform/engine.rb
|
187
|
-
- lib/solidus_paypal_commerce_platform/factories.rb
|
188
196
|
- lib/solidus_paypal_commerce_platform/fetch_merchant_credentials_request.rb
|
197
|
+
- lib/solidus_paypal_commerce_platform/testing_support/factories.rb
|
189
198
|
- lib/solidus_paypal_commerce_platform/version.rb
|
190
199
|
- lib/views/api/spree/api/payments/source_views/_paypal_commerce_platform.json.jbuilder
|
191
200
|
- lib/views/backend/spree/admin/payments/source_forms/_paypal_commerce_platform.html.erb
|
@@ -194,6 +203,7 @@ files:
|
|
194
203
|
- lib/views/frontend/solidus_paypal_commerce_platform/cart/_cart_buttons.html.erb
|
195
204
|
- lib/views/frontend/solidus_paypal_commerce_platform/payments/_payment.html.erb
|
196
205
|
- lib/views/frontend/solidus_paypal_commerce_platform/product/_product_buttons.html.erb
|
206
|
+
- lib/views/frontend/solidus_paypal_commerce_platform/shared/_javascript_sdk_tag.html.erb
|
197
207
|
- lib/views/frontend/spree/checkout/payment/_paypal_commerce_platform.html.erb
|
198
208
|
- lib/views/frontend/spree/orders/payment/_paypal_commerce_platform.html.erb
|
199
209
|
- lib/views/frontend/spree/products/payment/_paypal_commerce_platform.html.erb
|
@@ -223,12 +233,13 @@ files:
|
|
223
233
|
- spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb
|
224
234
|
- spec/spec_helper.rb
|
225
235
|
- spec/support/capybara.rb
|
226
|
-
|
236
|
+
- spec/support/paypal_sdk_script_tag_helper.rb
|
237
|
+
homepage: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform
|
227
238
|
licenses:
|
228
239
|
- BSD-3-Clause
|
229
240
|
metadata:
|
230
|
-
homepage_uri: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform
|
231
|
-
source_code_uri: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform
|
241
|
+
homepage_uri: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform
|
242
|
+
source_code_uri: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform
|
232
243
|
changelog_uri: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/releases
|
233
244
|
post_install_message:
|
234
245
|
rdoc_options: []
|
@@ -236,7 +247,7 @@ require_paths:
|
|
236
247
|
- lib
|
237
248
|
required_ruby_version: !ruby/object:Gem::Requirement
|
238
249
|
requirements:
|
239
|
-
- - "
|
250
|
+
- - ">="
|
240
251
|
- !ruby/object:Gem::Version
|
241
252
|
version: '2.5'
|
242
253
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
@@ -245,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
245
256
|
- !ruby/object:Gem::Version
|
246
257
|
version: '0'
|
247
258
|
requirements: []
|
248
|
-
rubygems_version: 3.1.
|
259
|
+
rubygems_version: 3.1.4
|
249
260
|
signing_key:
|
250
261
|
specification_version: 4
|
251
262
|
summary: Integrate Solidus with Paypal Commerce Platform
|
@@ -275,3 +286,4 @@ test_files:
|
|
275
286
|
- spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb
|
276
287
|
- spec/spec_helper.rb
|
277
288
|
- spec/support/capybara.rb
|
289
|
+
- spec/support/paypal_sdk_script_tag_helper.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RemoveRequiredPhoneFromAddress
|
4
|
-
# PayPal doesn't use the phone number, so in cases where the user checks out via
|
5
|
-
# PayPal, this field will be unpopulated. If you want to require phone numbers,
|
6
|
-
# you'll need to turn off cart & product page displays on the payment method edit
|
7
|
-
# page.
|
8
|
-
def require_phone?
|
9
|
-
super && false
|
10
|
-
end
|
11
|
-
|
12
|
-
::Spree::Address.prepend self
|
13
|
-
end
|