solidus_core 2.2.1 → 2.2.2
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.
Potentially problematic release.
This version of solidus_core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/models/spree/order.rb +17 -0
- data/app/models/spree/order_update_attributes.rb +2 -0
- data/app/models/spree/payment.rb +1 -0
- data/lib/spree/core/version.rb +1 -1
- data/spec/models/spree/order_spec.rb +52 -0
- data/spec/models/spree/order_update_attributes_spec.rb +5 -1
- data/spec/models/spree/payment_spec.rb +5 -3
- data/spec/models/spree/promotion_spec.rb +6 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a2dec32c7e551a4cccda16f58059e05cbb507ea
|
4
|
+
data.tar.gz: 0f1687d7691c96cb0a0aae2b13cc53c1e4f90692
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9215d5df94bc2bb98df3f74e33b670af7fa9a7f00edec4ee4367e9f28da1d386cde1982f3f770c6eba3676e29253dd7c3b1c2c2d1640dec5fd6fd9a4eff31242
|
7
|
+
data.tar.gz: d2b86bb28e9673ddf3f32d98a67d274bf580f057f812e662d4c4f43e7f9cb6cd67dbe0628d58fc839e78ba15636f8528c4b416caeeece6dd5ca98a9046e677e6
|
data/app/models/spree/order.rb
CHANGED
@@ -736,6 +736,23 @@ module Spree
|
|
736
736
|
alias_method :assign_default_credit_card, :add_default_payment_from_wallet
|
737
737
|
deprecate assign_default_credit_card: :add_default_payment_from_wallet, deprecator: Spree::Deprecation
|
738
738
|
|
739
|
+
def payments_attributes=(attributes)
|
740
|
+
validate_payments_attributes(attributes)
|
741
|
+
super(attributes)
|
742
|
+
end
|
743
|
+
|
744
|
+
def validate_payments_attributes(attributes)
|
745
|
+
attributes = Array.wrap(attributes)
|
746
|
+
# Ensure the payment methods specified are allowed for this user
|
747
|
+
payment_methods = Spree::PaymentMethod.where(id: available_payment_methods)
|
748
|
+
attributes.each do |payment_attributes|
|
749
|
+
payment_method_id = payment_attributes[:payment_method_id]
|
750
|
+
|
751
|
+
# raise RecordNotFound unless it is an allowed payment method
|
752
|
+
payment_methods.find(payment_method_id) if payment_method_id
|
753
|
+
end
|
754
|
+
end
|
755
|
+
|
739
756
|
private
|
740
757
|
|
741
758
|
def process_payments_before_complete
|
@@ -14,6 +14,8 @@ module Spree
|
|
14
14
|
# Assign the attributes to the order and save the order
|
15
15
|
# @return true if saved, otherwise false and errors will be set on the order
|
16
16
|
def apply
|
17
|
+
order.validate_payments_attributes(@payments_attributes)
|
18
|
+
|
17
19
|
assign_order_attributes
|
18
20
|
assign_payments_attributes
|
19
21
|
|
data/app/models/spree/payment.rb
CHANGED
data/lib/spree/core/version.rb
CHANGED
@@ -1409,4 +1409,56 @@ describe Spree::Order, type: :model do
|
|
1409
1409
|
end
|
1410
1410
|
end
|
1411
1411
|
end
|
1412
|
+
|
1413
|
+
describe "#validate_payments_attributes" do
|
1414
|
+
let(:attributes) { [ActionController::Parameters.new(payment_method_id: payment_method.id)] }
|
1415
|
+
subject do
|
1416
|
+
order.validate_payments_attributes(attributes)
|
1417
|
+
end
|
1418
|
+
|
1419
|
+
context "with empty array" do
|
1420
|
+
let(:attributes) { [] }
|
1421
|
+
it "doesn't error" do
|
1422
|
+
subject
|
1423
|
+
end
|
1424
|
+
end
|
1425
|
+
|
1426
|
+
context "with no payment method specified" do
|
1427
|
+
let(:attributes) { [ActionController::Parameters.new({})] }
|
1428
|
+
it "doesn't error" do
|
1429
|
+
subject
|
1430
|
+
end
|
1431
|
+
end
|
1432
|
+
|
1433
|
+
context "with valid payment method" do
|
1434
|
+
let(:payment_method) { create(:check_payment_method) }
|
1435
|
+
it "doesn't error" do
|
1436
|
+
subject
|
1437
|
+
end
|
1438
|
+
end
|
1439
|
+
|
1440
|
+
context "with inactive payment method" do
|
1441
|
+
let(:payment_method) { create(:check_payment_method, active: false) }
|
1442
|
+
|
1443
|
+
it "raises RecordNotFound" do
|
1444
|
+
expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
|
1445
|
+
end
|
1446
|
+
end
|
1447
|
+
|
1448
|
+
context "with unavailable payment method" do
|
1449
|
+
let(:payment_method) { create(:check_payment_method, available_to_users: false) }
|
1450
|
+
|
1451
|
+
it "raises RecordNotFound" do
|
1452
|
+
expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
|
1453
|
+
end
|
1454
|
+
end
|
1455
|
+
|
1456
|
+
context "with soft-deleted payment method" do
|
1457
|
+
let(:payment_method) { create(:check_payment_method, deleted_at: Time.current) }
|
1458
|
+
|
1459
|
+
it "raises RecordNotFound" do
|
1460
|
+
expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
|
1461
|
+
end
|
1462
|
+
end
|
1463
|
+
end
|
1412
1464
|
end
|
@@ -3,6 +3,7 @@ require 'spec_helper'
|
|
3
3
|
module Spree
|
4
4
|
RSpec.describe OrderUpdateAttributes do
|
5
5
|
let(:order) { create(:order) }
|
6
|
+
let(:payment_method) { create(:payment_method) }
|
6
7
|
let(:request_env) { nil }
|
7
8
|
let(:update) { described_class.new(order, attributes, request_env: request_env) }
|
8
9
|
|
@@ -25,7 +26,10 @@ module Spree
|
|
25
26
|
let(:attributes) do
|
26
27
|
{
|
27
28
|
payments_attributes: [
|
28
|
-
{
|
29
|
+
{
|
30
|
+
payment_method_id: payment_method.id,
|
31
|
+
source_attributes: attributes_for(:credit_card)
|
32
|
+
}
|
29
33
|
]
|
30
34
|
}
|
31
35
|
end
|
@@ -653,12 +653,13 @@ describe Spree::Payment, type: :model do
|
|
653
653
|
end
|
654
654
|
|
655
655
|
context "completed orders" do
|
656
|
+
let(:payment_method) { create(:check_payment_method) }
|
656
657
|
before { allow(order).to receive_messages completed?: true }
|
657
658
|
|
658
659
|
it "updates payment_state and shipments" do
|
659
660
|
expect(order.updater).to receive(:update_payment_state)
|
660
661
|
expect(order.updater).to receive(:update_shipment_state)
|
661
|
-
Spree::Payment.create(amount: 100, order: order)
|
662
|
+
Spree::Payment.create!(amount: 100, order: order, payment_method: payment_method)
|
662
663
|
end
|
663
664
|
end
|
664
665
|
|
@@ -742,12 +743,13 @@ describe Spree::Payment, type: :model do
|
|
742
743
|
end
|
743
744
|
|
744
745
|
describe "invalidating payments updates in memory objects" do
|
746
|
+
let(:payment_method) { create(:check_payment_method) }
|
745
747
|
before do
|
746
|
-
Spree::PaymentCreate.new(order, amount: 1).build.save!
|
748
|
+
Spree::PaymentCreate.new(order, amount: 1, payment_method_id: payment_method.id).build.save!
|
747
749
|
expect(order.payments.map(&:state)).to contain_exactly(
|
748
750
|
'checkout'
|
749
751
|
)
|
750
|
-
Spree::PaymentCreate.new(order, amount: 2).build.save!
|
752
|
+
Spree::PaymentCreate.new(order, amount: 2, payment_method_id: payment_method.id).build.save!
|
751
753
|
end
|
752
754
|
|
753
755
|
it 'should not have stale payments' do
|
@@ -597,7 +597,8 @@ describe Spree::Promotion, type: :model do
|
|
597
597
|
allow(rule2).to receive_messages(eligible?: true, applicable?: true)
|
598
598
|
|
599
599
|
promotion.promotion_rules = [rule1, rule2]
|
600
|
-
allow(promotion
|
600
|
+
allow(promotion).to receive_message_chain(:rules, :none?).and_return(false)
|
601
|
+
allow(promotion).to receive_message_chain(:rules, :for).and_return(promotion.promotion_rules)
|
601
602
|
end
|
602
603
|
it "returns the eligible rules" do
|
603
604
|
expect(promotion.eligible_rules(promotable)).to eq [rule1, rule2]
|
@@ -615,7 +616,8 @@ describe Spree::Promotion, type: :model do
|
|
615
616
|
allow(rule2).to receive_messages(eligible?: false, applicable?: true, eligibility_errors: errors)
|
616
617
|
|
617
618
|
promotion.promotion_rules = [rule1, rule2]
|
618
|
-
allow(promotion
|
619
|
+
allow(promotion).to receive_message_chain(:rules, :none?).and_return(false)
|
620
|
+
allow(promotion).to receive_message_chain(:rules, :for).and_return(promotion.promotion_rules)
|
619
621
|
end
|
620
622
|
it "returns nil" do
|
621
623
|
expect(promotion.eligible_rules(promotable)).to be_nil
|
@@ -647,7 +649,8 @@ describe Spree::Promotion, type: :model do
|
|
647
649
|
allow(rule).to receive_messages(eligible?: false, applicable?: true, eligibility_errors: errors)
|
648
650
|
|
649
651
|
promotion.promotion_rules = [rule]
|
650
|
-
allow(promotion
|
652
|
+
allow(promotion).to receive_message_chain(:rules, :for).and_return(promotion.promotion_rules)
|
653
|
+
allow(promotion).to receive_message_chain(:rules, :none?).and_return(false)
|
651
654
|
end
|
652
655
|
it "returns nil" do
|
653
656
|
expect(promotion.eligible_rules(promotable)).to be_nil
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Solidus Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemerchant
|