From 0a67cc945f91a91a4d0232c979c1ad50676fcb20 Mon Sep 17 00:00:00 2001 From: Nwabor Date: Tue, 7 May 2024 23:54:08 +0100 Subject: [PATCH] resolved rubocop lexically scoped errors --- .rubocop_todo.yml | 42 +++++++++---------- Gemfile.lock | 6 +-- .../admin/enterprise_groups_controller.rb | 2 +- .../admin/enterprises_controller.rb | 20 ++++----- .../admin/order_cycles_controller.rb | 4 +- .../admin/producer_properties_controller.rb | 2 +- .../admin/product_import_controller.rb | 2 +- app/controllers/admin/schedules_controller.rb | 2 +- .../admin/subscriptions_controller.rb | 2 +- .../concerns/checkout_callbacks.rb | 2 +- app/controllers/registration_controller.rb | 2 +- .../spree/admin/adjustments_controller.rb | 8 ++-- .../spree/admin/payment_methods_controller.rb | 2 +- .../spree/admin/payments_controller.rb | 4 +- .../spree/admin/products_controller.rb | 2 +- .../admin/return_authorizations_controller.rb | 2 +- .../spree/admin/search_controller.rb | 2 +- .../admin/shipping_methods_controller.rb | 12 +++--- .../spree/admin/users_controller.rb | 3 +- .../spree/admin/zones_controller.rb | 2 +- app/controllers/spree/users_controller.rb | 4 +- app/forms/enterprise_fees_bulk_update.rb | 6 +-- app/models/concerns/calculated_adjustments.rb | 3 +- app/models/product_import/entry_processor.rb | 2 +- app/models/spree/adjustment.rb | 3 +- app/models/spree/calculator.rb | 2 +- app/models/spree/credit_card.rb | 3 +- app/models/spree/order/checkout.rb | 2 +- app/models/spree/preferences/configuration.rb | 2 +- app/models/spree/product.rb | 2 +- app/models/spree/shipment.rb | 7 ++-- app/models/spree/tax_rate.rb | 2 +- app/models/voucher.rb | 3 +- app/services/sets/model_set.rb | 2 +- lib/reporting/report_rows_builder.rb | 2 +- .../sales_tax/sales_tax_totals_by_producer.rb | 2 +- lib/spree/core/environment_extension.rb | 2 +- lib/spree/money.rb | 2 +- .../api/v0/reports/packing_report_spec.rb | 6 ++- spec/models/product_importer_spec.rb | 2 +- spec/support/api_helper.rb | 2 +- spec/support/cancan_helper.rb | 2 +- .../admin/configuration/content_spec.rb | 6 ++- .../system/admin/products_v3/products_spec.rb | 6 ++- spec/system/admin/variant_overrides_spec.rb | 12 +++--- spec/system/support/precompile_assets.rb | 23 ++++++++++ 46 files changed, 133 insertions(+), 100 deletions(-) create mode 100644 spec/system/support/precompile_assets.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 7f40f94d2b..d4f8069751 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -587,27 +587,27 @@ Rails/InverseOf: # Offense count: 35 # Configuration parameters: Include. # Include: app/controllers/**/*.rb, app/mailers/**/*.rb -Rails/LexicallyScopedActionFilter: - Exclude: - - 'app/controllers/admin/enterprise_groups_controller.rb' - - 'app/controllers/admin/enterprises_controller.rb' - - 'app/controllers/admin/order_cycles_controller.rb' - - 'app/controllers/admin/producer_properties_controller.rb' - - 'app/controllers/admin/product_import_controller.rb' - - 'app/controllers/admin/schedules_controller.rb' - - 'app/controllers/admin/subscriptions_controller.rb' - - 'app/controllers/concerns/checkout_callbacks.rb' - - 'app/controllers/registration_controller.rb' - - 'app/controllers/spree/admin/adjustments_controller.rb' - - 'app/controllers/spree/admin/payment_methods_controller.rb' - - 'app/controllers/spree/admin/payments_controller.rb' - - 'app/controllers/spree/admin/products_controller.rb' - - 'app/controllers/spree/admin/return_authorizations_controller.rb' - - 'app/controllers/spree/admin/search_controller.rb' - - 'app/controllers/spree/admin/shipping_methods_controller.rb' - - 'app/controllers/spree/admin/users_controller.rb' - - 'app/controllers/spree/admin/zones_controller.rb' - - 'app/controllers/spree/users_controller.rb' +# Rails/LexicallyScopedActionFilter: +# Exclude: +# - 'app/controllers/admin/enterprise_groups_controller.rb' +# - 'app/controllers/admin/enterprises_controller.rb' +# - 'app/controllers/admin/order_cycles_controller.rb' +# - 'app/controllers/admin/producer_properties_controller.rb' +# - 'app/controllers/admin/product_import_controller.rb' +# - 'app/controllers/admin/schedules_controller.rb' +# - 'app/controllers/admin/subscriptions_controller.rb' +# - 'app/controllers/concerns/checkout_callbacks.rb' +# - 'app/controllers/registration_controller.rb' +# - 'app/controllers/spree/admin/adjustments_controller.rb' +# - 'app/controllers/spree/admin/payment_methods_controller.rb' +# - 'app/controllers/spree/admin/payments_controller.rb' +# - 'app/controllers/spree/admin/products_controller.rb' +# - 'app/controllers/spree/admin/return_authorizations_controller.rb' +# - 'app/controllers/spree/admin/search_controller.rb' +# - 'app/controllers/spree/admin/shipping_methods_controller.rb' +# - 'app/controllers/spree/admin/users_controller.rb' +# - 'app/controllers/spree/admin/zones_controller.rb' +# - 'app/controllers/spree/users_controller.rb' # Offense count: 32 # This cop supports unsafe autocorrection (--autocorrect-all). diff --git a/Gemfile.lock b/Gemfile.lock index f4953104fb..93175e9e44 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -363,9 +363,9 @@ GEM thor (>= 0.14, < 2.0) jquery-ui-rails (4.2.1) railties (>= 3.2.16) - json (2.7.2) - json-canonicalization (1.0.0) - json-jwt (1.16.6) + json (2.6.3) + json-canonicalization (0.4.0) + json-jwt (1.16.3) activesupport (>= 4.2) aes_key_wrap base64 diff --git a/app/controllers/admin/enterprise_groups_controller.rb b/app/controllers/admin/enterprise_groups_controller.rb index 17a5f32eda..46d3fafe29 100644 --- a/app/controllers/admin/enterprise_groups_controller.rb +++ b/app/controllers/admin/enterprise_groups_controller.rb @@ -3,7 +3,7 @@ module Admin class EnterpriseGroupsController < Admin::ResourceController before_action :load_data, except: :index - before_action :load_object_data, only: [:new, :edit, :create, :update] + before_action :load_object_data def index @enterprise_groups = @enterprise_groups.managed_by(spree_current_user) diff --git a/app/controllers/admin/enterprises_controller.rb b/app/controllers/admin/enterprises_controller.rb index db67df4406..214c526763 100644 --- a/app/controllers/admin/enterprises_controller.rb +++ b/app/controllers/admin/enterprises_controller.rb @@ -11,23 +11,23 @@ module Admin include Pagy::Backend # These need to run before #load_resource so that @object is initialised with sanitised values - prepend_before_action :override_owner, only: :create - prepend_before_action :override_sells, only: :create + prepend_before_action :override_owner + prepend_before_action :override_sells - before_action :load_countries, except: [:index, :register, :check_permalink] + before_action :load_countries, except: [:index, :register] before_action :load_methods_and_fees, only: [:edit, :update] - before_action :load_groups, only: [:new, :edit, :update, :create] - before_action :load_taxons, only: [:new, :edit, :update, :create] + before_action :load_groups, only: [:edit, :update] + before_action :load_taxons, only: [:edit, :update] before_action :check_can_change_sells, only: :update before_action :check_can_change_bulk_sells, only: :bulk_update before_action :check_can_change_owner, only: :update before_action :check_can_change_bulk_owner, only: :bulk_update before_action :check_can_change_managers, only: :update - before_action :strip_new_properties, only: [:create, :update] + before_action :strip_new_properties, only: [:update] before_action :load_properties, only: [:edit, :update] before_action :setup_property, only: [:edit] - after_action :geocode_address_if_use_geocoder, only: [:create, :update] + after_action :geocode_address_if_use_geocoder, only: [:update] include OrderCyclesHelper @@ -252,7 +252,7 @@ module Admin # methods that are specific to each class do not become available until after the # record is persisted. This problem is compounded by the use of calculators. @object.transaction do - tag_rules_attributes.select{ |_i, attrs| attrs[:type].present? }.each do |_i, attrs| + tag_rules_attributes.select{ |attrs| attrs[:type].present? }.each_value do |attrs| rule = @object.tag_rules.find_by(id: attrs.delete(:id)) || attrs[:type].constantize.new(enterprise: @object) @@ -291,7 +291,7 @@ module Admin def check_can_change_bulk_sells return if spree_current_user.admin? - params[:sets_enterprise_set][:collection_attributes].each do |_i, enterprise_params| + params[:sets_enterprise_set][:collection_attributes].each_value do |enterprise_params| unless spree_current_user == Enterprise.find_by(id: enterprise_params[:id]).owner enterprise_params.delete :sells end @@ -325,7 +325,7 @@ module Admin def check_can_change_bulk_owner return if spree_current_user.admin? - bulk_params[:collection_attributes].each do |_i, enterprise_params| + bulk_params[:collection_attributes].each_value do |enterprise_params| enterprise_params.delete :owner_id end end diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb index 35333e7af7..f472985ec4 100644 --- a/app/controllers/admin/order_cycles_controller.rb +++ b/app/controllers/admin/order_cycles_controller.rb @@ -5,12 +5,12 @@ module Admin include ::OrderCyclesHelper include PaperTrailLogging - prepend_before_action :set_order_cycle_id, only: [:incoming, :outgoing, :checkout_options] + prepend_before_action :set_order_cycle_id before_action :load_data_for_index, only: :index before_action :require_coordinator, only: :new before_action :remove_protected_attrs, only: [:update] before_action :require_order_cycle_set_params, only: [:bulk_update] - around_action :protect_invalid_destroy, only: :destroy + around_action :protect_invalid_destroy def index respond_to do |format| diff --git a/app/controllers/admin/producer_properties_controller.rb b/app/controllers/admin/producer_properties_controller.rb index 2ce3aca0db..39007d9743 100644 --- a/app/controllers/admin/producer_properties_controller.rb +++ b/app/controllers/admin/producer_properties_controller.rb @@ -4,7 +4,7 @@ module Admin class ProducerPropertiesController < Admin::ResourceController before_action :load_enterprise before_action :load_properties - before_action :setup_property, only: [:index] + before_action :setup_property private diff --git a/app/controllers/admin/product_import_controller.rb b/app/controllers/admin/product_import_controller.rb index c71e3ad015..0ed28807e5 100644 --- a/app/controllers/admin/product_import_controller.rb +++ b/app/controllers/admin/product_import_controller.rb @@ -4,7 +4,7 @@ require 'roo' module Admin class ProductImportController < Spree::Admin::BaseController - before_action :validate_upload_presence, except: %i[index guide validate_data] + before_action :validate_upload_presence, except: %i[index validate_data] def index @product_categories = Spree::Taxon.order('name ASC').pluck(:name).uniq diff --git a/app/controllers/admin/schedules_controller.rb b/app/controllers/admin/schedules_controller.rb index 46854d254d..d0fa137c40 100644 --- a/app/controllers/admin/schedules_controller.rb +++ b/app/controllers/admin/schedules_controller.rb @@ -7,7 +7,7 @@ module Admin include PaperTrailLogging before_action :adapt_params, only: [:update] - before_action :check_dependent_subscriptions, only: [:destroy] + before_action :check_dependent_subscriptions after_action :sync_subscriptions_for_update, only: :update diff --git a/app/controllers/admin/subscriptions_controller.rb b/app/controllers/admin/subscriptions_controller.rb index 0f18543f4b..fe2f6e36a1 100644 --- a/app/controllers/admin/subscriptions_controller.rb +++ b/app/controllers/admin/subscriptions_controller.rb @@ -5,7 +5,7 @@ require 'open_food_network/permissions' module Admin class SubscriptionsController < Admin::ResourceController before_action :load_shops, only: [:index] - before_action :load_form_data, only: [:new, :edit] + before_action :load_form_data, only: [:new] before_action :strip_banned_attrs, only: [:update] before_action :wrap_nested_attrs, only: [:create, :update] before_action :check_for_open_orders, only: [:cancel, :pause] diff --git a/app/controllers/concerns/checkout_callbacks.rb b/app/controllers/concerns/checkout_callbacks.rb index c7eb90ebde..9863e026b2 100644 --- a/app/controllers/concerns/checkout_callbacks.rb +++ b/app/controllers/concerns/checkout_callbacks.rb @@ -7,7 +7,7 @@ module CheckoutCallbacks included do # We need pessimistic locking to avoid race conditions. # Otherwise we fail on duplicate indexes or end up with negative stock. - prepend_around_action CurrentOrderLocker, only: [:edit, :update] + prepend_around_action CurrentOrderLocker prepend_before_action :check_hub_ready_for_checkout prepend_before_action :check_order_cycle_expiry diff --git a/app/controllers/registration_controller.rb b/app/controllers/registration_controller.rb index 7352786e74..2e25b00f3f 100644 --- a/app/controllers/registration_controller.rb +++ b/app/controllers/registration_controller.rb @@ -9,7 +9,7 @@ class RegistrationController < BaseController helper 'map' before_action :load_spree_api_key, only: [:index] - before_action :check_user, except: :authenticate + before_action :check_user def index @enterprise_attributes = { sells: 'none' } diff --git a/app/controllers/spree/admin/adjustments_controller.rb b/app/controllers/spree/admin/adjustments_controller.rb index 2d53dfb13c..dbf52b7ee2 100644 --- a/app/controllers/spree/admin/adjustments_controller.rb +++ b/app/controllers/spree/admin/adjustments_controller.rb @@ -5,10 +5,10 @@ module Spree class AdjustmentsController < ::Admin::ResourceController belongs_to 'spree/order', find_by: :number - before_action :set_order_id, only: [:create, :update] - before_action :skip_changing_canceled_orders, only: [:create, :update] - after_action :update_order, only: [:create, :update, :destroy] - after_action :apply_tax, only: [:create, :update] + before_action :set_order_id + before_action :skip_changing_canceled_orders + after_action :update_order + after_action :apply_tax private diff --git a/app/controllers/spree/admin/payment_methods_controller.rb b/app/controllers/spree/admin/payment_methods_controller.rb index 204de6936f..277c7b6c7c 100644 --- a/app/controllers/spree/admin/payment_methods_controller.rb +++ b/app/controllers/spree/admin/payment_methods_controller.rb @@ -6,7 +6,7 @@ module Spree skip_before_action :load_resource, only: [:create, :show_provider_preferences] before_action :load_data before_action :validate_payment_method_provider, only: [:create] - before_action :load_hubs, only: [:new, :edit, :update] + before_action :load_hubs, only: [:update] respond_to :html diff --git a/app/controllers/spree/admin/payments_controller.rb b/app/controllers/spree/admin/payments_controller.rb index 0afaa5227c..16c2cc0f6e 100644 --- a/app/controllers/spree/admin/payments_controller.rb +++ b/app/controllers/spree/admin/payments_controller.rb @@ -3,8 +3,8 @@ module Spree module Admin class PaymentsController < Spree::Admin::BaseController - before_action :load_order, except: [:show] - before_action :load_payment, only: [:fire, :show] + before_action :load_order + before_action :load_payment, only: [:fire] before_action :load_data before_action :can_transition_to_payment # We ensure that items are in stock before all screens if the order is in the Payment state. diff --git a/app/controllers/spree/admin/products_controller.rb b/app/controllers/spree/admin/products_controller.rb index 32099627d8..6207b8e271 100644 --- a/app/controllers/spree/admin/products_controller.rb +++ b/app/controllers/spree/admin/products_controller.rb @@ -13,7 +13,7 @@ module Spree before_action :load_data before_action :load_form_data, only: [:index, :new, :create, :edit, :update] - before_action :load_spree_api_key, only: [:index, :variant_overrides] + before_action :load_spree_api_key, only: [:index] before_action :strip_new_properties, only: [:create, :update] def index diff --git a/app/controllers/spree/admin/return_authorizations_controller.rb b/app/controllers/spree/admin/return_authorizations_controller.rb index 84b85ad345..022b8e4d3a 100644 --- a/app/controllers/spree/admin/return_authorizations_controller.rb +++ b/app/controllers/spree/admin/return_authorizations_controller.rb @@ -5,7 +5,7 @@ module Spree class ReturnAuthorizationsController < ::Admin::ResourceController belongs_to 'spree/order', find_by: :number - after_action :associate_inventory_units, only: [:create, :update] + after_action :associate_inventory_units def fire @return_authorization.public_send("#{params[:e]}!") diff --git a/app/controllers/spree/admin/search_controller.rb b/app/controllers/spree/admin/search_controller.rb index 7032a17e22..38533cabde 100644 --- a/app/controllers/spree/admin/search_controller.rb +++ b/app/controllers/spree/admin/search_controller.rb @@ -4,7 +4,7 @@ module Spree module Admin class SearchController < Spree::Admin::BaseController # http://spreecommerce.com/blog/2010/11/02/json-hijacking-vulnerability/ - before_action :check_json_authenticity, only: :index + before_action :check_json_authenticity respond_to :json def known_users diff --git a/app/controllers/spree/admin/shipping_methods_controller.rb b/app/controllers/spree/admin/shipping_methods_controller.rb index 58f51ac858..b453da5ecb 100644 --- a/app/controllers/spree/admin/shipping_methods_controller.rb +++ b/app/controllers/spree/admin/shipping_methods_controller.rb @@ -3,11 +3,11 @@ module Spree module Admin class ShippingMethodsController < ::Admin::ResourceController - before_action :load_data, except: [:index] - before_action :set_shipping_category, only: [:create, :update] - before_action :set_zones, only: [:create, :update] - before_action :load_hubs, only: [:new, :edit, :create, :update] - before_action :check_shipping_fee_input, only: [:update] + before_action :load_data + before_action :set_shipping_category + before_action :set_zones + before_action :load_hubs, only: [:new] + before_action :check_shipping_fee_input # Sort shipping methods by distributor name def collection @@ -104,7 +104,7 @@ module Spree return unless shipping_fees - shipping_fees.each do |_, shipping_amount| + shipping_fees.each_value do |shipping_amount| unless shipping_amount.nil? || Float(shipping_amount, exception: false) flash[:error] = I18n.t(:calculator_preferred_value_error) return redirect_to location_after_save diff --git a/app/controllers/spree/admin/users_controller.rb b/app/controllers/spree/admin/users_controller.rb index 34714ba233..77280abf88 100644 --- a/app/controllers/spree/admin/users_controller.rb +++ b/app/controllers/spree/admin/users_controller.rb @@ -11,8 +11,7 @@ module Spree # http://spreecommerce.com/blog/2010/11/02/json-hijacking-vulnerability/ before_action :check_json_authenticity, only: :index - before_action :load_roles, only: [:edit, :new, :update, :create, - :generate_api_key, :clear_api_key] + before_action :load_roles, only: %i[update create] def index respond_with(@collection) do |format| diff --git a/app/controllers/spree/admin/zones_controller.rb b/app/controllers/spree/admin/zones_controller.rb index 680f4d1a07..5b6964779c 100644 --- a/app/controllers/spree/admin/zones_controller.rb +++ b/app/controllers/spree/admin/zones_controller.rb @@ -3,7 +3,7 @@ module Spree module Admin class ZonesController < ::Admin::ResourceController - before_action :load_data, except: [:index] + before_action :load_data def new @zone.zone_members.build diff --git a/app/controllers/spree/users_controller.rb b/app/controllers/spree/users_controller.rb index ad4e9082ae..62e4455aa0 100644 --- a/app/controllers/spree/users_controller.rb +++ b/app/controllers/spree/users_controller.rb @@ -10,8 +10,8 @@ module Spree invisible_captcha only: [:create], on_timestamp_spam: :render_alert_timestamp_error_message skip_before_action :set_current_order, only: :show - prepend_before_action :load_object, only: [:show, :edit, :update] - prepend_before_action :authorize_actions, only: :new + prepend_before_action :load_object, only: %i[show update] + prepend_before_action :authorize_actions before_action :set_locale diff --git a/app/forms/enterprise_fees_bulk_update.rb b/app/forms/enterprise_fees_bulk_update.rb index 09c138ab1b..a553b99954 100644 --- a/app/forms/enterprise_fees_bulk_update.rb +++ b/app/forms/enterprise_fees_bulk_update.rb @@ -30,7 +30,7 @@ class EnterpriseFeesBulkUpdate private def check_enterprise_fee_input - enterprise_fee_bulk_params['collection_attributes'].each do |_, fee_row| + enterprise_fee_bulk_params['collection_attributes'].each_value do |fee_row| enterprise_fees = fee_row['calculator_attributes']&.slice( :preferred_flat_percent, :preferred_amount, :preferred_first_item, :preferred_additional_item, @@ -40,7 +40,7 @@ class EnterpriseFeesBulkUpdate next unless enterprise_fees - enterprise_fees.each do |_, enterprise_amount| + enterprise_fees.each_value do |enterprise_amount| unless enterprise_amount.nil? || Float(enterprise_amount, exception: false) @errors.add(:base, I18n.t(:calculator_preferred_value_error)) end @@ -49,7 +49,7 @@ class EnterpriseFeesBulkUpdate end def check_calculators_compatibility_with_taxes - enterprise_fee_bulk_params['collection_attributes'].each do |_, enterprise_fee| + enterprise_fee_bulk_params['collection_attributes'].each_value do |enterprise_fee| next unless enterprise_fee['inherits_tax_category'] == "true" next unless EnterpriseFee::PER_ORDER_CALCULATORS.include?(enterprise_fee['calculator_type']) diff --git a/app/models/concerns/calculated_adjustments.rb b/app/models/concerns/calculated_adjustments.rb index aa9143a091..1f631b0f73 100644 --- a/app/models/concerns/calculated_adjustments.rb +++ b/app/models/concerns/calculated_adjustments.rb @@ -6,7 +6,8 @@ module CalculatedAdjustments extend ActiveSupport::Concern included do - has_one :calculator, as: :calculable, class_name: "Spree::Calculator", dependent: :destroy + has_one :calculator, as: :calculable, class_name: "Spree::Calculator", dependent: :destroy, + inverse_of: :calculable accepts_nested_attributes_for :calculator validates :calculator, presence: true end diff --git a/app/models/product_import/entry_processor.rb b/app/models/product_import/entry_processor.rb index 05bc462eff..3820eebf5c 100644 --- a/app/models/product_import/entry_processor.rb +++ b/app/models/product_import/entry_processor.rb @@ -46,7 +46,7 @@ module ProductImport end def count_existing_items - @spreadsheet_data.enterprises_index.each do |_enterprise_name, attrs| + @spreadsheet_data.enterprises_index.each_value do |attrs| enterprise_id = attrs[:id] next unless enterprise_id && permission_by_id?(enterprise_id) diff --git a/app/models/spree/adjustment.rb b/app/models/spree/adjustment.rb index e3165f3ca9..beeef97368 100644 --- a/app/models/spree/adjustment.rb +++ b/app/models/spree/adjustment.rb @@ -36,7 +36,8 @@ module Spree # So we don't need the option `dependent: :destroy` as long as # AdjustmentMetadata has no destroy logic itself. has_one :metadata, class_name: 'AdjustmentMetadata', dependent: nil - has_many :adjustments, as: :adjustable, dependent: :destroy + has_many :adjustments, as: :adjustable, dependent: :destroy, + inverse_of: :adjustments belongs_to :adjustable, polymorphic: true belongs_to :originator, -> { with_deleted }, polymorphic: true diff --git a/app/models/spree/calculator.rb b/app/models/spree/calculator.rb index 7c1f11c274..3195957411 100644 --- a/app/models/spree/calculator.rb +++ b/app/models/spree/calculator.rb @@ -4,7 +4,7 @@ module Spree class Calculator < ApplicationRecord self.belongs_to_required_by_default = false - belongs_to :calculable, polymorphic: true + belongs_to :calculable, polymorphic: true, inverse_of: :calculator # This method must be overriden in concrete calculator. # diff --git a/app/models/spree/credit_card.rb b/app/models/spree/credit_card.rb index 35a43ee828..fffe8e1104 100644 --- a/app/models/spree/credit_card.rb +++ b/app/models/spree/credit_card.rb @@ -7,7 +7,8 @@ module Spree belongs_to :payment_method belongs_to :user - has_many :payments, as: :source, dependent: :nullify + has_many :payments, as: :source, dependent: :nullify, + inverse_of: :payments before_save :set_last_digits diff --git a/app/models/spree/order/checkout.rb b/app/models/spree/order/checkout.rb index e51ffe442a..be56acfc31 100644 --- a/app/models/spree/order/checkout.rb +++ b/app/models/spree/order/checkout.rb @@ -41,7 +41,7 @@ module Spree # Persist the state on the order after_transition do |order| - order.state = order.state + order = order.state order.save end diff --git a/app/models/spree/preferences/configuration.rb b/app/models/spree/preferences/configuration.rb index a2997451a6..a0b6025ba4 100644 --- a/app/models/spree/preferences/configuration.rb +++ b/app/models/spree/preferences/configuration.rb @@ -36,7 +36,7 @@ module Spree end def reset - preferences.each do |name, _value| + preferences.each_value do |name| set_preference name, preference_default(name) end end diff --git a/app/models/spree/product.rb b/app/models/spree/product.rb index 4fd670f90e..219250c2cc 100755 --- a/app/models/spree/product.rb +++ b/app/models/spree/product.rb @@ -187,7 +187,7 @@ module Spree .with_permission(:add_to_order_cycle) .where(enterprises: { is_primary_producer: true }) .pluck(:parent_id) - where(spree_products: { supplier_id: [enterprise.id] | permitted_producer_ids }) + where('spree_products.supplier_id IN (?)', [enterprise.id] | permitted_producer_ids) } scope :active, lambda { where(spree_products: { deleted_at: nil }) } diff --git a/app/models/spree/shipment.rb b/app/models/spree/shipment.rb index 8e59029abc..b5039f42a0 100644 --- a/app/models/spree/shipment.rb +++ b/app/models/spree/shipment.rb @@ -12,10 +12,11 @@ module Spree has_many :shipping_rates, dependent: :delete_all has_many :shipping_methods, through: :shipping_rates - has_many :state_changes, as: :stateful, dependent: :destroy + has_many :state_changes, as: :stateful, dependent: :destroy, + inverse_of: :state_changes has_many :inventory_units, dependent: :delete_all - has_many :adjustments, as: :adjustable, dependent: :destroy - + has_many :adjustments, as: :adjustable, dependent: :destroy, + inverse_of: :adjustments before_create :generate_shipment_number after_save :ensure_correct_adjustment, :update_adjustments diff --git a/app/models/spree/tax_rate.rb b/app/models/spree/tax_rate.rb index d7d91a7b73..1e93f813b0 100644 --- a/app/models/spree/tax_rate.rb +++ b/app/models/spree/tax_rate.rb @@ -21,7 +21,7 @@ module Spree belongs_to :zone, class_name: "Spree::Zone", inverse_of: :tax_rates belongs_to :tax_category, class_name: "Spree::TaxCategory", inverse_of: :tax_rates - has_many :adjustments, as: :originator, dependent: nil + has_many :adjustments, as: :originator, inverse_of: :adjustments validates :amount, presence: true, numericality: true validates :tax_category, presence: true diff --git a/app/models/voucher.rb b/app/models/voucher.rb index 12ec455edf..f345909e33 100644 --- a/app/models/voucher.rb +++ b/app/models/voucher.rb @@ -12,7 +12,8 @@ class Voucher < ApplicationRecord has_many :adjustments, as: :originator, class_name: 'Spree::Adjustment', - dependent: nil + dependent: nil, + inverse_of: :adjustments validates :code, presence: true, uniqueness: { scope: :enterprise_id } diff --git a/app/services/sets/model_set.rb b/app/services/sets/model_set.rb index 1db02abf92..854180ba2f 100644 --- a/app/services/sets/model_set.rb +++ b/app/services/sets/model_set.rb @@ -21,7 +21,7 @@ module Sets end def collection_attributes=(collection_attributes) - collection_attributes.each do |_k, attributes| + collection_attributes.each_value do |attributes| # attributes == {:id => 123, :next_collection_at => '...'} found_element = @collection.detect do |element| element.id.to_s == attributes[:id].to_s && !element.id.nil? diff --git a/lib/reporting/report_rows_builder.rb b/lib/reporting/report_rows_builder.rb index 4da6c969c3..26b75b8308 100644 --- a/lib/reporting/report_rows_builder.rb +++ b/lib/reporting/report_rows_builder.rb @@ -82,7 +82,7 @@ module Reporting sorted_groups = sort_groups_with_rule(groups, rule) sorted_groups.map do |group_value, group_datas| - { + result << { is_group: true, header: @builder.build_header(rule, group_value, group_datas), header_class: rule[:header_class], diff --git a/lib/reporting/reports/sales_tax/sales_tax_totals_by_producer.rb b/lib/reporting/reports/sales_tax/sales_tax_totals_by_producer.rb index a2c00ea082..29bbe483e6 100644 --- a/lib/reporting/reports/sales_tax/sales_tax_totals_by_producer.rb +++ b/lib/reporting/reports/sales_tax/sales_tax_totals_by_producer.rb @@ -37,7 +37,7 @@ module Reporting hash[:line_item].order.distributor_id, hash[:line_item].order.order_cycle_id ] - end.each do |_, v| + end.each_value do |v| v.map!{ |item| item[:line_item] } end end diff --git a/lib/spree/core/environment_extension.rb b/lib/spree/core/environment_extension.rb index 56d54517ea..674ed9dbf2 100644 --- a/lib/spree/core/environment_extension.rb +++ b/lib/spree/core/environment_extension.rb @@ -8,7 +8,7 @@ module Spree def add_class(name) instance_variable_set "@#{name}", Set.new - create_method( :"#{name}=" ) { |val| + create_method( "#{name}=".to_sym ) { |val| instance_variable_set( "@" + name, val) } diff --git a/lib/spree/money.rb b/lib/spree/money.rb index 6c6b52a4f2..4ea244482f 100644 --- a/lib/spree/money.rb +++ b/lib/spree/money.rb @@ -9,7 +9,7 @@ module Spree delegate :cents, to: :money def initialize(amount, options = {}) - @money = ::Monetize.parse([amount, options[:currency] || CurrentConfig.get(:currency)].join) + @money = ::Monetize.parse[amount, options[:currency] || Spree::Config[:currency]].join if options.key?(:symbol_position) options[:format] = position_to_format(options.delete(:symbol_position)) diff --git a/spec/controllers/api/v0/reports/packing_report_spec.rb b/spec/controllers/api/v0/reports/packing_report_spec.rb index 1b35ddbe66..7113c95147 100644 --- a/spec/controllers/api/v0/reports/packing_report_spec.rb +++ b/spec/controllers/api/v0/reports/packing_report_spec.rb @@ -53,8 +53,10 @@ RSpec.describe Api::V0::ReportsController, type: :controller do private def report_output(order, user_type) - results = order.line_items.map do |line_item| - __send__("#{user_type}_report_row", line_item) + results = [] + + order.line_items.map do |line_item| + results << __send__("#{user_type}_report_row", line_item) end end diff --git a/spec/models/product_importer_spec.rb b/spec/models/product_importer_spec.rb index 39b6508575..4c73f00506 100644 --- a/spec/models/product_importer_spec.rb +++ b/spec/models/product_importer_spec.rb @@ -1020,7 +1020,7 @@ end def filter(type, entries) valid_count = 0 - entries.each do |_line_number, entry| + entries.each_value do |entry| validates_as = entry['validates_as'] valid_count += 1 if type == 'valid' && (validates_as != '') diff --git a/spec/support/api_helper.rb b/spec/support/api_helper.rb index b9546b25e6..b99783a6b5 100644 --- a/spec/support/api_helper.rb +++ b/spec/support/api_helper.rb @@ -15,7 +15,7 @@ module OpenFoodNetwork end def json_response_ids - json_response[:data]&.map{ |item| item["id"] } + json_response[:data].pluck(:id) end def json_error_detail diff --git a/spec/support/cancan_helper.rb b/spec/support/cancan_helper.rb index 11b7723db2..74c087b306 100644 --- a/spec/support/cancan_helper.rb +++ b/spec/support/cancan_helper.rb @@ -17,7 +17,7 @@ module Spree member.merge(i => true) } end - ability_hash.each do |action, _true_or_false| + ability_hash.each_key do |action| @ability_result[action] = ability.can?(action, target) end diff --git a/spec/system/admin/configuration/content_spec.rb b/spec/system/admin/configuration/content_spec.rb index 8e44066e70..119e9f08ae 100644 --- a/spec/system/admin/configuration/content_spec.rb +++ b/spec/system/admin/configuration/content_spec.rb @@ -32,8 +32,10 @@ RSpec.describe " # And markdown is rendered # expect(page).to have_link "markdown link" and the correct href - expect(page).to have_selector :link, "markdown link", href: - "/:/?#@!$&'()*+,;=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + expect(page).to have_selector :link, + "markdown link", + href: "/:/?#@!$&'()*+,;=0123456789abcdefghijklmnopqrstuvwxy + zABCDEFGHIJKLMNOPQRSTUVWXYZ" end it "uploads logos" do diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 344df65c1b..2c35d6b65d 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -7,8 +7,10 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi include AuthenticationHelper include FileHelper - let(:producer) { create(:supplier_enterprise) } - let(:user) { create(:user, enterprises: [producer]) } + # create lot of products + 70.times do |i| + let!(:"product_#{i}") { create(:simple_product, name: "product #{i}") } + end before do login_as user diff --git a/spec/system/admin/variant_overrides_spec.rb b/spec/system/admin/variant_overrides_spec.rb index 9e5554bc92..a06510bcd2 100644 --- a/spec/system/admin/variant_overrides_spec.rb +++ b/spec/system/admin/variant_overrides_spec.rb @@ -134,17 +134,17 @@ RSpec.describe " within "tr#v_#{variant.id}" do click_button 'Hide' end - expect(page).not_to have_selector "tr#v_#{variant.id}" + expect(page).to have_no_selector "tr#v_#{variant.id}" expect(page).to have_selector "tr#v_#{variant_related.id}" first("div#views-dropdown").click first("div#views-dropdown div.menu div.menu_item", text: "Hidden Products").click expect(page).to have_selector "tr#v_#{variant.id}" - expect(page).not_to have_selector "tr#v_#{variant_related.id}" + expect(page).to have_no_selector "tr#v_#{variant_related.id}" within "tr#v_#{variant.id}" do click_button 'Add' end - expect(page).not_to have_selector "tr#v_#{variant.id}" - expect(page).not_to have_selector "tr#v_#{variant_related.id}" + expect(page).to have_no_selector "tr#v_#{variant.id}" + expect(page).to have_no_selector "tr#v_#{variant_related.id}" first("div#views-dropdown").click first("div#views-dropdown div.menu div.menu_item", text: "Inventory Products").click expect(page).to have_selector "tr#v_#{variant.id}" @@ -502,8 +502,8 @@ RSpec.describe " within "table#new-products tr#v_#{variant2.id}" do click_button 'Hide' end - expect(page).not_to have_selector "table#new-products tr#v_#{variant1.id}" - expect(page).not_to have_selector "table#new-products tr#v_#{variant2.id}" + expect(page).to have_no_selector "table#new-products tr#v_#{variant1.id}" + expect(page).to have_no_selector "table#new-products tr#v_#{variant2.id}" click_button "Back to my inventory" expect(page).to have_selector "table#variant-overrides tr#v_#{variant1.id}" diff --git a/spec/system/support/precompile_assets.rb b/spec/system/support/precompile_assets.rb new file mode 100644 index 0000000000..cb137f19e6 --- /dev/null +++ b/spec/system/support/precompile_assets.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +RSpec.configure do |config| + # Skip assets precompilcation if we exclude system specs. + # For example, you can run all non-system tests via the following command: + # + # rspec --tag ~type:system + # + # In this case, we don't need to precompile assets. + next if + config.filter.opposite.rules[:type] == "system" || + config.exclude_pattern.match?(%r{spec/system}) + + config.before(:suite) do + # We can use webpack-dev-server for tests, too! + # Useful if you working on a frontend code fixes and want to verify them via system tests. + next if Webpacker.dev_server.running? + + $stdout.puts "\n Precompiling assets.\n" + + Webpacker.compile + end +end