diff --git a/spec/controllers/spree/admin/shipping_methods_controller_spec.rb b/spec/controllers/spree/admin/shipping_methods_controller_spec.rb index f4e0974a76..531d01c11e 100644 --- a/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +++ b/spec/controllers/spree/admin/shipping_methods_controller_spec.rb @@ -4,6 +4,7 @@ describe Spree::Admin::ShippingMethodsController, type: :controller do include AuthenticationWorkflow describe "#update" do + let(:shipping_method) { create(:shipping_method) } let(:params) { { id: shipping_method.id, @@ -15,19 +16,63 @@ describe Spree::Admin::ShippingMethodsController, type: :controller do } } - describe "flat rate calculator details" do - let(:shipping_method) { create(:shipping_method_with, :flat_rate) } + before { login_as_admin } - it "updates preferred_amount and preferred_currency" do - login_as_admin - params[:shipping_method][:calculator_attributes][:preferred_amount] = 123 - params[:shipping_method][:calculator_attributes][:preferred_currency] = "EUR" + it "updates preferred_amount and preferred_currency of a FlatRate calculator" do + shipping_method.calculator = create(:calculator_flat_rate, calculable: shipping_method) + params[:shipping_method][:calculator_attributes][:preferred_amount] = 123 + params[:shipping_method][:calculator_attributes][:preferred_currency] = "EUR" - spree_post :update, params + spree_post :update, params - expect(shipping_method.reload.calculator.preferred_amount).to eq 123 - expect(shipping_method.reload.calculator.preferred_currency).to eq "EUR" - end + expect(shipping_method.reload.calculator.preferred_amount).to eq 123 + expect(shipping_method.reload.calculator.preferred_currency).to eq "EUR" + end + + it "updates preferred_per_kg of a Weight calculator" do + shipping_method.calculator = create(:weight_calculator, calculable: shipping_method) + params[:shipping_method][:calculator_attributes][:preferred_per_kg] = 10 + + spree_post :update, params + + expect(shipping_method.reload.calculator.preferred_per_kg).to eq 10 + end + + it "updates preferred_flat_percent of a FlatPercentPerItem calculator" do + shipping_method.calculator = Calculator::FlatPercentPerItem.new(preferred_flat_percent: 20, + + calculable: shipping_method) + params[:shipping_method][:calculator_attributes][:preferred_flat_percent] = 30 + + spree_post :update, params + + expect(shipping_method.reload.calculator.preferred_flat_percent).to eq 30 + end + + it "updates details of a FlexiRate calculator" do + shipping_method.calculator = Spree::Calculator::FlexiRate.new(calculable: shipping_method) + params[:shipping_method][:calculator_attributes][:preferred_first_item] = 10 + params[:shipping_method][:calculator_attributes][:preferred_additional_item] = 20 + params[:shipping_method][:calculator_attributes][:preferred_max_items] = 30 + + spree_post :update, params + + expect(shipping_method.reload.calculator.preferred_first_item).to eq 10 + expect(shipping_method.reload.calculator.preferred_additional_item).to eq 20 + expect(shipping_method.reload.calculator.preferred_max_items).to eq 30 + end + + it "updates details of a PriceSack calculator" do + shipping_method.calculator = Spree::Calculator::PriceSack.new(calculable: shipping_method) + params[:shipping_method][:calculator_attributes][:preferred_minimal_amount] = 10 + params[:shipping_method][:calculator_attributes][:preferred_normal_amount] = 20 + params[:shipping_method][:calculator_attributes][:preferred_discount_amount] = 30 + + spree_post :update, params + + expect(shipping_method.reload.calculator.preferred_minimal_amount).to eq 10 + expect(shipping_method.reload.calculator.preferred_normal_amount).to eq 20 + expect(shipping_method.reload.calculator.preferred_discount_amount).to eq 30 end end