solidus_afterpay 0.1.0 → 0.2.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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +52 -23
  3. data/app/assets/javascripts/solidus_afterpay/afterpay_checkout.js +11 -11
  4. data/app/assets/javascripts/solidus_afterpay/afterpay_checkout_button.js +85 -0
  5. data/app/assets/javascripts/solidus_afterpay/afterpay_init.js +12 -0
  6. data/app/assets/javascripts/solidus_afterpay/backend/afterpay_autocomplete.js +9 -0
  7. data/app/assets/javascripts/spree/backend/solidus_afterpay.js +3 -1
  8. data/app/assets/javascripts/spree/frontend/solidus_afterpay.js +2 -0
  9. data/app/controllers/solidus_afterpay/checkouts_controller.rb +8 -2
  10. data/app/controllers/solidus_afterpay/express_callbacks_controller.rb +61 -0
  11. data/app/decorators/controllers/solidus_afterpay/spree/orders_controller_decorator.rb +13 -0
  12. data/app/helpers/solidus_afterpay/afterpay_helper.rb +5 -4
  13. data/app/models/solidus_afterpay/gateway.rb +37 -10
  14. data/app/models/solidus_afterpay/order_component_builder.rb +34 -5
  15. data/app/models/solidus_afterpay/payment_method.rb +43 -10
  16. data/app/models/solidus_afterpay/payment_source.rb +1 -1
  17. data/app/presentes/solidus_afterpay/order_presenter.rb +17 -0
  18. data/app/presentes/solidus_afterpay/shipping_rate_presenter.rb +28 -0
  19. data/app/services/solidus_afterpay/base_service.rb +13 -0
  20. data/app/services/solidus_afterpay/shipping_rate_builder_service.rb +32 -0
  21. data/app/services/solidus_afterpay/update_order_addresses_service.rb +45 -0
  22. data/app/services/solidus_afterpay/update_order_attributes_service.rb +49 -0
  23. data/app/views/solidus_afterpay/_afterpay_checkout_button.html.erb +9 -0
  24. data/app/views/solidus_afterpay/_afterpay_javascript.html.erb +4 -1
  25. data/app/views/spree/api/payments/source_views/_afterpay.json.jbuilder +1 -1
  26. data/app/views/spree/shared/_afterpay_messaging.html.erb +14 -12
  27. data/config/locales/en.yml +4 -0
  28. data/config/routes.rb +2 -0
  29. data/lib/generators/solidus_afterpay/install/templates/initializer.rb +12 -0
  30. data/lib/solidus_afterpay/configuration.rb +22 -0
  31. data/lib/solidus_afterpay/testing_support/factories.rb +20 -0
  32. data/lib/solidus_afterpay/version.rb +1 -1
  33. data/solidus_afterpay.gemspec +1 -1
  34. data/spec/fixtures/vcr_casettes/find_order/invalid.yml +64 -0
  35. data/spec/fixtures/vcr_casettes/find_order/valid.yml +120 -0
  36. data/spec/helpers/solidus_afterpay/afterpay_helper_spec.rb +18 -2
  37. data/spec/models/solidus_afterpay/gateway_spec.rb +86 -12
  38. data/spec/models/solidus_afterpay/order_component_builder_spec.rb +67 -6
  39. data/spec/models/solidus_afterpay/payment_method_spec.rb +103 -39
  40. data/spec/models/solidus_afterpay/payment_source_spec.rb +3 -3
  41. data/spec/presenters/solidus_afterpay/order_presenter_spec.rb +34 -0
  42. data/spec/presenters/solidus_afterpay/shipping_rate_presenter_spec.rb +28 -0
  43. data/spec/requests/solidus_afterpay/checkouts_controller_spec.rb +72 -4
  44. data/spec/requests/solidus_afterpay/express_callbacks_controller_spec.rb +167 -0
  45. data/spec/services/solidus_afterpay/base_service_spec.rb +13 -0
  46. data/spec/services/solidus_afterpay/shipping_rate_builder_service_spec.rb +34 -0
  47. data/spec/services/solidus_afterpay/update_order_addresses_service_spec.rb +82 -0
  48. data/spec/services/solidus_afterpay/update_order_attributes_service_spec.rb +58 -0
  49. data/spec/support/cache.rb +5 -0
  50. data/spec/support/solidus.rb +1 -0
  51. data/spec/views/solidus_afterpay/express_checkout_button_spec.rb +33 -0
  52. data/spec/views/spree/shared/afterpay_messaging_spec.rb +44 -0
  53. metadata +42 -4
@@ -0,0 +1,167 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe SolidusAfterpay::ExpressCallbacksController, type: :request do
6
+ describe 'PATCH update' do
7
+ subject(:request) { patch "/solidus_afterpay/express_callbacks/#{order.number}.json", params: params }
8
+
9
+ let(:user) { create(:user) }
10
+ let(:order) { create(:order_with_line_items, state: 'address', line_items_count: 2, user: user) }
11
+
12
+ let(:params) do
13
+ {
14
+ address: {
15
+ name: 'John Doe',
16
+ address1: '8125 Centre St',
17
+ address2: '',
18
+ suburb: 'Citronelle',
19
+ postcode: '36522-2156',
20
+ phoneNumber: '1234567',
21
+ countryCode: 'US',
22
+ state: 'AL'
23
+ }
24
+ }
25
+ end
26
+
27
+ context 'when the user is not authorized' do
28
+ it 'returns 401 status code' do
29
+ request
30
+ expect(response).to have_http_status(:unauthorized)
31
+ end
32
+ end
33
+
34
+ context 'when the user is a guest user', with_guest_session: true do
35
+ it 'returns 200 status code' do
36
+ request
37
+ expect(response).to have_http_status(:ok)
38
+ end
39
+ end
40
+
41
+ context 'when the user is logged in', with_signed_in_user: true do
42
+ let(:update_order_address_service_result) { true }
43
+
44
+ before do
45
+ allow(SolidusAfterpay::UpdateOrderAddressesService)
46
+ .to receive(:call)
47
+ .and_return(update_order_address_service_result)
48
+
49
+ allow(SolidusAfterpay.shipping_rate_builder_service_class)
50
+ .to receive(:call)
51
+ end
52
+
53
+ it 'returns 200 status code' do
54
+ request
55
+ expect(response).to have_http_status(:ok)
56
+ end
57
+
58
+ it 'calls the update order addresses service' do
59
+ request
60
+ expect(SolidusAfterpay::UpdateOrderAddressesService)
61
+ .to have_received(:call)
62
+ .with(order: order, address_params: ActionController::Parameters.new(params[:address]))
63
+ end
64
+
65
+ it 'changes the order status' do
66
+ expect { request }.to change { order.reload.state }.from('address').to('delivery')
67
+ end
68
+
69
+ it 'changes the order email if it has a dummy email' do
70
+ order.update!(email: SolidusAfterpay.configuration.dummy_email)
71
+ expect { request }.to change { order.reload.email }.from(SolidusAfterpay.configuration.dummy_email).to(nil)
72
+ end
73
+
74
+ it 'calls the shipping rate builder service class' do
75
+ request
76
+ expect(SolidusAfterpay.shipping_rate_builder_service_class)
77
+ .to have_received(:call)
78
+ .with(order: order)
79
+ end
80
+
81
+ context 'when the update order addresses service returns false' do
82
+ let(:update_order_address_service_result) { false }
83
+
84
+ it 'retuns an internal server error' do
85
+ request
86
+ expect(response).to have_http_status(:internal_server_error)
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ describe 'POST create' do
93
+ subject(:request) { post "/solidus_afterpay/express_callbacks/#{order.number}.json", params: params }
94
+
95
+ let(:user) { create(:user) }
96
+ let(:order) { create(:order_with_line_items, state: 'delivery', line_items_count: 2, user: user) }
97
+ let(:payment_method) { create(:afterpay_payment_method) }
98
+
99
+ let(:order_token) { 'TOKEN' }
100
+ let(:update_order_attributes_service_result) { true }
101
+
102
+ let(:params) do
103
+ {
104
+ token: order_token,
105
+ order_number: order.number,
106
+ payment_method_id: payment_method.id,
107
+ }
108
+ end
109
+
110
+ before do
111
+ allow(SolidusAfterpay.update_order_attributes_service_class)
112
+ .to receive(:call)
113
+ .and_return(update_order_attributes_service_result)
114
+ end
115
+
116
+ context 'when the user is not authorized' do
117
+ it 'returns 401 status code' do
118
+ request
119
+ expect(response).to have_http_status(:unauthorized)
120
+ end
121
+ end
122
+
123
+ context 'when the user is a guest user', with_guest_session: true do
124
+ it 'returns 200 status code' do
125
+ request
126
+ expect(response).to have_http_status(:ok)
127
+ end
128
+ end
129
+
130
+ context 'when the user is logged in', with_signed_in_user: true do
131
+ it 'returns 200 status code' do
132
+ request
133
+ expect(response).to have_http_status(:ok)
134
+ end
135
+
136
+ it 'calls the update order attributes service class' do
137
+ request
138
+ expect(SolidusAfterpay.update_order_attributes_service_class)
139
+ .to have_received(:call)
140
+ .with(
141
+ order: order,
142
+ afterpay_order_token: order_token,
143
+ payment_method: payment_method,
144
+ request_env: an_instance_of(Hash)
145
+ )
146
+ end
147
+
148
+ it 'changes the order state to confirm' do
149
+ expect { request }.to change { order.reload.state }.from('delivery').to('confirm')
150
+ end
151
+
152
+ it 'redirects the user to the checkout confirm step' do
153
+ request
154
+ expect(JSON.parse(response.body)['redirect_url']).to eq('http://www.example.com/checkout/confirm')
155
+ end
156
+
157
+ context 'when the update order attributes service fails' do
158
+ let(:update_order_attributes_service_result) { false }
159
+
160
+ it 'returns 500 status code' do
161
+ request
162
+ expect(response).to have_http_status(:internal_server_error)
163
+ end
164
+ end
165
+ end
166
+ end
167
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe SolidusAfterpay::BaseService do
6
+ describe '#call' do
7
+ subject(:service) { described_class.new.call }
8
+
9
+ it 'raises a not implemented error' do
10
+ expect { service }.to raise_error(::NotImplementedError)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe SolidusAfterpay::ShippingRateBuilderService do
6
+ subject(:service) { described_class.call(order: order) }
7
+
8
+ let(:order) { ::Spree::TestingSupport::OrderWalkthrough.up_to(:delivery) }
9
+
10
+ context 'when the order is in a valid state' do
11
+ it 'returns the afterpay compliant shipping rate object' do
12
+ expect(service).to eq(
13
+ [
14
+ {
15
+ id: order.reload.shipments.first.shipping_rates.first.id.to_s,
16
+ name: 'UPS Ground',
17
+ description: '$10.00',
18
+ shipping_amount: '10.0',
19
+ currency: 'USD',
20
+ order_amount: '20.0'
21
+ }
22
+ ]
23
+ )
24
+ end
25
+ end
26
+
27
+ context 'when the order is not in a valid state' do
28
+ before { order.shipments = [] }
29
+
30
+ it 'returns an empty array' do
31
+ expect(service).to be_empty
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe SolidusAfterpay::UpdateOrderAddressesService do
6
+ subject(:service) { described_class.call(order: order, address_params: address_params) }
7
+
8
+ let(:order) { create(:order, state: 'payment', ship_address: nil, bill_address: nil) }
9
+
10
+ before do
11
+ country = create(:country)
12
+ create(:state, country: country)
13
+ end
14
+
15
+ context 'when the address params are valid' do
16
+ let(:address_params) do
17
+ {
18
+ address1: '8125 Centre St',
19
+ address2: '',
20
+ name: 'John Doe',
21
+ suburb: 'Citronelle',
22
+ postcode: '36522-2156',
23
+ phoneNumber: '12345',
24
+ countryCode: 'US',
25
+ state: 'AL'
26
+ }
27
+ end
28
+
29
+ it 'returns true' do
30
+ expect(service).to be_truthy
31
+ end
32
+
33
+ it 'changes the order state to address' do
34
+ expect { service }.to change { order.reload.state }.from('payment').to('address')
35
+ end
36
+
37
+ context 'when the order has an email set' do
38
+ it 'does not change the order email' do
39
+ expect { service }.not_to(change { order.reload.email })
40
+ end
41
+ end
42
+
43
+ context 'when the order does not have an email set' do
44
+ # rubocop:disable Rails/SkipsModelValidations
45
+ before { order.update_columns(email: nil) }
46
+ # rubocop:enable Rails/SkipsModelValidations
47
+
48
+ it 'changes the order email with a dummy one' do
49
+ expect { service }
50
+ .to change { order.reload.email }
51
+ .to(SolidusAfterpay.configuration.dummy_email)
52
+ end
53
+ end
54
+ end
55
+
56
+ context 'when the address params are not valid' do
57
+ let(:address_params) do
58
+ {
59
+ address1: '',
60
+ address2: '',
61
+ name: 'John Doe',
62
+ suburb: '',
63
+ postcode: '36522-2156',
64
+ phoneNumber: '12345',
65
+ countryCode: 'US',
66
+ state: 'AL'
67
+ }
68
+ end
69
+
70
+ it 'returns false' do
71
+ expect(service).to be_falsey
72
+ end
73
+
74
+ it 'changes the order state to address' do
75
+ expect { service }.not_to(change { order.reload.state })
76
+ end
77
+
78
+ it 'does not change the order email' do
79
+ expect { service }.not_to(change { order.reload.email })
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe SolidusAfterpay::UpdateOrderAttributesService do
6
+ subject(:service) do
7
+ described_class.call(
8
+ order: order,
9
+ afterpay_order_token: afterpay_order_token,
10
+ payment_method: payment_method,
11
+ request_env: 'env'
12
+ )
13
+ end
14
+
15
+ let!(:order) { create(:order_with_line_items, line_items_count: 2, state: 'delivery') }
16
+ let!(:payment_method) { create(:afterpay_payment_method) }
17
+
18
+ before do
19
+ allow(Spree::ShippingRate).to receive(:find).and_return(Spree::ShippingRate.first)
20
+ allow(order).to receive(:available_payment_methods).and_return(Spree::PaymentMethod.all)
21
+ end
22
+
23
+ context 'when the afterpay find order is a success', vcr: 'find_order/valid' do
24
+ let(:afterpay_order_token) { '002.cb9qevbs1o4el3adh817hqkotkbv4b8u1jkekofd3nb2m8lu' }
25
+
26
+ it 'returns true' do
27
+ expect(service).to be_truthy
28
+ end
29
+
30
+ it 'updates the order email with the Afterpay order email' do
31
+ expect { service }.to change { order.reload.email }.to('andreavassallo@nebulab.com')
32
+ end
33
+
34
+ # rubocop:disable RSpec/MultipleExpectations
35
+ it 'updates the payments information with the afterpay payment information' do
36
+ expect { service }.to change { order.payments.reload.count }.from(0).to(1)
37
+ expect(order.payments.first.amount).to eq(53.53)
38
+ expect(order.payments.first.source.token).to eq(afterpay_order_token)
39
+ end
40
+ # rubocop:enable RSpec/MultipleExpectations
41
+ end
42
+
43
+ context 'when the afterpay find order is a failure', vcr: 'find_order/invalid' do
44
+ let(:afterpay_order_token) { 'INVALID_TOKEN' }
45
+
46
+ it 'returns false' do
47
+ expect(service).to be_falsey
48
+ end
49
+
50
+ it 'does not change the order email' do
51
+ expect { service }.not_to(change { order.reload.email })
52
+ end
53
+
54
+ it 'does not change the payments count' do
55
+ expect { service }.not_to(change { order.payments.reload.count })
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.configure do |config|
4
+ config.after { Rails.cache.clear }
5
+ end
@@ -0,0 +1 @@
1
+ require 'spree/testing_support/order_walkthrough'
@@ -0,0 +1,33 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "rendering afterpay express checkout button", type: :view do
4
+ subject(:rendered) { render "solidus_afterpay/afterpay_checkout_button", payment_method: payment_method }
5
+
6
+ let(:payment_method) { SolidusAfterpay::PaymentMethod.active.first }
7
+ let(:order) { create(:order) }
8
+
9
+ before do
10
+ create(:afterpay_payment_method)
11
+ assign(:order, order)
12
+ end
13
+
14
+ context "when order is available for order" do
15
+ before do
16
+ allow(payment_method).to receive(:available_for_order?).with(order).and_return(true)
17
+ end
18
+
19
+ it 'displays the afterpay express checkout button' do
20
+ expect(rendered).to match("Checkout with Afterpay")
21
+ end
22
+ end
23
+
24
+ context "when order is not available for order" do
25
+ before do
26
+ allow(payment_method).to receive(:available_for_order?).with(order).and_return(false)
27
+ end
28
+
29
+ it 'does not display the afterpay express checkout button' do
30
+ expect(rendered).not_to match("Checkout with Afterpay")
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,44 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "rendering afterpay messaging", type: :view do
4
+ let(:product) { create(:base_product) }
5
+ let(:second_product) { create(:base_product) }
6
+ let(:excluded_product) { create(:base_product) }
7
+ let(:product_array) { [product] }
8
+ let(:payment_method) { SolidusAfterpay::PaymentMethod.active.first }
9
+ let(:amount) { product.price }
10
+
11
+ before do
12
+ create(:afterpay_payment_method, preferred_excluded_products: excluded_product.id.to_s)
13
+ render partial: "spree/shared/afterpay_messaging", locals: { min: nil, max: nil, products: product_array,
14
+ data:
15
+ { amount: amount, locale: "en_US", currency: "USD" } }
16
+ end
17
+
18
+ context "without excluded products" do
19
+ context "when rendering afterpay messaging for a single product" do
20
+ it 'displays afterpay messaging' do
21
+ expect(rendered).to match("19.99" && "afterpay-placement")
22
+ end
23
+ end
24
+
25
+ context "when rendering afterpay messaging for multiple products" do
26
+ let(:product_array) { [product, second_product] }
27
+ let(:amount) { (product.price + second_product.price) }
28
+
29
+ it 'displays afterpay messaging' do
30
+ expect(rendered).to match("39.98" && "afterpay-placement")
31
+ end
32
+ end
33
+ end
34
+
35
+ context "with excluded products" do
36
+ context "when one of the products is excluded" do
37
+ let(:product_array) { [product, second_product, excluded_product] }
38
+
39
+ it "does not render the afterpay messaging partial" do
40
+ expect(rendered).not_to match("afterpay-placement")
41
+ end
42
+ end
43
+ end
44
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_afterpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Rimondi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-09-09 00:00:00.000000000 Z
12
+ date: 2021-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: afterpay
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 0.2.0
20
+ version: 0.5.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 0.2.0
27
+ version: 0.5.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: solidus_core
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -120,6 +120,9 @@ files:
120
120
  - README.md
121
121
  - Rakefile
122
122
  - app/assets/javascripts/solidus_afterpay/afterpay_checkout.js
123
+ - app/assets/javascripts/solidus_afterpay/afterpay_checkout_button.js
124
+ - app/assets/javascripts/solidus_afterpay/afterpay_init.js
125
+ - app/assets/javascripts/solidus_afterpay/backend/afterpay_autocomplete.js
123
126
  - app/assets/javascripts/spree/backend/solidus_afterpay.js
124
127
  - app/assets/javascripts/spree/frontend/solidus_afterpay.js
125
128
  - app/assets/stylesheets/spree/backend/solidus_afterpay.css
@@ -127,7 +130,9 @@ files:
127
130
  - app/controllers/solidus_afterpay/base_controller.rb
128
131
  - app/controllers/solidus_afterpay/callbacks_controller.rb
129
132
  - app/controllers/solidus_afterpay/checkouts_controller.rb
133
+ - app/controllers/solidus_afterpay/express_callbacks_controller.rb
130
134
  - app/decorators/controllers/solidus_afterpay/spree/checkout_controller_decorator.rb
135
+ - app/decorators/controllers/solidus_afterpay/spree/orders_controller_decorator.rb
131
136
  - app/decorators/models/solidus_afterpay/spree/order_decorator.rb
132
137
  - app/helpers/solidus_afterpay/afterpay_helper.rb
133
138
  - app/models/solidus_afterpay/gateway.rb
@@ -135,6 +140,13 @@ files:
135
140
  - app/models/solidus_afterpay/payment_method.rb
136
141
  - app/models/solidus_afterpay/payment_source.rb
137
142
  - app/models/solidus_afterpay/user_agent_generator.rb
143
+ - app/presentes/solidus_afterpay/order_presenter.rb
144
+ - app/presentes/solidus_afterpay/shipping_rate_presenter.rb
145
+ - app/services/solidus_afterpay/base_service.rb
146
+ - app/services/solidus_afterpay/shipping_rate_builder_service.rb
147
+ - app/services/solidus_afterpay/update_order_addresses_service.rb
148
+ - app/services/solidus_afterpay/update_order_attributes_service.rb
149
+ - app/views/solidus_afterpay/_afterpay_checkout_button.html.erb
138
150
  - app/views/solidus_afterpay/_afterpay_javascript.html.erb
139
151
  - app/views/spree/admin/payments/source_forms/_afterpay.html.erb
140
152
  - app/views/spree/admin/payments/source_views/_afterpay.html.erb
@@ -171,6 +183,8 @@ files:
171
183
  - spec/fixtures/vcr_casettes/deferred/capture/valid.yml
172
184
  - spec/fixtures/vcr_casettes/deferred/void/invalid.yml
173
185
  - spec/fixtures/vcr_casettes/deferred/void/valid.yml
186
+ - spec/fixtures/vcr_casettes/find_order/invalid.yml
187
+ - spec/fixtures/vcr_casettes/find_order/valid.yml
174
188
  - spec/fixtures/vcr_casettes/find_payment/invalid.yml
175
189
  - spec/fixtures/vcr_casettes/find_payment/valid.yml
176
190
  - spec/fixtures/vcr_casettes/immediate/capture/declined_payment.yml
@@ -184,12 +198,23 @@ files:
184
198
  - spec/models/solidus_afterpay/payment_source_spec.rb
185
199
  - spec/models/solidus_afterpay/user_agent_generator_spec.rb
186
200
  - spec/models/spree/order_spec.rb
201
+ - spec/presenters/solidus_afterpay/order_presenter_spec.rb
202
+ - spec/presenters/solidus_afterpay/shipping_rate_presenter_spec.rb
187
203
  - spec/requests/solidus_afterpay/callbacks_controller_spec.rb
188
204
  - spec/requests/solidus_afterpay/checkouts_controller_spec.rb
205
+ - spec/requests/solidus_afterpay/express_callbacks_controller_spec.rb
206
+ - spec/services/solidus_afterpay/base_service_spec.rb
207
+ - spec/services/solidus_afterpay/shipping_rate_builder_service_spec.rb
208
+ - spec/services/solidus_afterpay/update_order_addresses_service_spec.rb
209
+ - spec/services/solidus_afterpay/update_order_attributes_service_spec.rb
189
210
  - spec/spec_helper.rb
190
211
  - spec/support/auth.rb
212
+ - spec/support/cache.rb
191
213
  - spec/support/preferences.rb
214
+ - spec/support/solidus.rb
192
215
  - spec/support/vcr.rb
216
+ - spec/views/solidus_afterpay/express_checkout_button_spec.rb
217
+ - spec/views/spree/shared/afterpay_messaging_spec.rb
193
218
  homepage: https://github.com/solidusio-contrib/solidus_afterpay#readme
194
219
  licenses:
195
220
  - Apache-2.0
@@ -228,6 +253,8 @@ test_files:
228
253
  - spec/fixtures/vcr_casettes/deferred/capture/valid.yml
229
254
  - spec/fixtures/vcr_casettes/deferred/void/invalid.yml
230
255
  - spec/fixtures/vcr_casettes/deferred/void/valid.yml
256
+ - spec/fixtures/vcr_casettes/find_order/invalid.yml
257
+ - spec/fixtures/vcr_casettes/find_order/valid.yml
231
258
  - spec/fixtures/vcr_casettes/find_payment/invalid.yml
232
259
  - spec/fixtures/vcr_casettes/find_payment/valid.yml
233
260
  - spec/fixtures/vcr_casettes/immediate/capture/declined_payment.yml
@@ -241,9 +268,20 @@ test_files:
241
268
  - spec/models/solidus_afterpay/payment_source_spec.rb
242
269
  - spec/models/solidus_afterpay/user_agent_generator_spec.rb
243
270
  - spec/models/spree/order_spec.rb
271
+ - spec/presenters/solidus_afterpay/order_presenter_spec.rb
272
+ - spec/presenters/solidus_afterpay/shipping_rate_presenter_spec.rb
244
273
  - spec/requests/solidus_afterpay/callbacks_controller_spec.rb
245
274
  - spec/requests/solidus_afterpay/checkouts_controller_spec.rb
275
+ - spec/requests/solidus_afterpay/express_callbacks_controller_spec.rb
276
+ - spec/services/solidus_afterpay/base_service_spec.rb
277
+ - spec/services/solidus_afterpay/shipping_rate_builder_service_spec.rb
278
+ - spec/services/solidus_afterpay/update_order_addresses_service_spec.rb
279
+ - spec/services/solidus_afterpay/update_order_attributes_service_spec.rb
246
280
  - spec/spec_helper.rb
247
281
  - spec/support/auth.rb
282
+ - spec/support/cache.rb
248
283
  - spec/support/preferences.rb
284
+ - spec/support/solidus.rb
249
285
  - spec/support/vcr.rb
286
+ - spec/views/solidus_afterpay/express_checkout_button_spec.rb
287
+ - spec/views/spree/shared/afterpay_messaging_spec.rb