mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-26 01:33:22 +00:00
fix shipping methods related tests
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user