solidus_paypal_commerce_platform 0.3.0 → 0.4.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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +4 -0
  3. data/.rubocop.yml +4 -4
  4. data/CHANGELOG.md +46 -2
  5. data/Gemfile +2 -2
  6. data/LICENSE +1 -1
  7. data/README.md +25 -0
  8. data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/button_actions.js +3 -1
  9. data/app/assets/javascripts/spree/frontend/solidus_paypal_commerce_platform/buttons.js +14 -0
  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 -1
  13. data/app/models/solidus_paypal_commerce_platform/payment_method.rb +22 -0
  14. data/app/models/solidus_paypal_commerce_platform/payment_source.rb +11 -0
  15. data/app/models/solidus_paypal_commerce_platform/paypal_order.rb +26 -5
  16. data/app/models/solidus_paypal_commerce_platform/wizard.rb +1 -1
  17. data/bin/rails-engine +1 -1
  18. data/bin/sandbox +1 -1
  19. data/config/locales/en.yml +34 -1
  20. data/db/migrate/20211220133406_add_paypal_funding_source_to_paypal_commerce_platform_sources.rb +5 -0
  21. data/lib/solidus_paypal_commerce_platform/client.rb +3 -3
  22. data/lib/solidus_paypal_commerce_platform/configuration.rb +2 -2
  23. data/lib/solidus_paypal_commerce_platform/engine.rb +13 -4
  24. data/lib/solidus_paypal_commerce_platform/testing_support/factories.rb +2 -1
  25. data/lib/solidus_paypal_commerce_platform/version.rb +1 -1
  26. data/lib/views/backend/spree/admin/payments/source_views/_paypal_commerce_platform.html.erb +3 -0
  27. data/lib/views/frontend/solidus_paypal_commerce_platform/payments/_payment.html.erb +4 -0
  28. data/lib/views/frontend/spree/checkout/payment/_paypal_commerce_platform.html.erb +17 -3
  29. data/solidus_paypal_commerce_platform.gemspec +3 -3
  30. metadata +14 -64
  31. data/spec/features/backend/new_payment_method_spec.rb +0 -40
  32. data/spec/features/frontend/cart_spec.rb +0 -46
  33. data/spec/features/frontend/checkout_spec.rb +0 -89
  34. data/spec/features/frontend/product_spec.rb +0 -91
  35. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.COMPLETED.v2.json +0 -121
  36. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.PROCESSED.v2.json +0 -121
  37. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v1.json +0 -50
  38. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v2.json +0 -72
  39. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v1.json +0 -50
  40. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v2.json +0 -68
  41. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v1.json +0 -51
  42. data/spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v2.json +0 -63
  43. data/spec/jobs/solidus_paypal_commerce_platform/webhook_job_spec.rb +0 -44
  44. data/spec/lib/solidus_paypal_commerce_platform/client_spec.rb +0 -21
  45. data/spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb +0 -91
  46. data/spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb +0 -121
  47. data/spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb +0 -62
  48. data/spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb +0 -67
  49. data/spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb +0 -38
  50. data/spec/models/solidus_paypal_commerce_platform/wizard_spec.rb +0 -9
  51. data/spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb +0 -36
  52. data/spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb +0 -44
  53. data/spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb +0 -44
  54. data/spec/spec_helper.rb +0 -32
  55. data/spec/support/capybara.rb +0 -11
  56. data/spec/support/paypal_sdk_script_tag_helper.rb +0 -13
@@ -6,13 +6,27 @@
6
6
 
7
7
  <input type="hidden" name="payment_source[<%= payment_method.id %>][paypal_order_id]" id="payments_source_paypal_order_id">
8
8
  <input type="hidden" name="payment_source[<%= payment_method.id %>][paypal_email]" id="payments_source_paypal_email">
9
+ <input type="hidden" name="payment_source[<%= payment_method.id %>][paypal_funding_source]" id="payments_source_paypal_funding_source">
9
10
 
10
11
  <script>
11
12
  Spree.current_order_id = "<%= @order.number %>"
12
13
  Spree.current_order_token = "<%= @order.guest_token %>"
13
- $( document ).ready(function() {
14
- SolidusPaypalCommercePlatform.renderButton("<%= payment_method.id %>",<%= raw payment_method.button_style.to_json %>)
15
- })
16
14
  </script>
17
15
 
16
+ <% unless payment_method.render_only_venmo_standalone? %>
17
+ <script>
18
+ $( document ).ready(function() {
19
+ SolidusPaypalCommercePlatform.renderButton("<%= payment_method.id %>",<%= raw payment_method.button_style.to_json %>)
20
+ })
21
+ </script>
22
+ <% end %>
23
+
24
+ <% if payment_method.venmo_standalone_enabled? %>
25
+ <script>
26
+ $( document ).ready(function() {
27
+ SolidusPaypalCommercePlatform.renderVenmoStandalone("<%= payment_method.id %>",<%= raw payment_method.button_style.to_json %>)
28
+ })
29
+ </script>
30
+ <% end %>
31
+
18
32
  <div id="paypal_commerce_platform_overlay"></div>
@@ -15,6 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.metadata['homepage_uri'] = spec.homepage
16
16
  spec.metadata['source_code_uri'] = 'https://github.com/solidusio-contrib/solidus_paypal_commerce_platform'
17
17
  spec.metadata['changelog_uri'] = 'https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/releases'
18
+ spec.metadata['rubygems_mfa_required'] = 'true'
18
19
 
19
20
  spec.required_ruby_version = Gem::Requirement.new('~> 2.5')
20
21
 
@@ -23,18 +24,17 @@ Gem::Specification.new do |spec|
23
24
  files = Dir.chdir(__dir__) { `git ls-files -z`.split("\x0") }
24
25
 
25
26
  spec.files = files.grep_v(%r{^(test|spec|features)/})
26
- spec.test_files = files.grep(%r{^(test|spec|features)/})
27
27
  spec.bindir = "exe"
28
28
  spec.executables = files.grep(%r{^exe/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ["lib"]
30
30
 
31
31
  spec.add_dependency 'deface', '~> 1.5'
32
- spec.add_dependency 'solidus_core', ['>= 2.0.0', '< 3']
32
+ spec.add_dependency 'solidus_core', ['>= 2.0.0', '< 4']
33
33
  spec.add_dependency 'solidus_support', [">= 0.8.0", "< 1"]
34
34
  spec.add_dependency 'solidus_webhooks', '~> 0.2'
35
35
 
36
36
  spec.add_dependency 'paypal-checkout-sdk'
37
37
 
38
38
  spec.add_development_dependency 'cuprite'
39
- spec.add_development_dependency 'solidus_dev_support', '~> 2.1'
39
+ spec.add_development_dependency 'solidus_dev_support', '~> 2.5'
40
40
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_paypal_commerce_platform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Denny
8
8
  - Elia Schito
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-03-16 00:00:00.000000000 Z
12
+ date: 2022-06-03 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: '3'
37
+ version: '4'
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: 2.0.0
45
45
  - - "<"
46
46
  - !ruby/object:Gem::Version
47
- version: '3'
47
+ version: '4'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: solidus_support
50
50
  requirement: !ruby/object:Gem::Requirement
@@ -113,15 +113,15 @@ dependencies:
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '2.1'
116
+ version: '2.5'
117
117
  type: :development
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '2.1'
124
- description:
123
+ version: '2.5'
124
+ description:
125
125
  email: contact@solidus.io
126
126
  executables: []
127
127
  extensions: []
@@ -186,6 +186,7 @@ files:
186
186
  - config/locales/en.yml
187
187
  - config/routes.rb
188
188
  - db/migrate/20200521190038_add_paypal_commerce_platform_sources.rb
189
+ - db/migrate/20211220133406_add_paypal_funding_source_to_paypal_commerce_platform_sources.rb
189
190
  - lib/generators/solidus_paypal_commerce_platform/install/install_generator.rb
190
191
  - lib/generators/solidus_paypal_commerce_platform/install/templates/initializer.rb
191
192
  - lib/solidus_paypal_commerce_platform.rb
@@ -208,32 +209,6 @@ files:
208
209
  - lib/views/frontend/spree/orders/payment/_paypal_commerce_platform.html.erb
209
210
  - lib/views/frontend/spree/products/payment/_paypal_commerce_platform.html.erb
210
211
  - solidus_paypal_commerce_platform.gemspec
211
- - spec/features/backend/new_payment_method_spec.rb
212
- - spec/features/frontend/cart_spec.rb
213
- - spec/features/frontend/checkout_spec.rb
214
- - spec/features/frontend/product_spec.rb
215
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.COMPLETED.v2.json
216
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.PROCESSED.v2.json
217
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v1.json
218
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v2.json
219
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v1.json
220
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v2.json
221
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v1.json
222
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v2.json
223
- - spec/jobs/solidus_paypal_commerce_platform/webhook_job_spec.rb
224
- - spec/lib/solidus_paypal_commerce_platform/client_spec.rb
225
- - spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb
226
- - spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb
227
- - spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb
228
- - spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb
229
- - spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb
230
- - spec/models/solidus_paypal_commerce_platform/wizard_spec.rb
231
- - spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb
232
- - spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb
233
- - spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb
234
- - spec/spec_helper.rb
235
- - spec/support/capybara.rb
236
- - spec/support/paypal_sdk_script_tag_helper.rb
237
212
  homepage: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform
238
213
  licenses:
239
214
  - BSD-3-Clause
@@ -241,7 +216,8 @@ metadata:
241
216
  homepage_uri: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform
242
217
  source_code_uri: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform
243
218
  changelog_uri: https://github.com/solidusio-contrib/solidus_paypal_commerce_platform/releases
244
- post_install_message:
219
+ rubygems_mfa_required: 'true'
220
+ post_install_message:
245
221
  rdoc_options: []
246
222
  require_paths:
247
223
  - lib
@@ -256,34 +232,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
256
232
  - !ruby/object:Gem::Version
257
233
  version: '0'
258
234
  requirements: []
259
- rubygems_version: 3.1.2
260
- signing_key:
235
+ rubygems_version: 3.1.6
236
+ signing_key:
261
237
  specification_version: 4
262
238
  summary: Integrate Solidus with Paypal Commerce Platform
263
- test_files:
264
- - spec/features/backend/new_payment_method_spec.rb
265
- - spec/features/frontend/cart_spec.rb
266
- - spec/features/frontend/checkout_spec.rb
267
- - spec/features/frontend/product_spec.rb
268
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.COMPLETED.v2.json
269
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/CHECKOUT.ORDER.PROCESSED.v2.json
270
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v1.json
271
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.COMPLETED.v2.json
272
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v1.json
273
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.DENIED.v2.json
274
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v1.json
275
- - spec/jobs/solidus_paypal_commerce_platform/fixtures/PAYMENT.CAPTURE.REFUNDED.v2.json
276
- - spec/jobs/solidus_paypal_commerce_platform/webhook_job_spec.rb
277
- - spec/lib/solidus_paypal_commerce_platform/client_spec.rb
278
- - spec/lib/solidus_paypal_commerce_platform/configuration_spec.rb
279
- - spec/models/solidus_paypal_commerce_platform/payment_method_spec.rb
280
- - spec/models/solidus_paypal_commerce_platform/payment_source_spec.rb
281
- - spec/models/solidus_paypal_commerce_platform/paypal_address_spec.rb
282
- - spec/models/solidus_paypal_commerce_platform/state_guesser_spec.rb
283
- - spec/models/solidus_paypal_commerce_platform/wizard_spec.rb
284
- - spec/requests/solidus_paypal_commerce_platform/orders_controller_spec.rb
285
- - spec/requests/solidus_paypal_commerce_platform/shipping_rates_controller_spec.rb
286
- - spec/requests/solidus_paypal_commerce_platform/wizard_controller_spec.rb
287
- - spec/spec_helper.rb
288
- - spec/support/capybara.rb
289
- - spec/support/paypal_sdk_script_tag_helper.rb
239
+ test_files: []
@@ -1,40 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe "creating a new payment" do
4
- stub_authorization!
5
-
6
- it "displays PayPal Commerce Platform as an option" do
7
- visit "/admin/payment_methods/new"
8
- expect(page).to have_select('payment_method_type', options: [
9
- "PayPal Commerce Platform",
10
- "Bogus Credit Card Payments",
11
- "Check Payments",
12
- "Simple Bogus Credit Card Payments",
13
- "Store Credit Payments",
14
- ])
15
- select "PayPal Commerce Platform", from: 'payment_method_type'
16
- fill_in "Name", with: "PayPal!"
17
- click_on "Create"
18
- expect(page).to have_text("Payment Method has been successfully created!")
19
-
20
- fill_in "Client", with: "cli-123"
21
- fill_in "Client secret", with: "cli-sec-123"
22
- click_on "Update"
23
- expect(page).to have_text("Payment Method has been successfully updated!")
24
- end
25
-
26
- it "displays the onboarding button", :js do
27
- visit "/admin/payment_methods"
28
-
29
- # main_window = current_window
30
-
31
- within ".setup-wizard" do
32
- paypal_button = page.find("button")
33
- expect(paypal_button.text).to eq("Setup PayPal Commerce Platform")
34
- # TODO: make this more complete
35
- # paypal_window = window_opened_by do
36
- # paypal_button.click
37
- # end
38
- end
39
- end
40
- end
@@ -1,46 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe "Cart page" do
4
- describe "paypal payment method" do
5
- let(:order) { Spree::TestingSupport::OrderWalkthrough.up_to(:address) }
6
- let(:paypal_payment_method) { create(:paypal_payment_method) }
7
-
8
- before do
9
- user = create(:user)
10
- order.user = user
11
-
12
- paypal_payment_method
13
- allow_any_instance_of(Spree::OrdersController).to receive_messages(
14
- current_order: order,
15
- try_spree_current_user: user
16
- )
17
- end
18
-
19
- context "when generating a script tag" do
20
- it "generates a url with the correct credentials attached" do
21
- visit '/cart'
22
- expect(js_sdk_script_query).to include("client-id=#{paypal_payment_method.preferences[:client_id]}")
23
- end
24
-
25
- it "generates a partner_id attribute with the correct partner code attached" do
26
- visit '/cart'
27
- expect(js_sdk_script_partner_id).to eq("Solidus_PCP_SP")
28
- end
29
-
30
- it "generates a URL with the correct currency" do
31
- allow(order).to receive(:currency).and_return "EUR"
32
- visit '/cart'
33
- expect(js_sdk_script_query).to include("currency=EUR")
34
- end
35
-
36
- context "when auto-capture is set to true" do
37
- it "generates a url with intent capture" do
38
- paypal_payment_method.update(auto_capture: true)
39
- visit '/cart'
40
- expect(js_sdk_script_query).to include("client-id=#{paypal_payment_method.preferences[:client_id]}")
41
- expect(js_sdk_script_query).to include("intent=capture")
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,89 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe "Checkout" do
4
- describe "paypal payment method" do
5
- let(:order) { Spree::TestingSupport::OrderWalkthrough.up_to(:payment) }
6
- let(:paypal_payment_method) { create(:paypal_payment_method) }
7
- let(:failed_response) { OpenStruct.new(status_code: 500) }
8
-
9
- before do
10
- user = create(:user)
11
- order.user = user
12
- order.recalculate
13
-
14
- paypal_payment_method
15
- allow_any_instance_of(Spree::CheckoutController).to receive_messages(
16
- current_order: order, try_spree_current_user: user
17
- )
18
- end
19
-
20
- context "when generating a script tag" do
21
- it "generates a url with the correct credentials attached" do
22
- visit '/checkout/payment'
23
- expect(js_sdk_script_query).to include("client-id=#{paypal_payment_method.preferences[:client_id]}")
24
- end
25
-
26
- it "generates a partner_id attribute with the correct partner code attached" do
27
- visit '/checkout/payment'
28
- expect(js_sdk_script_partner_id).to eq("Solidus_PCP_SP")
29
- end
30
-
31
- it "generates a URL with the correct currency" do
32
- allow(order).to receive(:currency).and_return "EUR"
33
- visit '/checkout/payment'
34
- expect(js_sdk_script_query).to include("currency=EUR")
35
- end
36
-
37
- context "when auto-capture is set to true" do
38
- it "generates a url with intent capture" do
39
- paypal_payment_method.update(auto_capture: true)
40
- visit '/checkout/payment'
41
- expect(js_sdk_script_query).to include("client-id=#{paypal_payment_method.preferences[:client_id]}")
42
- expect(js_sdk_script_query).to include("intent=capture")
43
- end
44
- end
45
- end
46
-
47
- context "when no payment has been made" do
48
- it "fails to process" do
49
- visit '/checkout/payment'
50
- choose(option: paypal_payment_method.id)
51
- click_button("Save and Continue")
52
- expect(page).to have_content("Payments source PayPal order can't be blank")
53
- end
54
- end
55
-
56
- context "when a payment has been made" do
57
- it "proceeds to the next step" do
58
- visit '/checkout/payment'
59
- choose(option: paypal_payment_method.id)
60
- find(:xpath, "//input[@id='payments_source_paypal_order_id']", visible: false).set SecureRandom.hex(8)
61
- click_button("Save and Continue")
62
- expect(page).to have_css(".current", text: "Confirm")
63
- end
64
-
65
- it "records the paypal email address" do
66
- visit '/checkout/payment'
67
- choose(option: paypal_payment_method.id)
68
- find(:xpath, "//input[@id='payments_source_paypal_order_id']", visible: false).set SecureRandom.hex(8)
69
- find(:xpath, "//input[@id='payments_source_paypal_email']", visible: false).set "fake@email.com"
70
- click_button("Save and Continue")
71
- expect(Spree::Payment.last.source.paypal_email).to eq "fake@email.com"
72
- end
73
- end
74
-
75
- context "when a payment fails" do
76
- before { allow_any_instance_of(PayPal::PayPalHttpClient).to receive(:execute) { failed_response } }
77
-
78
- it "redirects the user back to the payments page" do
79
- visit '/checkout/payment'
80
- choose(option: paypal_payment_method.id)
81
- find(:xpath, "//input[@id='payments_source_paypal_order_id']", visible: false).set SecureRandom.hex(8)
82
- click_button("Save and Continue")
83
- click_button("Place Order")
84
- expect(page).to have_current_path("/checkout/payment")
85
- expect(page).to have_content("Your payment was declined")
86
- end
87
- end
88
- end
89
- end
@@ -1,91 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe "Product page", js: true do
4
- describe "paypal button" do
5
- let(:paypal_payment_method) { create(:paypal_payment_method) }
6
- let(:product) { create(:product, variants: [variant, variant_two]) }
7
- let(:store) { create(:store) }
8
- let(:variant) { create(:variant) }
9
- let(:variant_two) { create(:variant) }
10
-
11
- before do
12
- paypal_payment_method
13
- end
14
-
15
- context "when generating a script tag" do
16
- it "generates a url with the correct credentials attached" do
17
- visit "/products/#{product.slug}"
18
- expect(js_sdk_script_query).to include("client-id=#{paypal_payment_method.preferences[:client_id]}")
19
- end
20
-
21
- it "generates a partner_id attribute with the correct partner code attached" do
22
- visit "/products/#{product.slug}"
23
- expect(js_sdk_script_partner_id).to eq("Solidus_PCP_SP")
24
- end
25
-
26
- it "generates a URL with the correct currency" do
27
- allow_any_instance_of(SolidusPaypalCommercePlatform::PricingOptions).to receive(:currency).and_return "EUR"
28
- visit "/products/#{product.slug}"
29
- expect(js_sdk_script_query).to include("currency=EUR")
30
- end
31
-
32
- context "when auto-capture is set to true" do
33
- it "generates a url with intent capture" do
34
- paypal_payment_method.update(auto_capture: true)
35
- visit "/products/#{product.slug}"
36
- expect(js_sdk_script_query).to include("client-id=#{paypal_payment_method.preferences[:client_id]}")
37
- expect(js_sdk_script_query).to include("intent=capture")
38
- end
39
- end
40
- end
41
-
42
- describe "order creation" do
43
- before do
44
- allow_any_instance_of(Spree::Core::ControllerHelpers::Store).to receive(:current_store) { store }
45
- visit "/products/#{product.slug}"
46
-
47
- # Stubbing out paypal methods since their JS doesn't load in correctly on tests
48
- page.execute_script("paypal = {}")
49
- page.execute_script("paypal.render = function(){}")
50
- page.execute_script("paypal.Buttons = function(){return paypal}")
51
-
52
- # Waiting until the paypal button becomes available, because the SPCP namespace
53
- # isn't immediately available
54
- page.find("#paypal-button-container")
55
- end
56
-
57
- it "creates an order successfully" do
58
- page.evaluate_script("SolidusPaypalCommercePlatform.createOrder()")
59
- page.driver.wait_for_network_idle
60
-
61
- expect(Spree::Order.last).not_to be nil
62
- end
63
-
64
- it "sets the Spree number and token variables" do
65
- page.evaluate_script("SolidusPaypalCommercePlatform.createOrder()")
66
- page.driver.wait_for_network_idle
67
-
68
- expect(page.evaluate_script("Spree.current_order_id")).to eq Spree::Order.last.number
69
- expect(page.evaluate_script("Spree.current_order_token")).to eq Spree::Order.last.guest_token
70
- end
71
-
72
- it "uses the specified quantity" do
73
- quantity = 12
74
- fill_in('quantity', with: quantity)
75
-
76
- page.evaluate_script("SolidusPaypalCommercePlatform.createOrder()")
77
- page.driver.wait_for_network_idle
78
-
79
- expect(Spree::Order.last.line_items.first.quantity).to eq quantity
80
- end
81
-
82
- it "uses the selected variant" do
83
- page.choose("variant_id_#{variant_two.id}")
84
- page.evaluate_script("SolidusPaypalCommercePlatform.createOrder()")
85
- page.driver.wait_for_network_idle
86
-
87
- expect(Spree::Order.last.line_items.first.variant_id).to eq variant_two.id
88
- end
89
- end
90
- end
91
- end
@@ -1,121 +0,0 @@
1
- {
2
- "id": "WH-COC11055RA711503B-4YM959094A144403T",
3
- "create_time": "2018-04-16T21:21:49.000Z",
4
- "resource_type": "checkout-order",
5
- "event_type": "CHECKOUT.ORDER.COMPLETED",
6
- "summary": "Checkout Order Completed",
7
- "resource": {
8
- "update_time": "2018-04-01T21:20:49Z",
9
- "create_time": "2018-04-01T21:18:49Z",
10
- "purchase_units": [
11
- {
12
- "reference_id": "d9f80740-38f0-11e8-b467-0ed5f89f718b",
13
- "amount": {
14
- "currency_code": "USD",
15
- "value": "100.00"
16
- },
17
- "payee": {
18
- "email_address": "seller@example.com"
19
- },
20
- "shipping": {
21
- "method": "United States Postal Service",
22
- "address": {
23
- "address_line_1": "2211 N First Street",
24
- "address_line_2": "Building 17",
25
- "admin_area_2": "San Jose",
26
- "admin_area_1": "CA",
27
- "postal_code": "95131",
28
- "country_code": "US"
29
- }
30
- },
31
- "payments": {
32
- "captures": [
33
- {
34
- "id": "3C679366HH908993F",
35
- "status": "COMPLETED",
36
- "amount": {
37
- "currency_code": "USD",
38
- "value": "100.00"
39
- },
40
- "seller_protection": {
41
- "status": "ELIGIBLE",
42
- "dispute_categories": [
43
- "ITEM_NOT_RECEIVED",
44
- "UNAUTHORIZED_TRANSACTION"
45
- ]
46
- },
47
- "final_capture": true,
48
- "seller_receivable_breakdown": {
49
- "gross_amount": {
50
- "currency_code": "USD",
51
- "value": "100.00"
52
- },
53
- "paypal_fee": {
54
- "currency_code": "USD",
55
- "value": "3.00"
56
- },
57
- "net_amount": {
58
- "currency_code": "USD",
59
- "value": "97.00"
60
- }
61
- },
62
- "create_time": "2018-04-01T21:20:49Z",
63
- "update_time": "2018-04-01T21:20:49Z",
64
- "links": [
65
- {
66
- "href": "https://api.paypal.com/v2/payments/captures/3C679366HH908993F",
67
- "rel": "self",
68
- "method": "GET"
69
- },
70
- {
71
- "href": "https://api.paypal.com/v2/payments/captures/3C679366HH908993F/refund",
72
- "rel": "refund",
73
- "method": "POST"
74
- }
75
- ]
76
- }
77
- ]
78
- }
79
- }
80
- ],
81
- "links": [
82
- {
83
- "href": "https://api.paypal.com/v2/checkout/orders/5O190127TN364715T",
84
- "rel": "self",
85
- "method": "GET"
86
- }
87
- ],
88
- "id": "5O190127TN364715T",
89
- "gross_amount": {
90
- "currency_code": "USD",
91
- "value": "100.00"
92
- },
93
- "intent": "CAPTURE",
94
- "payer": {
95
- "name": {
96
- "given_name": "John",
97
- "surname": "Doe"
98
- },
99
- "email_address": "buyer@example.com",
100
- "payer_id": "QYR5Z8XDVJNXQ"
101
- },
102
- "status": "COMPLETED"
103
- },
104
- "links": [
105
- {
106
- "href": "https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-COC11055RA711503B-4YM959094A144403T",
107
- "rel": "self",
108
- "method": "GET",
109
- "encType": "application/json"
110
- },
111
- {
112
- "href": "https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-COC11055RA711503B-4YM959094A144403T/resend",
113
- "rel": "resend",
114
- "method": "POST",
115
- "encType": "application/json"
116
- }
117
- ],
118
- "event_version": "1.0",
119
- "zts": 1494957670,
120
- "resource_version": "2.0"
121
- }