Merge pull request #9756 from vsmay98/8249-fix-snail-for-all-shipping-method-fee

Fix snail issue for all shipping method fees
This commit is contained in:
jibees
2022-10-20 17:31:24 +02:00
committed by GitHub
2 changed files with 26 additions and 10 deletions

View File

@@ -95,11 +95,20 @@ module Spree
end
def check_shipping_fee_input
shipping_amount = permitted_resource_params.dig('calculator_attributes', 'preferred_amount')
shipping_fees = permitted_resource_params['calculator_attributes']&.slice(
:preferred_flat_percent, :preferred_amount,
:preferred_first_item, :preferred_additional_item,
:preferred_minimal_amount, :preferred_normal_amount,
:preferred_discount_amount, :preferred_per_unit
)
unless shipping_amount.nil? || Float(shipping_amount, exception: false)
flash[:error] = I18n.t(:calculator_preferred_value_error)
return redirect_to location_after_save
return unless shipping_fees
shipping_fees.each 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
end
end
end
end

View File

@@ -31,14 +31,21 @@ describe Spree::Admin::ShippingMethodsController, type: :controller do
expect(shipping_method.reload.calculator.preferred_currency).to eq "EUR"
end
it "diplay error message on update if preferred_amount input is invalid" do
shipping_method.calculator = create(:calculator_flat_rate, calculable: shipping_method)
params[:shipping_method][:calculator_attributes][:preferred_amount] = "\'20.0'"
%i[
preferred_flat_percent preferred_amount
preferred_first_item preferred_additional_item
preferred_minimal_amount preferred_normal_amount
preferred_discount_amount preferred_per_unit
].each do |shipping_amount|
it "diplay error message on update if #{shipping_amount} input is invalid" do
shipping_method.calculator = create(:calculator_flat_rate, calculable: shipping_method)
params[:shipping_method][:calculator_attributes][shipping_amount] = "\'20.0'"
spree_post :update, params
spree_post :update, params
expect(flash[:error]).to match I18n.t(:calculator_preferred_value_error)
expect(response).to redirect_to spree.edit_admin_shipping_method_path(shipping_method)
expect(flash[:error]).to match I18n.t(:calculator_preferred_value_error)
expect(response).to redirect_to spree.edit_admin_shipping_method_path(shipping_method)
end
end
it "updates preferred_per_unit of a Weight calculator" do