solidus_afterpay 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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