solidus_six_saferpay 0.1.3 → 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/.circleci/config.yml +35 -0
- data/.gem_release.yml +5 -0
- data/.github/stale.yml +17 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +12 -0
- data/Gemfile +33 -0
- data/LICENSE +26 -0
- data/README.md +36 -20
- data/Rakefile +4 -54
- data/app/assets/config/solidus_six_saferpay_manifest.js +1 -0
- data/app/assets/images/solidus_six_saferpay/.keep +0 -0
- data/app/assets/javascripts/spree/backend/solidus_six_saferpay.js +2 -0
- data/app/assets/javascripts/spree/frontend/solidus_six_saferpay.js +2 -0
- data/app/assets/stylesheets/solidus_six_saferpay/loading_animation.scss +0 -27
- data/app/assets/stylesheets/solidus_six_saferpay/payments.scss +4 -1
- data/app/assets/stylesheets/spree/backend/solidus_six_saferpay.css +4 -0
- data/app/assets/stylesheets/spree/frontend/solidus_six_saferpay.css +4 -0
- data/app/controllers/spree/solidus_six_saferpay/checkout_controller.rb +56 -10
- data/app/services/spree/solidus_six_saferpay/inquire_payment.rb +1 -0
- data/app/views/spree/checkout/payment/_saferpay_payment.html.erb +1 -1
- data/app/views/spree/six_saferpay_payments/_six_saferpay_payment.html.erb +2 -2
- data/bin/console +17 -0
- data/bin/rails +18 -0
- data/bin/rake +7 -0
- data/bin/setup +8 -0
- data/config/initializers/assets.rb +3 -0
- data/config/locales/de.yml +1 -1
- data/config/locales/en.yml +1 -1
- data/config/locales/fr.yml +1 -1
- data/config/routes.rb +6 -6
- data/lib/generators/solidus_six_saferpay/install/install_generator.rb +15 -3
- data/lib/solidus_six_saferpay.rb +6 -3
- data/lib/solidus_six_saferpay/configuration.rb +4 -7
- data/lib/solidus_six_saferpay/engine.rb +19 -10
- data/lib/solidus_six_saferpay/gateway.rb +5 -4
- data/lib/solidus_six_saferpay/payment_page_gateway.rb +8 -9
- data/lib/solidus_six_saferpay/transaction_gateway.rb +8 -9
- data/lib/solidus_six_saferpay/version.rb +3 -1
- data/solidus_six_saferpay.gemspec +42 -0
- data/spec/controllers/spree/solidus_six_saferpay/checkout_controller_spec.rb +41 -0
- data/spec/controllers/spree/solidus_six_saferpay/payment_page/checkout_controller_spec.rb +206 -0
- data/spec/controllers/spree/solidus_six_saferpay/transaction/checkout_controller_spec.rb +229 -0
- data/spec/factories/payment_methods.rb +23 -0
- data/spec/factories/payments.rb +11 -0
- data/spec/factories/spree/six_saferpay_payments.rb +118 -0
- data/spec/models/spree/six_saferpay_payment_spec.rb +203 -0
- data/spec/rails_helper.rb +73 -0
- data/spec/services/spree/solidus_six_saferpay/assert_payment_page_spec.rb +148 -0
- data/spec/services/spree/solidus_six_saferpay/authorize_payment_spec.rb +39 -0
- data/spec/services/spree/solidus_six_saferpay/authorize_transaction_spec.rb +148 -0
- data/spec/services/spree/solidus_six_saferpay/initialize_payment_page_spec.rb +83 -0
- data/spec/services/spree/solidus_six_saferpay/initialize_payment_spec.rb +40 -0
- data/spec/services/spree/solidus_six_saferpay/initialize_transaction_spec.rb +85 -0
- data/spec/services/spree/solidus_six_saferpay/inquire_payment_page_payment_spec.rb +116 -0
- data/spec/services/spree/solidus_six_saferpay/inquire_payment_spec.rb +39 -0
- data/spec/services/spree/solidus_six_saferpay/inquire_transaction_payment_spec.rb +117 -0
- data/spec/services/spree/solidus_six_saferpay/payment_validator_spec.rb +100 -0
- data/spec/services/spree/solidus_six_saferpay/process_authorized_payment_spec.rb +39 -0
- data/spec/services/spree/solidus_six_saferpay/process_payment_page_payment_spec.rb +225 -0
- data/spec/services/spree/solidus_six_saferpay/process_transaction_payment_spec.rb +219 -0
- data/spec/solidus_six_saferpay/configuration_spec.rb +15 -0
- data/spec/solidus_six_saferpay/error_handler_spec.rb +65 -0
- data/spec/solidus_six_saferpay/gateway_response_spec.rb +70 -0
- data/spec/solidus_six_saferpay/gateway_spec.rb +365 -0
- data/spec/solidus_six_saferpay/payment_page_gateway_spec.rb +392 -0
- data/spec/solidus_six_saferpay/transaction_gateway_spec.rb +390 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/support/route_access.rb +6 -0
- data/spec/support/uses_payment_page_gateway.rb +29 -0
- data/spec/support/uses_transaction_gateway.rb +28 -0
- metadata +240 -99
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module SolidusSixSaferpay
|
5
|
+
RSpec.describe ProcessAuthorizedPayment do
|
6
|
+
|
7
|
+
let(:payment) { create(:six_saferpay_payment, :authorized) }
|
8
|
+
|
9
|
+
let(:service) { described_class.new(payment) }
|
10
|
+
|
11
|
+
describe '.call' do
|
12
|
+
it 'calls an initialized service with given order and payment method' do
|
13
|
+
expect(described_class).to receive(:new).with(payment).and_return(service)
|
14
|
+
expect(service).to receive(:call)
|
15
|
+
|
16
|
+
described_class.call(payment)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#call' do
|
21
|
+
it 'fails because gateway raises an error' do
|
22
|
+
expect { service.call }.to raise_error(NotImplementedError)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#gateway' do
|
27
|
+
it 'raises an error because the gateway must be defined in subclasses' do
|
28
|
+
expect { service.gateway }.to raise_error(NotImplementedError)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#success?' do
|
33
|
+
it 'is initially false' do
|
34
|
+
expect(service).not_to be_success
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,225 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module SolidusSixSaferpay
|
5
|
+
RSpec.describe ProcessPaymentPagePayment do
|
6
|
+
|
7
|
+
let(:payment) { create(:six_saferpay_payment, :authorized) }
|
8
|
+
|
9
|
+
subject { described_class.new(payment) }
|
10
|
+
|
11
|
+
describe '#gateway' do
|
12
|
+
it_behaves_like "it uses the payment page gateway"
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#call' do
|
16
|
+
|
17
|
+
before do
|
18
|
+
allow(subject).to receive(:gateway).and_return(double('gateway'))
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'liability_shift check' do
|
22
|
+
|
23
|
+
before do
|
24
|
+
allow(subject).to receive(:gateway).and_return(double('gateway'))
|
25
|
+
|
26
|
+
|
27
|
+
# ensure other methods don't modify outcome
|
28
|
+
allow(subject).to receive(:validate_payment!)
|
29
|
+
allow(subject).to receive(:cancel_old_solidus_payments)
|
30
|
+
allow(payment).to receive(:create_solidus_payment!)
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when liability shift is required' do
|
34
|
+
context 'and liability shift is not granted' do
|
35
|
+
|
36
|
+
let(:payment) { create(:six_saferpay_payment, :authorized, :without_liability_shift) }
|
37
|
+
|
38
|
+
it 'cancels the payment' do
|
39
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be true
|
40
|
+
expect(payment.liability.liability_shift).to be false
|
41
|
+
|
42
|
+
expect(subject.gateway).to receive(:void).with(payment.transaction_id)
|
43
|
+
|
44
|
+
subject.call
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'indicates failure' do
|
48
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be true
|
49
|
+
expect(payment.liability.liability_shift).to be false
|
50
|
+
|
51
|
+
expect(subject.gateway).to receive(:void).with(payment.transaction_id)
|
52
|
+
|
53
|
+
subject.call
|
54
|
+
|
55
|
+
expect(subject).not_to be_success
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'and liability shift is granted' do
|
61
|
+
it "doesn't cancel the payment" do
|
62
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be true
|
63
|
+
expect(payment.liability.liability_shift).to be true
|
64
|
+
|
65
|
+
expect(subject.gateway).not_to receive(:void)
|
66
|
+
|
67
|
+
subject.call
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'passes the liability shift check' do
|
71
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be true
|
72
|
+
expect(payment.liability.liability_shift).to be true
|
73
|
+
|
74
|
+
subject.call
|
75
|
+
|
76
|
+
expect(subject).to be_success
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when liability shift is not required' do
|
82
|
+
let(:payment_method) { create(:saferpay_payment_method, :no_require_liability_shift) }
|
83
|
+
|
84
|
+
context 'and liability shift is not granted' do
|
85
|
+
let(:payment) { create(:six_saferpay_payment, :authorized, :without_liability_shift, payment_method: payment_method) }
|
86
|
+
|
87
|
+
it "doesn't cancel the payment" do
|
88
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be false
|
89
|
+
expect(payment.liability.liability_shift).to be false
|
90
|
+
|
91
|
+
expect(subject.gateway).not_to receive(:void)
|
92
|
+
|
93
|
+
subject.call
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'passes the liability shift check' do
|
97
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be false
|
98
|
+
expect(payment.liability.liability_shift).to be false
|
99
|
+
subject.call
|
100
|
+
|
101
|
+
expect(subject).to be_success
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'and liability shift is granted' do
|
106
|
+
let(:payment) { create(:six_saferpay_payment, :authorized, payment_method: payment_method) }
|
107
|
+
it "doesn't cancel the payment" do
|
108
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be false
|
109
|
+
expect(payment.liability.liability_shift).to be true
|
110
|
+
|
111
|
+
expect(subject.gateway).not_to receive(:void)
|
112
|
+
|
113
|
+
subject.call
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'passes the liability shift check' do
|
117
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be false
|
118
|
+
expect(payment.liability.liability_shift).to be true
|
119
|
+
subject.call
|
120
|
+
|
121
|
+
expect(subject).to be_success
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
context 'payment validation' do
|
128
|
+
before do
|
129
|
+
allow(subject).to receive(:gateway).and_return(double('gateway'))
|
130
|
+
|
131
|
+
|
132
|
+
# ensure other methods don't modify outcome
|
133
|
+
allow(subject).to receive(:check_liability_shift_requirements!)
|
134
|
+
allow(subject).to receive(:cancel_old_solidus_payments)
|
135
|
+
allow(payment).to receive(:create_solidus_payment!)
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'validates the payment' do
|
139
|
+
expect(PaymentValidator).to receive(:call).with(payment)
|
140
|
+
subject.call
|
141
|
+
end
|
142
|
+
|
143
|
+
context 'when the payment is invalid' do
|
144
|
+
it 'cancels the payment' do
|
145
|
+
expect(subject.gateway).to receive(:void).with(payment.transaction_id)
|
146
|
+
|
147
|
+
subject.call
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'indicates failure' do
|
151
|
+
allow(subject.gateway).to receive(:void).with(payment.transaction_id)
|
152
|
+
|
153
|
+
subject.call
|
154
|
+
|
155
|
+
expect(subject).not_to be_success
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'when the payment is valid' do
|
160
|
+
before do
|
161
|
+
allow(PaymentValidator).to receive(:call).with(payment).and_return(true)
|
162
|
+
end
|
163
|
+
|
164
|
+
it "doesn't cancel the payment" do
|
165
|
+
expect(subject.gateway).not_to receive(:void)
|
166
|
+
|
167
|
+
subject.call
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'indicates success' do
|
171
|
+
subject.call
|
172
|
+
|
173
|
+
expect(subject).to be_success
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
context 'when the payment has passed all validations' do
|
179
|
+
before do
|
180
|
+
allow(subject).to receive(:check_liability_shift_requirements!).and_return(true)
|
181
|
+
allow(subject).to receive(:validate_payment!).and_return(true)
|
182
|
+
end
|
183
|
+
|
184
|
+
context 'when previous solidus payments exist for this order' do
|
185
|
+
let(:order) { payment.order }
|
186
|
+
let!(:previous_payment_invalid) { create(:payment_using_saferpay, order: order) }
|
187
|
+
let!(:previous_payment_checkout) { create(:payment_using_saferpay, order: order) }
|
188
|
+
|
189
|
+
before do
|
190
|
+
# This is bad practice because we mock which payments are invalidated here.
|
191
|
+
# The reason is that you can't stub methods on AR objects that
|
192
|
+
# are loaded from the DB and because #solidus_payments_to_cancel
|
193
|
+
# is just AR scopes, I prefer this test over using stuff like
|
194
|
+
# #expect_any_instance_of
|
195
|
+
allow(subject).to receive(:solidus_payments_to_cancel).and_return([previous_payment_checkout])
|
196
|
+
end
|
197
|
+
|
198
|
+
it 'cancels old solidus payments' do
|
199
|
+
expect(previous_payment_invalid).not_to receive(:cancel!)
|
200
|
+
expect(previous_payment_checkout).to receive(:cancel!)
|
201
|
+
|
202
|
+
subject.call
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
it 'creates a new solidus payment' do
|
207
|
+
expect(payment).to receive(:create_solidus_payment!)
|
208
|
+
|
209
|
+
subject.call
|
210
|
+
end
|
211
|
+
|
212
|
+
it 'indicates success' do
|
213
|
+
allow(payment).to receive(:create_solidus_payment!)
|
214
|
+
|
215
|
+
subject.call
|
216
|
+
|
217
|
+
expect(subject).to be_success
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
end
|
222
|
+
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
@@ -0,0 +1,219 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module SolidusSixSaferpay
|
5
|
+
RSpec.describe ProcessTransactionPayment do
|
6
|
+
|
7
|
+
let(:payment) { create(:six_saferpay_payment, :authorized) }
|
8
|
+
|
9
|
+
subject { described_class.new(payment) }
|
10
|
+
|
11
|
+
describe '#gateway' do
|
12
|
+
it_behaves_like "it uses the transaction gateway"
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#call' do
|
16
|
+
context 'liability_shift check' do
|
17
|
+
|
18
|
+
before do
|
19
|
+
allow(subject).to receive(:gateway).and_return(double('gateway'))
|
20
|
+
|
21
|
+
|
22
|
+
# ensure other methods don't modify outcome
|
23
|
+
allow(subject).to receive(:validate_payment!)
|
24
|
+
allow(subject).to receive(:cancel_old_solidus_payments)
|
25
|
+
allow(payment).to receive(:create_solidus_payment!)
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when liability shift is required' do
|
29
|
+
context 'and liability shift is not granted' do
|
30
|
+
|
31
|
+
let(:payment) { create(:six_saferpay_payment, :authorized, :without_liability_shift) }
|
32
|
+
|
33
|
+
it 'cancels the payment' do
|
34
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be true
|
35
|
+
expect(payment.liability.liability_shift).to be false
|
36
|
+
|
37
|
+
expect(subject.gateway).to receive(:void).with(payment.transaction_id)
|
38
|
+
|
39
|
+
subject.call
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'indicates failure' do
|
43
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be true
|
44
|
+
expect(payment.liability.liability_shift).to be false
|
45
|
+
|
46
|
+
expect(subject.gateway).to receive(:void).with(payment.transaction_id)
|
47
|
+
|
48
|
+
subject.call
|
49
|
+
|
50
|
+
expect(subject).not_to be_success
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'and liability shift is granted' do
|
56
|
+
it "doesn't cancel the payment" do
|
57
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be true
|
58
|
+
expect(payment.liability.liability_shift).to be true
|
59
|
+
|
60
|
+
expect(subject.gateway).not_to receive(:void)
|
61
|
+
|
62
|
+
subject.call
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'passes the liability shift check' do
|
66
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be true
|
67
|
+
expect(payment.liability.liability_shift).to be true
|
68
|
+
|
69
|
+
subject.call
|
70
|
+
|
71
|
+
expect(subject).to be_success
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context 'when liability shift is not required' do
|
77
|
+
let(:payment_method) { create(:saferpay_payment_method, :no_require_liability_shift) }
|
78
|
+
|
79
|
+
context 'and liability shift is not granted' do
|
80
|
+
let(:payment) { create(:six_saferpay_payment, :authorized, :without_liability_shift, payment_method: payment_method) }
|
81
|
+
|
82
|
+
it "doesn't cancel the payment" do
|
83
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be false
|
84
|
+
expect(payment.liability.liability_shift).to be false
|
85
|
+
|
86
|
+
expect(subject.gateway).not_to receive(:void)
|
87
|
+
|
88
|
+
subject.call
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'passes the liability shift check' do
|
92
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be false
|
93
|
+
expect(payment.liability.liability_shift).to be false
|
94
|
+
subject.call
|
95
|
+
|
96
|
+
expect(subject).to be_success
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'and liability shift is granted' do
|
101
|
+
let(:payment) { create(:six_saferpay_payment, :authorized, payment_method: payment_method) }
|
102
|
+
it "doesn't cancel the payment" do
|
103
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be false
|
104
|
+
expect(payment.liability.liability_shift).to be true
|
105
|
+
|
106
|
+
expect(subject.gateway).not_to receive(:void)
|
107
|
+
|
108
|
+
subject.call
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'passes the liability shift check' do
|
112
|
+
expect(payment.payment_method.preferred_require_liability_shift).to be false
|
113
|
+
expect(payment.liability.liability_shift).to be true
|
114
|
+
subject.call
|
115
|
+
|
116
|
+
expect(subject).to be_success
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'payment validation' do
|
123
|
+
before do
|
124
|
+
allow(subject).to receive(:gateway).and_return(double('gateway'))
|
125
|
+
|
126
|
+
|
127
|
+
# ensure other methods don't modify outcome
|
128
|
+
allow(subject).to receive(:check_liability_shift_requirements!)
|
129
|
+
allow(subject).to receive(:cancel_old_solidus_payments)
|
130
|
+
allow(payment).to receive(:create_solidus_payment!)
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'validates the payment' do
|
134
|
+
expect(PaymentValidator).to receive(:call).with(payment)
|
135
|
+
subject.call
|
136
|
+
end
|
137
|
+
|
138
|
+
context 'when the payment is invalid' do
|
139
|
+
it 'cancels the payment' do
|
140
|
+
expect(subject.gateway).to receive(:void).with(payment.transaction_id)
|
141
|
+
|
142
|
+
subject.call
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'indicates failure' do
|
146
|
+
allow(subject.gateway).to receive(:void).with(payment.transaction_id)
|
147
|
+
|
148
|
+
subject.call
|
149
|
+
|
150
|
+
expect(subject).not_to be_success
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
context 'when the payment is valid' do
|
155
|
+
before do
|
156
|
+
allow(PaymentValidator).to receive(:call).with(payment).and_return(true)
|
157
|
+
end
|
158
|
+
|
159
|
+
it "doesn't cancel the payment" do
|
160
|
+
expect(subject.gateway).not_to receive(:void)
|
161
|
+
|
162
|
+
subject.call
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'indicates success' do
|
166
|
+
subject.call
|
167
|
+
|
168
|
+
expect(subject).to be_success
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
context 'when the payment has passed all validations' do
|
174
|
+
before do
|
175
|
+
allow(subject).to receive(:check_liability_shift_requirements!).and_return(true)
|
176
|
+
allow(subject).to receive(:validate_payment!).and_return(true)
|
177
|
+
end
|
178
|
+
|
179
|
+
context 'when previous solidus payments exist for this order' do
|
180
|
+
let(:order) { payment.order }
|
181
|
+
let!(:previous_payment_invalid) { create(:payment_using_saferpay, order: order) }
|
182
|
+
let!(:previous_payment_checkout) { create(:payment_using_saferpay, order: order) }
|
183
|
+
|
184
|
+
before do
|
185
|
+
# This is bad practice because we mock which payments are invalidated here.
|
186
|
+
# The reason is that you can't stub methods on AR objects that
|
187
|
+
# are loaded from the DB and because #solidus_payments_to_cancel
|
188
|
+
# is just AR scopes, I prefer this test over using stuff like
|
189
|
+
# #expect_any_instance_of
|
190
|
+
allow(subject).to receive(:solidus_payments_to_cancel).and_return([previous_payment_checkout])
|
191
|
+
end
|
192
|
+
|
193
|
+
it 'cancels old solidus payments' do
|
194
|
+
expect(previous_payment_invalid).not_to receive(:cancel!)
|
195
|
+
expect(previous_payment_checkout).to receive(:cancel!)
|
196
|
+
|
197
|
+
subject.call
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'creates a new solidus payment' do
|
202
|
+
expect(payment).to receive(:create_solidus_payment!)
|
203
|
+
|
204
|
+
subject.call
|
205
|
+
end
|
206
|
+
|
207
|
+
it 'indicates success' do
|
208
|
+
allow(payment).to receive(:create_solidus_payment!)
|
209
|
+
|
210
|
+
subject.call
|
211
|
+
|
212
|
+
expect(subject).to be_success
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|