solidus_core 2.2.1 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c15f057db7ca6d5b45b75260b8591056bcea8aee
4
- data.tar.gz: 49d2fc2856a7ab0c719109fb492f7aea075acec3
3
+ metadata.gz: 2a2dec32c7e551a4cccda16f58059e05cbb507ea
4
+ data.tar.gz: 0f1687d7691c96cb0a0aae2b13cc53c1e4f90692
5
5
  SHA512:
6
- metadata.gz: b393535300c7c584403f87b3ee50b25210964f3a3e2540c2de6bf389f0219dcb8c9b43285585119225b9259eb84d4019e28f127e55507b4423268d0acdba32ab
7
- data.tar.gz: aba6c7013b288673bcb66db07ba5c8a3c02799d3ba4f5003ccd1b350c5a848613242c0ae5a38d48d6bba3ecff292f16f4863af8bfc08548df1110e0cc5361516
6
+ metadata.gz: 9215d5df94bc2bb98df3f74e33b670af7fa9a7f00edec4ee4367e9f28da1d386cde1982f3f770c6eba3676e29253dd7c3b1c2c2d1640dec5fd6fd9a4eff31242
7
+ data.tar.gz: d2b86bb28e9673ddf3f32d98a67d274bf580f057f812e662d4c4f43e7f9cb6cd67dbe0628d58fc839e78ba15636f8528c4b416caeeece6dd5ca98a9046e677e6
@@ -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
 
@@ -40,6 +40,7 @@ module Spree
40
40
 
41
41
  validates :amount, numericality: true
42
42
  validates :source, presence: true, if: :source_required?
43
+ validates :payment_method, presence: true
43
44
 
44
45
  default_scope -> { order(:created_at) }
45
46
 
@@ -1,6 +1,6 @@
1
1
  module Spree
2
2
  def self.solidus_version
3
- "2.2.1"
3
+ "2.2.2"
4
4
  end
5
5
 
6
6
  def self.solidus_gem_version
@@ -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
- { source_attributes: attributes_for(:credit_card) }
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.promotion_rules).to receive(:for).and_return(promotion.promotion_rules)
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.promotion_rules).to receive(:for).and_return(promotion.promotion_rules)
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.promotion_rules).to receive(:for).and_return(promotion.promotion_rules)
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.1
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-05-09 00:00:00.000000000 Z
11
+ date: 2017-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant