From 25d8ce17374ea91468e5e7f586a20ea2052341ad Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Mon, 27 Feb 2023 15:56:14 +0100 Subject: [PATCH] fix shipping methods related tests --- spec/services/order_cycle_form_spec.rb | 64 +++++++++++++++----------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/spec/services/order_cycle_form_spec.rb b/spec/services/order_cycle_form_spec.rb index d673d300c3..2d0cbf46f4 100644 --- a/spec/services/order_cycle_form_spec.rb +++ b/spec/services/order_cycle_form_spec.rb @@ -334,19 +334,21 @@ describe OrderCycleForm do order_cycle.coordinator.users.first ) - expect(form.save).to be true - expect(order_cycle.distributor_payment_methods).to eq [distributor_payment_method_i] + expect{ form.save }.not_to change{ + order_cycle.distributor_payment_methods.pluck(:id) + }.from([distributor_payment_method_i.id]) end end end context "updating shipping methods" do context "and it's valid" do - let(:distributor){ create(:distributor_enterprise) } - let(:shipping_method){ create(:shipping_method, distributors: [distributor]) } - let(:shipping_method2){ create(:shipping_method, distributors: [distributor]) } - let(:distributor_shipping_method){ shipping_method.distributor_shipping_methods.first } - let(:distributor_shipping_method2){ shipping_method2.distributor_shipping_methods.first } + let!(:distributor){ create(:distributor_enterprise) } + let!(:shipping_method){ create(:shipping_method, distributors: [distributor]) } + let!(:shipping_method2){ create(:shipping_method, distributors: [distributor]) } + let!(:distributor_shipping_method){ distributor.distributor_shipping_methods.first.id } + let!(:distributor_shipping_method2){ distributor.distributor_shipping_methods.second.id } + let(:supplier){ create(:supplier_enterprise) } context "the submitter is a coordinator" do it "saves the changes" do @@ -354,12 +356,13 @@ describe OrderCycleForm do form = OrderCycleForm.new( order_cycle, - { selected_distributor_shipping_method_ids: [distributor_shipping_method.id] }, + { selected_distributor_shipping_method_ids: [distributor_shipping_method] }, order_cycle.coordinator.users.first ) - expect(form.save).to be true - expect(order_cycle.distributor_shipping_methods).to eq [distributor_shipping_method] + expect{ form.save }.to change{ order_cycle.distributor_shipping_methods.pluck(:id) } + .from([distributor_shipping_method, distributor_shipping_method2]) + .to([distributor_shipping_method]) end end context "submitter is a supplier" do @@ -369,14 +372,13 @@ describe OrderCycleForm do form = OrderCycleForm.new( order_cycle, - { selected_distributor_shipping_method_ids: [distributor_shipping_method.id] }, + { selected_distributor_shipping_method_ids: [distributor_shipping_method] }, supplier.users.first ) - expect(form).not_to receive(:attach_selected_distributor_shipping_methods) - expect(order_cycle.distributor_shipping_methods).to match_array [ - distributor_shipping_method, distributor_shipping_method2 - ] + expect{ form.save }.not_to change{ + order_cycle.distributor_shipping_methods.pluck(:id) + }.from([distributor_shipping_method, distributor_shipping_method2]) end end context "submitter is an admin" do @@ -385,12 +387,13 @@ describe OrderCycleForm do form = OrderCycleForm.new( order_cycle, - { selected_distributor_shipping_method_ids: [distributor_shipping_method.id] }, + { selected_distributor_shipping_method_ids: [distributor_shipping_method] }, create(:admin_user) ) - expect(form.save).to be true - expect(order_cycle.distributor_shipping_methods).to eq [distributor_shipping_method] + expect{ form.save }.to change{ order_cycle.distributor_shipping_methods.pluck(:id) } + .from([distributor_shipping_method, distributor_shipping_method2]) + .to([distributor_shipping_method]) end end context "submitter is a distributor" do @@ -400,29 +403,38 @@ describe OrderCycleForm do form = OrderCycleForm.new( order_cycle, - { selected_distributor_shipping_method_ids: [distributor_shipping_method.id] }, + { selected_distributor_shipping_method_ids: [distributor_shipping_method] }, distributor.users.first ) - expect(form.save).to be true - expect(order_cycle.distributor_shipping_methods).to eq [distributor_shipping_method] + expect{ form.save }.to change{ + order_cycle.distributor_shipping_methods.pluck(:id) + }.from([ + distributor_shipping_method, distributor_shipping_method2 + ]).to([distributor_shipping_method]) end end context "can't update other distributors' shipping methods" do - let(:distributor2){ create(:distributor_enterprise) } + let!(:distributor2){ create(:distributor_enterprise) } + let!(:shipping_method3){ create(:shipping_method, distributors: [distributor2]) } + let!(:distributor_shipping_method3){ + distributor2.distributor_shipping_methods.first.id + } it "doesn't save the changes" do order_cycle = create(:distributor_order_cycle, distributors: [distributor, distributor2]) form = OrderCycleForm.new( order_cycle, - { selected_distributor_shipping_method_ids: [distributor_shipping_method.id] }, + { selected_distributor_shipping_method_ids: [distributor_shipping_method] }, distributor2.users.first ) - expect(form).not_to receive(:attach_selected_distributor_shipping_methods) - expect(order_cycle.distributor_shipping_methods).to match_array [ - distributor_shipping_method, distributor_shipping_method2 + expect{ form.save }.not_to change{ + order_cycle.distributor_shipping_methods.pluck(:id) + }.from [ + distributor_shipping_method, distributor_shipping_method2, + distributor_shipping_method3 ] end end