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.
- checksums.yaml +4 -4
- data/README.md +52 -23
- data/app/assets/javascripts/solidus_afterpay/afterpay_checkout.js +11 -11
- data/app/assets/javascripts/solidus_afterpay/afterpay_checkout_button.js +85 -0
- data/app/assets/javascripts/solidus_afterpay/afterpay_init.js +12 -0
- data/app/assets/javascripts/solidus_afterpay/backend/afterpay_autocomplete.js +9 -0
- data/app/assets/javascripts/spree/backend/solidus_afterpay.js +3 -1
- data/app/assets/javascripts/spree/frontend/solidus_afterpay.js +2 -0
- data/app/controllers/solidus_afterpay/checkouts_controller.rb +8 -2
- data/app/controllers/solidus_afterpay/express_callbacks_controller.rb +61 -0
- data/app/decorators/controllers/solidus_afterpay/spree/orders_controller_decorator.rb +13 -0
- data/app/helpers/solidus_afterpay/afterpay_helper.rb +5 -4
- data/app/models/solidus_afterpay/gateway.rb +37 -10
- data/app/models/solidus_afterpay/order_component_builder.rb +34 -5
- data/app/models/solidus_afterpay/payment_method.rb +43 -10
- data/app/models/solidus_afterpay/payment_source.rb +1 -1
- data/app/presentes/solidus_afterpay/order_presenter.rb +17 -0
- data/app/presentes/solidus_afterpay/shipping_rate_presenter.rb +28 -0
- data/app/services/solidus_afterpay/base_service.rb +13 -0
- data/app/services/solidus_afterpay/shipping_rate_builder_service.rb +32 -0
- data/app/services/solidus_afterpay/update_order_addresses_service.rb +45 -0
- data/app/services/solidus_afterpay/update_order_attributes_service.rb +49 -0
- data/app/views/solidus_afterpay/_afterpay_checkout_button.html.erb +9 -0
- data/app/views/solidus_afterpay/_afterpay_javascript.html.erb +4 -1
- data/app/views/spree/api/payments/source_views/_afterpay.json.jbuilder +1 -1
- data/app/views/spree/shared/_afterpay_messaging.html.erb +14 -12
- data/config/locales/en.yml +4 -0
- data/config/routes.rb +2 -0
- data/lib/generators/solidus_afterpay/install/templates/initializer.rb +12 -0
- data/lib/solidus_afterpay/configuration.rb +22 -0
- data/lib/solidus_afterpay/testing_support/factories.rb +20 -0
- data/lib/solidus_afterpay/version.rb +1 -1
- data/solidus_afterpay.gemspec +1 -1
- data/spec/fixtures/vcr_casettes/find_order/invalid.yml +64 -0
- data/spec/fixtures/vcr_casettes/find_order/valid.yml +120 -0
- data/spec/helpers/solidus_afterpay/afterpay_helper_spec.rb +18 -2
- data/spec/models/solidus_afterpay/gateway_spec.rb +86 -12
- data/spec/models/solidus_afterpay/order_component_builder_spec.rb +67 -6
- data/spec/models/solidus_afterpay/payment_method_spec.rb +103 -39
- data/spec/models/solidus_afterpay/payment_source_spec.rb +3 -3
- data/spec/presenters/solidus_afterpay/order_presenter_spec.rb +34 -0
- data/spec/presenters/solidus_afterpay/shipping_rate_presenter_spec.rb +28 -0
- data/spec/requests/solidus_afterpay/checkouts_controller_spec.rb +72 -4
- data/spec/requests/solidus_afterpay/express_callbacks_controller_spec.rb +167 -0
- data/spec/services/solidus_afterpay/base_service_spec.rb +13 -0
- data/spec/services/solidus_afterpay/shipping_rate_builder_service_spec.rb +34 -0
- data/spec/services/solidus_afterpay/update_order_addresses_service_spec.rb +82 -0
- data/spec/services/solidus_afterpay/update_order_attributes_service_spec.rb +58 -0
- data/spec/support/cache.rb +5 -0
- data/spec/support/solidus.rb +1 -0
- data/spec/views/solidus_afterpay/express_checkout_button_spec.rb +33 -0
- data/spec/views/spree/shared/afterpay_messaging_spec.rb +44 -0
- 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 @@
|
|
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.
|
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-
|
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.
|
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.
|
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
|