spree_core 4.4.0.rc2 → 4.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6068db45525230da41ca606788cebd91ab374323e4e74497da8be61f0078d708
4
- data.tar.gz: 0d2d9dd7d2f9e100e410a71704e231f97e4be1fe7ada6f468ceb783d9780bcac
3
+ metadata.gz: c6f1530fed2a687bd1eb187fbc25fc58fcd257d498f9e9f641291f99991f0e46
4
+ data.tar.gz: fd670b73289d5515e3e27dd5f80451f3c866865ea278cfb8e8d9b43d3c650a46
5
5
  SHA512:
6
- metadata.gz: db2b58e61632b424a69e058b882daef3713d05d39bd49d818432a3028eab14d8ee4817fa8ca94633b71c287cca77ef9b2ad40c959d34a1e978da5be1b0ad6a37
7
- data.tar.gz: '08cc33ae6f5f6e8917d94b26831342bf9e7cc1db94db85923d1d01fd1c06ed323b983d64d90725697c42f938a952a0127799cf98b06937b74cb9416171dee0f6'
6
+ metadata.gz: d83b92fbf213054613dd642a968a6958c6a54dcdd4177c54385b3a82bf567de92cc5d0c21a18deda0768dfeafb2b955fcf508c1392ded7071e7c499c29afcb73
7
+ data.tar.gz: c4e3da90f798233259263b922a5ac32999d4e34c46a64b0731e316c5eada252b18bce0c53cc4651e977b3984aa343ef80570cdbf96378600f362d23d3bc2b320
@@ -3,8 +3,21 @@ module Spree
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- store :public_metadata, coder: JSON
7
- store :private_metadata, coder: JSON
6
+ attribute :public_metadata, default: {} if Rails.version.to_f >= 6.1
7
+ attribute :private_metadata, default: {} if Rails.version.to_f >= 6.1
8
+ serialize :public_metadata, HashSerializer
9
+ serialize :private_metadata, HashSerializer
10
+ end
11
+
12
+ # https://nandovieira.com/using-postgresql-and-jsonb-with-ruby-on-rails
13
+ class HashSerializer
14
+ def self.dump(hash)
15
+ hash
16
+ end
17
+
18
+ def self.load(hash)
19
+ (hash || {}).with_indifferent_access
20
+ end
8
21
  end
9
22
  end
10
23
  end
@@ -92,7 +92,7 @@ module Spree
92
92
  end
93
93
 
94
94
  def get_desired_shipment_inventory_unit(state)
95
- desired_shipment.inventory_units.find_or_create_by(state: state) do |unit|
95
+ desired_shipment.inventory_units.find_or_create_by(state: state, variant: variant) do |unit|
96
96
  current_shipment_unit = current_shipment_units.first
97
97
  unit.variant_id = current_shipment_unit.variant_id
98
98
  unit.order_id = current_shipment_unit.order_id
@@ -1,6 +1,14 @@
1
1
  module Spree
2
2
  class Order < Spree::Base
3
3
  module StoreCredit
4
+ def add_store_credit_payments(amount = nil)
5
+ Spree::Dependencies.checkout_add_store_credit_service.constantize.call(order: self, amount: amount)
6
+ end
7
+
8
+ def remove_store_credit_payments
9
+ Spree::Dependencies.checkout_remove_store_credit_service.constantize.call(order: self)
10
+ end
11
+
4
12
  def covered_by_store_credit?
5
13
  return false unless user
6
14
 
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ class OrderContents
3
+ attr_accessor :order, :currency
4
+
5
+ def initialize(order)
6
+ @order = order
7
+ end
8
+
9
+ def add(variant, quantity = 1, options = {})
10
+ Spree::Dependencies.cart_add_item_service.constantize.call(order: order,
11
+ variant: variant,
12
+ quantity: quantity,
13
+ options: options).value
14
+ end
15
+
16
+ def remove(variant, quantity = 1, options = {})
17
+ Spree::Dependencies.cart_remove_item_service.constantize.call(order: order,
18
+ variant: variant,
19
+ quantity: quantity,
20
+ options: options).value
21
+ end
22
+
23
+ def remove_line_item(line_item, options = {})
24
+ Spree::Cart::RemoveLineItem.call(order: @order, line_item: line_item, options: options).value
25
+ end
26
+
27
+ def update_cart(params)
28
+ Spree::Dependencies.cart_update_service.constantize.call(order: order, params: params).value
29
+ end
30
+ end
31
+ end
@@ -19,6 +19,8 @@ module Spree::Preferences
19
19
  value = convert_preference_value(value, type)
20
20
  preferences[name] = value
21
21
 
22
+ ActiveSupport::Deprecation.warn("`#{name}` is deprecated. #{deprecated}") if deprecated
23
+
22
24
  # If this is an activerecord object, we need to inform
23
25
  # ActiveRecord::Dirty that this value has changed, since this is an
24
26
  # in-place update to the preferences hash.
@@ -134,13 +134,6 @@ module Spree
134
134
  Migrations.new(config, engine_name).check
135
135
  end
136
136
 
137
- initializer 'spree.core.checking_deprecated_preferences' do
138
- Spree::Config.deprecated_preferences.each do |pref|
139
- # FIXME: we should only notify about deprecated preferences that are in use, not all of them
140
- # warn "[DEPRECATION] Spree::Config[:#{pref[:name]}] is deprecated. #{pref[:message]}"
141
- end
142
- end
143
-
144
137
  config.to_prepare do
145
138
  # Ensure spree locale paths are present before decorators
146
139
  I18n.load_path.unshift(*(Dir.glob(
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- VERSION = '4.4.0.rc2'.freeze
2
+ VERSION = '4.4.1'.freeze
3
3
 
4
4
  def self.version
5
5
  VERSION
@@ -4,10 +4,13 @@ shared_examples_for 'metadata' do |factory: described_class.name.demodulize.unde
4
4
  it { expect(subject.has_attribute?(:public_metadata)).to be_truthy }
5
5
  it { expect(subject.has_attribute?(:private_metadata)).to be_truthy }
6
6
 
7
- it { expect(subject.public_metadata.class).to eq(HashWithIndifferentAccess) }
8
- it { expect(subject.private_metadata.class).to eq(HashWithIndifferentAccess) }
7
+ it { expect(subject.public_metadata).to eq({}) }
8
+ it { expect(subject.private_metadata).to eq({}) }
9
9
 
10
- it do
10
+ it { expect(subject.public_metadata.class).to eq(ActiveSupport::HashWithIndifferentAccess) }
11
+ it { expect(subject.private_metadata.class).to eq(ActiveSupport::HashWithIndifferentAccess) }
12
+
13
+ it 'reads data as symbolized keys' do
11
14
  string = subject.public_metadata[:color] = 'red'
12
15
  number = subject.public_metadata[:priority] = 1
13
16
  array = subject.public_metadata[:keywords] = ['k1', 'k2']
@@ -20,4 +23,32 @@ shared_examples_for 'metadata' do |factory: described_class.name.demodulize.unde
20
23
  expect(subject.public_metadata[:keywords]).to eq(array)
21
24
  expect(subject.public_metadata[:additional_data]).to eq(hash.stringify_keys)
22
25
  end
26
+
27
+ it 'reads data as not symbolized keys' do
28
+ string = subject.public_metadata[:color] = 'red'
29
+ number = subject.public_metadata[:priority] = 1
30
+ array = subject.public_metadata[:keywords] = ['k1', 'k2']
31
+ hash = subject.public_metadata[:additional_data] = { size: 'big', material: 'wool' }
32
+
33
+ subject.save!
34
+
35
+ expect(subject.public_metadata['color']).to eq(string)
36
+ expect(subject.public_metadata['priority']).to eq(number)
37
+ expect(subject.public_metadata['keywords']).to eq(array)
38
+ expect(subject.public_metadata['additional_data']).to eq(hash.stringify_keys)
39
+ end
40
+
41
+ it 'can query records by metadata properties', skip: ENV['DB'] == 'mysql' do
42
+ subject.public_metadata[:color] = 'red'
43
+ subject.public_metadata[:priority] = 1
44
+ subject.public_metadata[:keywords] = ['k1', 'k2']
45
+ subject.public_metadata[:additional_data] = { size: 'big', material: 'wool' }
46
+
47
+ subject.save!
48
+
49
+ expect(described_class.where("public_metadata->>'color' = ?", 'red').count).to eq(1)
50
+ expect(described_class.where("public_metadata->>'priority' = ?", '1').count).to eq(1)
51
+ expect(described_class.where("public_metadata -> 'keywords' ? :keyword", keyword: 'k1').count).to eq(1)
52
+ expect(described_class.where("public_metadata -> 'additional_data' ->> 'size' = :size", size: 'big').count).to eq(1)
53
+ end
23
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.0.rc2
4
+ version: 4.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-01-10 00:00:00.000000000 Z
12
+ date: 2024-04-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -583,6 +583,7 @@ files:
583
583
  - app/models/spree/order/emails.rb
584
584
  - app/models/spree/order/payments.rb
585
585
  - app/models/spree/order/store_credit.rb
586
+ - app/models/spree/order_contents.rb
586
587
  - app/models/spree/order_inventory.rb
587
588
  - app/models/spree/order_merger.rb
588
589
  - app/models/spree/order_promotion.rb
@@ -977,9 +978,9 @@ licenses:
977
978
  - BSD-3-Clause
978
979
  metadata:
979
980
  bug_tracker_uri: https://github.com/spree/spree/issues
980
- changelog_uri: https://github.com/spree/spree/releases/tag/v4.4.0.rc2
981
+ changelog_uri: https://github.com/spree/spree/releases/tag/v4.4.1
981
982
  documentation_uri: https://dev-docs.spreecommerce.org/
982
- source_code_uri: https://github.com/spree/spree/tree/v4.4.0.rc2
983
+ source_code_uri: https://github.com/spree/spree/tree/v4.4.1
983
984
  post_install_message:
984
985
  rdoc_options: []
985
986
  require_paths:
@@ -995,7 +996,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
995
996
  - !ruby/object:Gem::Version
996
997
  version: 1.8.23
997
998
  requirements: []
998
- rubygems_version: 3.2.32
999
+ rubygems_version: 3.5.3
999
1000
  signing_key:
1000
1001
  specification_version: 4
1001
1002
  summary: The bare bones necessary for Spree