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 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