solidus_core 4.5.1 → 4.6.0

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.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/jobs/spree/base_job.rb +12 -0
  4. data/app/jobs/spree/state_change_tracking_job.rb +32 -0
  5. data/app/models/concerns/spree/state_change_tracking.rb +26 -0
  6. data/app/models/concerns/spree/user_address_book.rb +24 -6
  7. data/app/models/concerns/spree/user_methods.rb +52 -14
  8. data/app/models/concerns/spree/user_reporting.rb +1 -1
  9. data/app/models/spree/address.rb +8 -2
  10. data/app/models/spree/adjustment_reason.rb +1 -1
  11. data/app/models/spree/calculator.rb +0 -2
  12. data/app/models/spree/carton.rb +7 -0
  13. data/app/models/spree/classification.rb +3 -3
  14. data/app/models/spree/core/state_machines/order/class_methods.rb +0 -16
  15. data/app/models/spree/core/state_machines/order.rb +1 -0
  16. data/app/models/spree/core/state_machines/payment.rb +1 -8
  17. data/app/models/spree/core/state_machines/shipment.rb +1 -8
  18. data/app/models/spree/country.rb +16 -5
  19. data/app/models/spree/customer_return.rb +1 -2
  20. data/app/models/spree/fulfilment_changer.rb +38 -11
  21. data/app/models/spree/inventory_unit.rb +1 -1
  22. data/app/models/spree/line_item.rb +3 -2
  23. data/app/models/spree/order.rb +5 -7
  24. data/app/models/spree/order_cancellations.rb +17 -20
  25. data/app/models/spree/order_shipping.rb +2 -9
  26. data/app/models/spree/order_taxation.rb +3 -2
  27. data/app/models/spree/order_updater.rb +11 -7
  28. data/app/models/spree/payment_method.rb +0 -1
  29. data/app/models/spree/product.rb +6 -5
  30. data/app/models/spree/product_option_type.rb +2 -2
  31. data/app/models/spree/product_property.rb +2 -2
  32. data/app/models/spree/role_user.rb +3 -3
  33. data/app/models/spree/shipment.rb +26 -12
  34. data/app/models/spree/shipping_category.rb +2 -2
  35. data/app/models/spree/shipping_method_category.rb +2 -2
  36. data/app/models/spree/state.rb +7 -4
  37. data/app/models/spree/stock/quantifier.rb +33 -9
  38. data/app/models/spree/stock_item.rb +1 -1
  39. data/app/models/spree/stock_location.rb +3 -2
  40. data/app/models/spree/store.rb +6 -0
  41. data/app/models/spree/store_credit.rb +3 -3
  42. data/app/models/spree/store_credit_event.rb +1 -1
  43. data/app/models/spree/tax_category.rb +1 -1
  44. data/app/models/spree/taxon.rb +0 -3
  45. data/app/models/spree/taxonomy.rb +2 -2
  46. data/app/models/spree/user_address.rb +4 -4
  47. data/app/models/spree/variant.rb +1 -1
  48. data/app/models/spree/variant_property_rule.rb +1 -1
  49. data/app/models/spree/variant_property_rule_condition.rb +1 -1
  50. data/app/models/spree/wallet_payment_source.rb +2 -2
  51. data/app/subscribers/spree/carton_shipped_mailer_subscriber.rb +30 -0
  52. data/app/subscribers/spree/order_cancel_mailer_subscriber.rb +21 -0
  53. data/app/subscribers/spree/order_confirmation_mailer_subscriber.rb +23 -0
  54. data/app/subscribers/spree/order_inventory_cancellation_mailer_subscriber.rb +27 -0
  55. data/app/subscribers/spree/order_mailer_subscriber.rb +8 -26
  56. data/app/subscribers/spree/reimbursement_mailer_subscriber.rb +20 -0
  57. data/config/locales/en.yml +9 -0
  58. data/db/migrate/20160101010000_solidus_one_four.rb +92 -0
  59. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +1 -1
  60. data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +1 -1
  61. data/db/migrate/20250214094207_add_reverse_charge_status_to_store.rb +8 -0
  62. data/db/migrate/20250225051308_add_vat_id_email_and_reverse_charge_status_to_addresses.rb +10 -0
  63. data/db/migrate/20250508145917_add_email_to_stock_locations.rb +5 -0
  64. data/db/migrate/20250530102541_add_addressbook_foreign_key.rb +29 -0
  65. data/db/migrate/20250604072105_add_fk_products_variant_property_rules.rb +30 -0
  66. data/db/migrate/20250604072555_add_fk_to_product_properties.rb +52 -0
  67. data/db/migrate/20250604072948_add_fk_to_product_option_types.rb +52 -0
  68. data/db/migrate/20250604073219_add_fk_to_classifications.rb +52 -0
  69. data/db/migrate/20250605105424_add_shipping_category_foreign_keys.rb +73 -0
  70. data/db/migrate/20250626112117_add_foreign_key_to_spree_role_users.rb +30 -0
  71. data/db/migrate/20250628094037_change_countries_iso_to_unique.rb +9 -0
  72. data/db/migrate/20250708120317_add_adjustment_reason_foreign_keys.rb +30 -0
  73. data/db/migrate/20250709073151_add_country_foreign_keys.rb +75 -0
  74. data/db/migrate/20250709084513_add_state_foreign_keys.rb +30 -0
  75. data/db/migrate/20250726220709_add_fk_to_customer_return.rb +30 -0
  76. data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
  77. data/lib/generators/spree/dummy/dummy_generator.rb +2 -1
  78. data/lib/generators/spree/dummy/templates/rails/{manifest.js → manifest.js.tt} +2 -0
  79. data/lib/spree/app_configuration.rb +8 -0
  80. data/lib/spree/core/engine.rb +7 -2
  81. data/lib/spree/core/environment.rb +1 -0
  82. data/lib/spree/core/version.rb +6 -10
  83. data/lib/spree/core.rb +2 -0
  84. data/lib/spree/permitted_attributes.rb +2 -1
  85. data/lib/spree/preferences/preferable.rb +1 -5
  86. data/lib/spree/testing_support/capybara_driver.rb +9 -0
  87. data/lib/spree/testing_support/common_rake.rb +6 -3
  88. data/lib/spree/testing_support/dummy_app/migrations.rb +2 -2
  89. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +0 -6
  90. data/lib/spree/testing_support/dummy_app.rb +7 -0
  91. data/lib/spree/testing_support/factories/zone_factory.rb +4 -0
  92. data/lib/spree/testing_support/job_helpers.rb +6 -15
  93. data/lib/spree/testing_support/translations.rb +2 -2
  94. data/lib/spree/zero.rb +3 -0
  95. data/solidus_core.gemspec +6 -2
  96. metadata +56 -5
  97. /data/{lib → app/models/concerns}/spree/preferences/persistable.rb +0 -0
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddCountryForeignKeys < ActiveRecord::Migration[7.0]
4
+ FOREIGN_KEY_VIOLATION_ERRORS = %w[PG::ForeignKeyViolation Mysql2::Error SQLite3::ConstraintException]
5
+
6
+ def up
7
+ # Uncomment the following code to remove orphaned records if this migration fails
8
+ #
9
+ # say_with_time "Removing orphaned states (no corresponding country)" do
10
+ # Spree::State.left_joins(:country).where(spree_countries: { id: nil }).delete_all
11
+ # end
12
+
13
+ begin
14
+ add_foreign_key :spree_states, :spree_countries, column: :country_id, null: false, on_delete: :cascade
15
+ rescue ActiveRecord::StatementInvalid => e
16
+ if e.cause.class.name.in?(FOREIGN_KEY_VIOLATION_ERRORS)
17
+ say <<~MSG
18
+ ⚠️ Foreign key constraint failed when adding :spree_states => :spree_countries.
19
+ To fix this:
20
+ 1. Uncomment the code that removes orphaned records.
21
+ 2. Rerun the migration.
22
+ Offending error: #{e.cause.class} - #{e.cause.message}
23
+ MSG
24
+ end
25
+ raise
26
+ end
27
+
28
+ # Uncomment the following code to remove orphaned records if this migration fails
29
+ #
30
+ # say_with_time "Updating orphaned addresses (no corresponding country) to use default country" do
31
+ # Spree::Address.left_joins(:country).where(spree_countries: { id: nil }).update_all(country: Spree::Country.default)
32
+ # end
33
+
34
+ begin
35
+ add_foreign_key :spree_addresses, :spree_countries, column: :country_id, null: false, on_delete: :restrict
36
+ rescue ActiveRecord::StatementInvalid => e
37
+ if e.cause.class.name.in?(FOREIGN_KEY_VIOLATION_ERRORS)
38
+ say <<~MSG
39
+ ⚠️ Foreign key constraint failed when adding :spree_addresses => :spree_countries.
40
+ To fix this:
41
+ 1. Uncomment the code that removes orphaned records.
42
+ 2. Rerun the migration.
43
+ Offending error: #{e.cause.class} - #{e.cause.message}
44
+ MSG
45
+ end
46
+ raise
47
+ end
48
+ # Uncomment the following code to remove orphaned records if this migration fails
49
+ #
50
+ # say_with_time "Deleting orphaned prices (country ID without corresponding country)" do
51
+ # Spree::Price.where.not(country_iso: nil).left_joins(:country).where(spree_countries: { iso: nil }).update_all(country_iso: Spree::Config.default_country_iso)
52
+ # end
53
+
54
+ begin
55
+ add_foreign_key :spree_prices, :spree_countries, column: :country_iso, primary_key: :iso, null: true, on_delete: :restrict
56
+ rescue ActiveRecord::StatementInvalid => e
57
+ if e.cause.class.name.in?(FOREIGN_KEY_VIOLATION_ERRORS)
58
+ say <<~MSG
59
+ ⚠️ Foreign key constraint failed when adding :spree_prices => :spree_countries.
60
+ To fix this:
61
+ 1. Uncomment the code that removes orphaned records.
62
+ 2. Rerun the migration.
63
+ Offending error: #{e.cause.class} - #{e.cause.message}
64
+ MSG
65
+ end
66
+ raise
67
+ end
68
+ end
69
+
70
+ def down
71
+ remove_foreign_key :spree_states, :spree_countries, column: :country_id, null: false, on_delete: :cascade
72
+ remove_foreign_key :spree_addresses, :spree_countries, column: :country_id, null: false, on_delete: :restrict
73
+ remove_foreign_key :spree_prices, :spree_countries, column: :country_id, null: true, on_delete: :restrict
74
+ end
75
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddStateForeignKeys < ActiveRecord::Migration[7.0]
4
+ FOREIGN_KEY_VIOLATION_ERRORS = %w[PG::ForeignKeyViolation Mysql2::Error SQLite3::ConstraintException]
5
+
6
+ def up
7
+ # Uncomment the following code to remove orphaned records if this migration fails
8
+ #
9
+ # say_with_time "Resetting state IDs on addresses where the state record is no longer present" do
10
+ # Spree::Address.where.not(state_id: nil).left_joins(:state).where(spree_states: { id: nil }).update_all(state_id: nil)
11
+ # end
12
+
13
+ add_foreign_key :spree_addresses, :spree_states, column: :state_id, null: true, on_delete: :restrict
14
+ rescue ActiveRecord::StatementInvalid => e
15
+ if e.cause.class.name.in?(FOREIGN_KEY_VIOLATION_ERRORS)
16
+ say <<~MSG
17
+ ⚠️ Foreign key constraint failed when adding :spree_addresses => :spree_states.
18
+ To fix this:
19
+ 1. Uncomment the code that removes orphaned records.
20
+ 2. Rerun the migration.
21
+ Offending error: #{e.cause.class} - #{e.cause.message}
22
+ MSG
23
+ end
24
+ raise
25
+ end
26
+
27
+ def down
28
+ remove_foreign_key :spree_addresses, :spree_states, column: :state_id, null: true, on_delete: :restrict
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ # frozent_string_literal: true
2
+ #
3
+ class AddFkToCustomerReturn < ActiveRecord::Migration[7.0]
4
+ FOREIGN_KEY_VIOLATION_ERRORS = %w[PG::ForeignKeyViolation Mysql2::Error SQLite3::ConstraintException]
5
+
6
+ def up
7
+ # Uncomment the following code to remove orphaned records if this migration fails
8
+ #
9
+ # say_with_time "Removing invalid adjustment reason IDs from adjustments table" do
10
+ # Spree::CustomerReturn.where.not(stock_location_id: nil).left_joins(:stock_location).where(spree_stock_locations: { id: nil }).delete_all
11
+ # end
12
+
13
+ add_foreign_key :spree_customer_returns, :spree_stock_locations, column: :stock_location_id, null: false, on_delete: :restrict
14
+ rescue ActiveRecord::StatementInvalid => e
15
+ if e.cause.class.name.in?(FOREIGN_KEY_VIOLATION_ERRORS)
16
+ say <<~MSG
17
+ ⚠️ Foreign key constraint failed when adding :spree_customer_returns => :spree_stock_locations.
18
+ To fix this:
19
+ 1. Uncomment the code that removes invalid adjustment reason IDs from the spree_customer_returns table.
20
+ 2. Rerun the migration.
21
+ Offending error: #{e.cause.class} - #{e.cause.message}
22
+ MSG
23
+ end
24
+ raise
25
+ end
26
+
27
+ def down
28
+ remove_foreign_key :spree_customer_returns, :spree_stock_locations, column: :stock_location_id, null: false, on_delete: :restrict
29
+ end
30
+ end
@@ -1 +1 @@
1
- apply 'https://github.com/solidusio/solidus_starter_frontend/raw/v4.5/template.rb'
1
+ apply 'https://github.com/solidusio/solidus_starter_frontend/raw/v4.6/template.rb'
@@ -46,7 +46,7 @@ module Spree
46
46
  opts[:skip_javascript] = true
47
47
  opts[:skip_action_cable] = true
48
48
 
49
- puts "Generating dummy Rails application..."
49
+ say "Generating dummy Rails application..."
50
50
  invoke Rails::Generators::AppGenerator,
51
51
  [File.expand_path(dummy_path, destination_root)], opts
52
52
  end
@@ -54,6 +54,7 @@ module Spree
54
54
  def test_dummy_config
55
55
  @lib_name = options[:lib_name]
56
56
  @database = options[:database]
57
+ @has_javascripts = Dir.exist?("#{dummy_path}/app/assets/javascripts")
57
58
 
58
59
  template "rails/database.yml", "#{dummy_path}/config/database.yml", force: true
59
60
  template "rails/storage.yml", "#{dummy_path}/config/storage/test.yml", force: true
@@ -1,3 +1,5 @@
1
1
  //= link_tree ../images
2
+ <% if @has_javascripts %>
2
3
  //= link_directory ../javascripts .js
4
+ <% end %>
3
5
  //= link_directory ../stylesheets .css
@@ -724,6 +724,14 @@ module Spree
724
724
  Spree::Stock::Splitter::ShippingCategory
725
725
  Spree::Stock::Splitter::Backordered
726
726
  ]
727
+
728
+ env.subscribers = %w[
729
+ Spree::CartonShippedMailerSubscriber
730
+ Spree::OrderCancelMailerSubscriber
731
+ Spree::OrderConfirmationMailerSubscriber
732
+ Spree::OrderInventoryCancellationMailerSubscriber
733
+ Spree::ReimbursementMailerSubscriber
734
+ ]
727
735
  end
728
736
  end
729
737
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/config'
3
+ require 'spree/core'
4
4
 
5
5
  module Spree
6
6
  module Core
@@ -61,14 +61,19 @@ module Spree
61
61
  Spree::Bus.clear
62
62
 
63
63
  %i[
64
+ carton_shipped
65
+ order_canceled
64
66
  order_emptied
65
67
  order_finalized
66
68
  order_recalculated
69
+ order_short_shipped
67
70
  reimbursement_reimbursed
68
71
  reimbursement_errored
69
72
  ].each { |event_name| Spree::Bus.register(event_name) }
70
73
 
71
- Spree::OrderMailerSubscriber.new.subscribe_to(Spree::Bus)
74
+ Spree::Config.environment.subscribers.each do |subscriber_class|
75
+ subscriber_class.new.subscribe_to(Spree::Bus)
76
+ end
72
77
  end
73
78
  end
74
79
 
@@ -9,6 +9,7 @@ module Spree
9
9
 
10
10
  add_class_set :payment_methods
11
11
  add_class_set :stock_splitters
12
+ add_class_set :subscribers
12
13
 
13
14
  attr_accessor :calculators, :preferences, :promotions
14
15
 
@@ -1,17 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spree
4
- VERSION = "4.5.1"
4
+ VERSION = "4.6.0"
5
5
 
6
- def self.solidus_version
7
- VERSION
8
- end
6
+ def self.solidus_version = VERSION
9
7
 
10
- def self.previous_solidus_minor_version
11
- '4.4'
12
- end
8
+ def self.minimum_required_rails_version = "7.0"
13
9
 
14
- def self.solidus_gem_version
15
- Gem::Version.new(solidus_version)
16
- end
10
+ def self.previous_solidus_minor_version = "4.5"
11
+
12
+ def self.solidus_gem_version = Gem::Version.new(solidus_version)
17
13
  end
data/lib/spree/core.rb CHANGED
@@ -101,7 +101,9 @@ require 'spree/core/environment'
101
101
  require 'spree/migrations'
102
102
  require 'spree/migration_helpers'
103
103
  require 'spree/bus'
104
+ require 'spree/config'
104
105
  require 'spree/core/engine'
106
+ require 'spree/zero'
105
107
 
106
108
  require 'spree/i18n'
107
109
  require 'spree/localized_number'
@@ -42,6 +42,7 @@ module Spree
42
42
  @@address_attributes = [
43
43
  :id, :name, :address1, :address2, :city, :country_id, :state_id,
44
44
  :zipcode, :phone, :state_name, :country_iso, :alternative_phone, :company,
45
+ :email, :vat_id, :reverse_charge_status,
45
46
  country: [:iso, :name, :iso3, :iso_name],
46
47
  state: [:name, :abbr]
47
48
  ]
@@ -124,7 +125,7 @@ module Spree
124
125
  @@store_attributes = [:name, :url, :seo_title, :meta_keywords,
125
126
  :meta_description, :default_currency,
126
127
  :mail_from_address, :cart_tax_country_iso,
127
- :bcc_email]
128
+ :bcc_email, :reverse_charge_status]
128
129
 
129
130
  @@taxonomy_attributes = [:name]
130
131
 
@@ -160,11 +160,7 @@ module Spree
160
160
  when :password
161
161
  value.to_s
162
162
  when :decimal
163
- begin
164
- value.to_s.to_d
165
- rescue ArgumentError
166
- BigDecimal(0)
167
- end
163
+ value.to_s.to_d
168
164
  when :integer
169
165
  value.to_i
170
166
  when :boolean
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "selenium/webdriver"
4
+ require "capybara-screenshot"
5
+
6
+ Capybara::Screenshot.register_driver(:selenium_headless) do |driver, path|
7
+ driver.browser.save_screenshot(path)
8
+ end
9
+ Capybara.javascript_driver = (ENV['CAPYBARA_DRIVER'] || :selenium_headless).to_sym
@@ -1,11 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'generators/spree/dummy/dummy_generator'
4
+ require 'logger'
4
5
 
5
6
  class CommonRakeTasks
6
7
  include Rake::DSL
8
+ attr_reader :logger
7
9
 
8
10
  def initialize
11
+ @logger = Logger.new($stdout)
9
12
  namespace :common do
10
13
  task :test_app, :user_class do |_t, args|
11
14
  args.with_defaults(user_class: "Spree::LegacyUser")
@@ -45,19 +48,19 @@ class CommonRakeTasks
45
48
  sh "bin/rails g solidus_frontend:install --auto-accept"
46
49
  end
47
50
 
48
- puts "Setting up dummy database..."
51
+ logger.info "Setting up dummy database..."
49
52
 
50
53
  sh "bin/rails db:environment:set RAILS_ENV=test"
51
54
  sh "bin/rails db:drop db:create db:migrate VERBOSE=false RAILS_ENV=test"
52
55
 
53
56
  if extension_installation_generator_exists?
54
- puts 'Running extension installation generator...'
57
+ logger.info 'Running extension installation generator...'
55
58
  sh "bin/rails generate #{rake_generator_namespace}:install --auto-run-migrations"
56
59
  end
57
60
  end
58
61
 
59
62
  task :seed do |_t, _args|
60
- puts "Seeding ..."
63
+ logger.info "Seeding ..."
61
64
 
62
65
  sh "bundle exec rake db:seed RAILS_ENV=test"
63
66
  end
@@ -6,7 +6,7 @@ module DummyApp
6
6
 
7
7
  def auto_migrate
8
8
  if needs_migration?
9
- puts "Configuration changed. Re-running migrations"
9
+ Rails.logger.info "Configuration changed. Re-running migrations"
10
10
 
11
11
  # Disconnect to avoid "database is being accessed by other users" on postgres
12
12
  ActiveRecord::Base.remove_connection
@@ -29,7 +29,7 @@ module DummyApp
29
29
  end
30
30
 
31
31
  def sh(cmd)
32
- puts cmd
32
+ Rails.logger.info cmd
33
33
  system cmd
34
34
  end
35
35
  end
@@ -50,12 +50,6 @@ end
50
50
 
51
51
  desc "Open a sandboxed console in the test environment"
52
52
  task console: :dummy_environment do
53
- begin
54
- require 'pry'
55
- Rails.application.config.console = Pry
56
- rescue LoadError
57
- end
58
-
59
53
  require 'rails/commands'
60
54
  require 'rails/commands/console/console_command'
61
55
  Rails::Console.new(Rails.application, sandbox: true, environment: "test").start
@@ -23,6 +23,10 @@ class ApplicationRecord < ActiveRecord::Base
23
23
  self.abstract_class = true
24
24
  end
25
25
 
26
+ # @private
27
+ class ApplicationJob < ActiveJob::Base
28
+ end
29
+
26
30
  # @private
27
31
  class ApplicationMailer < ActionMailer::Base
28
32
  end
@@ -94,6 +98,9 @@ module DummyApp
94
98
  # We don't want to send email in the test environment.
95
99
  config.action_mailer.delivery_method = :test
96
100
 
101
+ # Do not actually run background jobs
102
+ config.active_job.queue_adapter = :test
103
+
97
104
  # No need to use credentials file in a test environment.
98
105
  config.secret_key_base = 'SECRET_TOKEN'
99
106
 
@@ -17,5 +17,9 @@ FactoryBot.define do
17
17
  trait :with_country do
18
18
  countries { [create(:country)] }
19
19
  end
20
+
21
+ trait :with_state do
22
+ states { [create(:state)] }
23
+ end
20
24
  end
21
25
  end
@@ -3,21 +3,12 @@
3
3
  module Spree
4
4
  module TestingSupport
5
5
  module JobHelpers
6
- def perform_enqueued_jobs
7
- adapter = ActiveJob::Base.queue_adapter
8
-
9
- old = adapter.perform_enqueued_jobs
10
- old_at = adapter.perform_enqueued_at_jobs
11
-
12
- begin
13
- adapter.perform_enqueued_jobs = true
14
- adapter.perform_enqueued_at_jobs = true
15
-
16
- yield
17
- ensure
18
- adapter.perform_enqueued_jobs = old
19
- adapter.perform_enqueued_at_jobs = old_at
20
- end
6
+ def self.included(base)
7
+ Spree.deprecator.warn <<~WARN
8
+ Including `Spree::TestingSupport::JobHelpers` is deprecated and will be removed in Solidus 5.0.
9
+ Please `include ActiveJob::TestHelper` instead.
10
+ WARN
11
+ base.include(ActiveJob::TestHelper)
21
12
  end
22
13
  end
23
14
  end
@@ -6,8 +6,8 @@ module Spree
6
6
  def check_missing_translations(page, example)
7
7
  missing_translations = page.body.scan(/translation missing: #{I18n.locale}\.(.*?)[\s<\"&]/)
8
8
  if missing_translations.any?
9
- puts "Found missing translations: #{missing_translations.inspect}"
10
- puts "In spec: #{example.location}"
9
+ Rails.logger.info "Found missing translations: #{missing_translations.inspect}"
10
+ Rails.logger.info "In spec: #{example.location}"
11
11
  end
12
12
  end
13
13
  end
data/lib/spree/zero.rb ADDED
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ Spree::ZERO = BigDecimal(0).freeze
data/solidus_core.gemspec CHANGED
@@ -27,7 +27,10 @@ Gem::Specification.new do |s|
27
27
  actionmailer actionpack actionview activejob activemodel activerecord
28
28
  activestorage activesupport railties
29
29
  ].each do |rails_dep|
30
- s.add_dependency rails_dep, ['>= 7.0', '< 8.1.0.beta1']
30
+ s.add_dependency rails_dep, [
31
+ ">= #{Spree.minimum_required_rails_version}",
32
+ "< 8.1.0.beta1"
33
+ ]
31
34
  end
32
35
 
33
36
  s.add_dependency 'activemerchant', '~> 1.66'
@@ -45,7 +48,8 @@ Gem::Specification.new do |s|
45
48
  s.add_dependency 'psych', ['>= 4.0.1', '< 6.0']
46
49
  s.add_dependency 'ransack', ['~> 4.0', '< 5']
47
50
  s.add_dependency 'sprockets-rails', '!= 3.5.0'
48
- s.add_dependency 'state_machines-activerecord', '~> 0.6'
51
+ s.add_dependency 'state_machines', ['~> 0.6', '< 0.10.0']
52
+ s.add_dependency 'state_machines-activerecord', ['~> 0.6', '< 0.10.0']
49
53
  s.add_dependency 'omnes', '~> 0.2.2'
50
54
 
51
55
  s.post_install_message = <<-MSG
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.1
4
+ version: 4.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-06 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: actionmailer
@@ -429,6 +429,26 @@ dependencies:
429
429
  - - "!="
430
430
  - !ruby/object:Gem::Version
431
431
  version: 3.5.0
432
+ - !ruby/object:Gem::Dependency
433
+ name: state_machines
434
+ requirement: !ruby/object:Gem::Requirement
435
+ requirements:
436
+ - - "~>"
437
+ - !ruby/object:Gem::Version
438
+ version: '0.6'
439
+ - - "<"
440
+ - !ruby/object:Gem::Version
441
+ version: 0.10.0
442
+ type: :runtime
443
+ prerelease: false
444
+ version_requirements: !ruby/object:Gem::Requirement
445
+ requirements:
446
+ - - "~>"
447
+ - !ruby/object:Gem::Version
448
+ version: '0.6'
449
+ - - "<"
450
+ - !ruby/object:Gem::Version
451
+ version: 0.10.0
432
452
  - !ruby/object:Gem::Dependency
433
453
  name: state_machines-activerecord
434
454
  requirement: !ruby/object:Gem::Requirement
@@ -436,6 +456,9 @@ dependencies:
436
456
  - - "~>"
437
457
  - !ruby/object:Gem::Version
438
458
  version: '0.6'
459
+ - - "<"
460
+ - !ruby/object:Gem::Version
461
+ version: 0.10.0
439
462
  type: :runtime
440
463
  prerelease: false
441
464
  version_requirements: !ruby/object:Gem::Requirement
@@ -443,6 +466,9 @@ dependencies:
443
466
  - - "~>"
444
467
  - !ruby/object:Gem::Version
445
468
  version: '0.6'
469
+ - - "<"
470
+ - !ruby/object:Gem::Version
471
+ version: 0.10.0
446
472
  - !ruby/object:Gem::Dependency
447
473
  name: omnes
448
474
  requirement: !ruby/object:Gem::Requirement
@@ -488,6 +514,8 @@ files:
488
514
  - app/helpers/spree/products_helper.rb
489
515
  - app/helpers/spree/store_helper.rb
490
516
  - app/helpers/spree/taxons_helper.rb
517
+ - app/jobs/spree/base_job.rb
518
+ - app/jobs/spree/state_change_tracking_job.rb
491
519
  - app/mailers/spree/base_mailer.rb
492
520
  - app/mailers/spree/carton_mailer.rb
493
521
  - app/mailers/spree/order_mailer.rb
@@ -502,8 +530,10 @@ files:
502
530
  - app/models/concerns/spree/metadata.rb
503
531
  - app/models/concerns/spree/named_type.rb
504
532
  - app/models/concerns/spree/ordered_property_value_list.rb
533
+ - app/models/concerns/spree/preferences/persistable.rb
505
534
  - app/models/concerns/spree/ransackable_attributes.rb
506
535
  - app/models/concerns/spree/soft_deletable.rb
536
+ - app/models/concerns/spree/state_change_tracking.rb
507
537
  - app/models/concerns/spree/user_address_book.rb
508
538
  - app/models/concerns/spree/user_api_authentication.rb
509
539
  - app/models/concerns/spree/user_methods.rb
@@ -730,7 +760,12 @@ files:
730
760
  - app/models/spree/wallet_payment_source.rb
731
761
  - app/models/spree/zone.rb
732
762
  - app/models/spree/zone_member.rb
763
+ - app/subscribers/spree/carton_shipped_mailer_subscriber.rb
764
+ - app/subscribers/spree/order_cancel_mailer_subscriber.rb
765
+ - app/subscribers/spree/order_confirmation_mailer_subscriber.rb
766
+ - app/subscribers/spree/order_inventory_cancellation_mailer_subscriber.rb
733
767
  - app/subscribers/spree/order_mailer_subscriber.rb
768
+ - app/subscribers/spree/reimbursement_mailer_subscriber.rb
734
769
  - app/views/layouts/spree/base_mailer.html.erb
735
770
  - app/views/spree/carton_mailer/shipped_email.html.erb
736
771
  - app/views/spree/carton_mailer/shipped_email.text.erb
@@ -806,7 +841,22 @@ files:
806
841
  - db/migrate/20250129061658_add_metadata_to_spree_resources.rb
807
842
  - db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb
808
843
  - db/migrate/20250207104016_add_primary_taxon_to_products.rb
844
+ - db/migrate/20250214094207_add_reverse_charge_status_to_store.rb
809
845
  - db/migrate/20250221152004_add_metadata_to_users.rb
846
+ - db/migrate/20250225051308_add_vat_id_email_and_reverse_charge_status_to_addresses.rb
847
+ - db/migrate/20250508145917_add_email_to_stock_locations.rb
848
+ - db/migrate/20250530102541_add_addressbook_foreign_key.rb
849
+ - db/migrate/20250604072105_add_fk_products_variant_property_rules.rb
850
+ - db/migrate/20250604072555_add_fk_to_product_properties.rb
851
+ - db/migrate/20250604072948_add_fk_to_product_option_types.rb
852
+ - db/migrate/20250604073219_add_fk_to_classifications.rb
853
+ - db/migrate/20250605105424_add_shipping_category_foreign_keys.rb
854
+ - db/migrate/20250626112117_add_foreign_key_to_spree_role_users.rb
855
+ - db/migrate/20250628094037_change_countries_iso_to_unique.rb
856
+ - db/migrate/20250708120317_add_adjustment_reason_foreign_keys.rb
857
+ - db/migrate/20250709073151_add_country_foreign_keys.rb
858
+ - db/migrate/20250709084513_add_state_foreign_keys.rb
859
+ - db/migrate/20250726220709_add_fk_to_customer_return.rb
810
860
  - db/seeds.rb
811
861
  - lib/generators/solidus/install/app_templates/authentication/custom.rb
812
862
  - lib/generators/solidus/install/app_templates/authentication/devise.rb
@@ -831,7 +881,7 @@ files:
831
881
  - lib/generators/spree/dummy/templates/rails/application.rb.tt
832
882
  - lib/generators/spree/dummy/templates/rails/boot.rb
833
883
  - lib/generators/spree/dummy/templates/rails/database.yml
834
- - lib/generators/spree/dummy/templates/rails/manifest.js
884
+ - lib/generators/spree/dummy/templates/rails/manifest.js.tt
835
885
  - lib/generators/spree/dummy/templates/rails/routes.rb
836
886
  - lib/generators/spree/dummy/templates/rails/storage.yml
837
887
  - lib/generators/spree/dummy/templates/rails/test.rb
@@ -910,7 +960,6 @@ files:
910
960
  - lib/spree/permission_sets/user_management.rb
911
961
  - lib/spree/permitted_attributes.rb
912
962
  - lib/spree/preferences/configuration.rb
913
- - lib/spree/preferences/persistable.rb
914
963
  - lib/spree/preferences/preferable.rb
915
964
  - lib/spree/preferences/preferable_class_methods.rb
916
965
  - lib/spree/preferences/preference_differentiator.rb
@@ -923,6 +972,7 @@ files:
923
972
  - lib/spree/testing_support/blacklist_urls.rb
924
973
  - lib/spree/testing_support/bus_helpers.rb
925
974
  - lib/spree/testing_support/caching.rb
975
+ - lib/spree/testing_support/capybara_driver.rb
926
976
  - lib/spree/testing_support/capybara_ext.rb
927
977
  - lib/spree/testing_support/common_rake.rb
928
978
  - lib/spree/testing_support/controller_requests.rb
@@ -1011,6 +1061,7 @@ files:
1011
1061
  - lib/spree/testing_support/translations.rb
1012
1062
  - lib/spree/testing_support/url_helpers.rb
1013
1063
  - lib/spree/user_class_handle.rb
1064
+ - lib/spree/zero.rb
1014
1065
  - lib/spree_core.rb
1015
1066
  - lib/tasks/colorado_delivery_fee.rake
1016
1067
  - lib/tasks/payment_method.rake
@@ -1061,7 +1112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1061
1112
  - !ruby/object:Gem::Version
1062
1113
  version: 1.8.23
1063
1114
  requirements: []
1064
- rubygems_version: 3.6.5
1115
+ rubygems_version: 3.6.9
1065
1116
  specification_version: 4
1066
1117
  summary: Essential models, mailers, and classes for the Solidus e-commerce project.
1067
1118
  test_files: []