solidus_core 1.0.6 → 1.0.7

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: 50e5898dc946c19fdd9dfc74674730b057219431
4
- data.tar.gz: 7606f127138f5d815365d4661b5702ecb946dbd6
3
+ metadata.gz: d38685bcc1d7ee47ba79564d398c99a21dd0d480
4
+ data.tar.gz: 7397b8dc2aa601f44baef214fd09939ed87d5d1d
5
5
  SHA512:
6
- metadata.gz: 8d480acc5bef662c656ac8b17f2c98ad5da06bc8fa7f7271e8d74a4cee58c5e9019dc0fdd80f748d347517a3f3dce35abaaf3f0ee1cea36250bdb30b7c337e5a
7
- data.tar.gz: 16335b527176fcb0fd09a3d112d06ac5379540d34a55cfbb6698dc39615ab2ad2248ef12ee954d63cfe4f72904feca67a87ab760b87cf962eefe92a23af39300
6
+ metadata.gz: 59cad15903b2db9b9168b62aae5da114d58bf2550abdd21f1bf583f32d60430eb4f373289bf7301013b0dd7ccb75039c10118daed54a134816e833c25858bf67
7
+ data.tar.gz: 180d7e3848e58b98e1e17e7ffaa29b8339f915f07cd1f8f06c57c9859526015c068cd7eb96c66d708625a91d77d0dffcc6fdfe5352bce99ed90bf8938cd6c0e7
@@ -713,6 +713,23 @@ module Spree
713
713
  Spree::Money.new(total_available_store_credit - total_applicable_store_credit, { currency: currency })
714
714
  end
715
715
 
716
+ def payments_attributes=(attributes)
717
+ validate_payments_attributes(attributes)
718
+ super(attributes)
719
+ end
720
+
721
+ def validate_payments_attributes(attributes)
722
+ attributes = Array.wrap(attributes)
723
+ # Ensure the payment methods specified are allowed for this user
724
+ payment_methods = Spree::PaymentMethod.where(id: available_payment_methods)
725
+ attributes.each do |payment_attributes|
726
+ payment_method_id = payment_attributes[:payment_method_id]
727
+
728
+ # raise RecordNotFound unless it is an allowed payment method
729
+ payment_methods.find(payment_method_id) if payment_method_id
730
+ end
731
+ end
732
+
716
733
  private
717
734
 
718
735
  def link_by_email
@@ -35,6 +35,7 @@ module Spree
35
35
 
36
36
  validates :amount, numericality: true
37
37
  validates :source, presence: true, if: :source_required?
38
+ validates :payment_method, presence: true
38
39
 
39
40
  default_scope -> { order("#{self.table_name}.created_at") }
40
41
 
@@ -126,7 +126,7 @@ end
126
126
  core_gems = ["spree/core", "spree/api", "spree/backend", "spree/frontend"]
127
127
 
128
128
  if core_gems.include?(lib_name)
129
- '../../../../../Gemfile'
129
+ '../../../../Gemfile'
130
130
  else
131
131
  '../../../../Gemfile'
132
132
  end
@@ -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, display_on: "back_end") }
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
@@ -618,12 +618,13 @@ describe Spree::Payment, :type => :model do
618
618
  end
619
619
 
620
620
  context "completed orders" do
621
+ let(:payment_method) { create(:check_payment_method) }
621
622
  before { allow(order).to receive_messages completed?: true }
622
623
 
623
624
  it "updates payment_state and shipments" do
624
625
  expect(order.updater).to receive(:update_payment_state)
625
626
  expect(order.updater).to receive(:update_shipment_state)
626
- Spree::Payment.create(:amount => 100, :order => order)
627
+ Spree::Payment.create!(amount: 100, order: order, payment_method: payment_method)
627
628
  end
628
629
  end
629
630
 
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: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-23 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
@@ -1250,7 +1250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1250
1250
  version: '0'
1251
1251
  requirements: []
1252
1252
  rubyforge_project:
1253
- rubygems_version: 2.5.1
1253
+ rubygems_version: 2.6.11
1254
1254
  signing_key:
1255
1255
  specification_version: 4
1256
1256
  summary: Essential models, mailers, and classes for the Solidus e-commerce project.