From 0e9bd91fc2734ef63ec4577476ccbbe92cfc8696 Mon Sep 17 00:00:00 2001 From: Rafi Jacoby Date: Tue, 28 Jan 2025 12:35:44 -0600 Subject: [PATCH] Allows Rails 8, updates sqlite in Gemfile to match what CI runs Only send content to tags that support it per Rails 8 deprecations. See: https://github.com/rails/rails/blob/8-0-stable/actionview/CHANGELOG.md#rails-800rc1-october-19-2024 Handle Rails 8 syntax additions to the error text. --- .circleci/config.yml | 8 ++++---- Gemfile | 2 +- .../solidus_admin/ui/forms/input/component.rb | 19 +++++++++++++++---- api/spec/requests/spree/api/shipments_spec.rb | 2 +- .../requests/spree/api/stock_items_spec.rb | 2 +- core/solidus_core.gemspec | 2 +- 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e07188dacd3..d6777670c0f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -224,7 +224,7 @@ commands: mkdir -p /tmp/dummy_extension cd /tmp/dummy_extension bundle init - bundle add rails -v "< 8.0" --skip-install + bundle add rails -v "< 8.1" --skip-install bundle add sqlite3 -v "~> 2.0" --skip-install test -n "<>" && bundle add <> --skip-install bundle add solidus --path "$(ruby -e"puts File.expand_path ENV['CIRCLE_WORKING_DIRECTORY']")" @@ -352,7 +352,7 @@ workflows: { parameters: { - rails: ["7.0", "7.1", "7.2"], + rails: ["7.0", "7.1", "7.2", "8.0"], ruby: ["3.1"], database: ["mysql"], paperclip: [true], @@ -364,7 +364,7 @@ workflows: { parameters: { - rails: ["7.0", "7.1", "7.2"], + rails: ["7.0", "7.1", "7.2", "8.0"], ruby: ["3.1"], database: ["postgres"], paperclip: [false], @@ -388,7 +388,7 @@ workflows: { parameters: { - rails: ["7.2", "main"], + rails: ["7.2", "8.0", "main"], ruby: ["3.3.5"], database: ["sqlite"], paperclip: [false], diff --git a/Gemfile b/Gemfile index 3b7c66527c3..117ab9526c4 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,7 @@ gemspec require: false if /(stable|main)/.match? ENV['RAILS_VERSION'] gem 'rails', github: 'rails', require: false, branch: ENV['RAILS_VERSION'] else - gem 'rails', ENV['RAILS_VERSION'] || ['> 7.0', '< 8.0.0.beta1'], require: false + gem 'rails', ENV['RAILS_VERSION'] || ['> 7.0', '< 8.1.0.beta1'], require: false end # rubocop:enable Bundler/DuplicatedGem diff --git a/admin/app/components/solidus_admin/ui/forms/input/component.rb b/admin/app/components/solidus_admin/ui/forms/input/component.rb index 4f39dc5a1bb..5416bd2cc08 100644 --- a/admin/app/components/solidus_admin/ui/forms/input/component.rb +++ b/admin/app/components/solidus_admin/ui/forms/input/component.rb @@ -93,13 +93,24 @@ def call with_content options_for_select(@attributes.delete(:choices), @attributes.delete(:value)) end - tag.public_send( - @tag, - content, + options = { "data-controller": stimulus_id, "data-#{stimulus_id}-custom-validity-value": @error.presence, "data-action": "#{stimulus_id}#clearCustomValidity", **@attributes - ) + } + + if tag.method(@tag).parameters.any? { |_type, name| name == :content } + tag.public_send( + @tag, + content, + **options + ) + else + tag.public_send( + @tag, + **options + ) + end end end diff --git a/api/spec/requests/spree/api/shipments_spec.rb b/api/spec/requests/spree/api/shipments_spec.rb index 10dbe0840de..4ba4ff7ea7c 100644 --- a/api/spec/requests/spree/api/shipments_spec.rb +++ b/api/spec/requests/spree/api/shipments_spec.rb @@ -75,7 +75,7 @@ module Spree::Api it 'returns proper error' do subject expect(response.status).to eq(422) - expect(json_response['exception']).to eq("param is missing or the value is empty: stock_location_id") + expect(json_response['exception']).to match(/param is missing or the value is empty( or invalid)?: stock_location_id/) end end end diff --git a/api/spec/requests/spree/api/stock_items_spec.rb b/api/spec/requests/spree/api/stock_items_spec.rb index 4d64e2a796d..cb2872c2d9f 100644 --- a/api/spec/requests/spree/api/stock_items_spec.rb +++ b/api/spec/requests/spree/api/stock_items_spec.rb @@ -86,7 +86,7 @@ module Spree::Api it 'requires a stock_location_id to be passed as a parameter' do get spree.api_stock_items_path - expect(json_response['exception']).to eq('param is missing or the value is empty: stock_location_id') + expect(json_response['exception']).to match(/param is missing or the value is empty( or invalid)?: stock_location_id/) expect(response.status).to eq(422) end diff --git a/core/solidus_core.gemspec b/core/solidus_core.gemspec index 3d4a7f5c108..7f5c5df544b 100644 --- a/core/solidus_core.gemspec +++ b/core/solidus_core.gemspec @@ -27,7 +27,7 @@ Gem::Specification.new do |s| actionmailer actionpack actionview activejob activemodel activerecord activestorage activesupport railties ].each do |rails_dep| - s.add_dependency rails_dep, ['>= 7.0', '< 8.0.0.beta1'] + s.add_dependency rails_dep, ['>= 7.0', '< 8.1.0.beta1'] end s.add_dependency 'activemerchant', '~> 1.66'