mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-15 23:57:48 +00:00
OrderCycle#distributor_shipping_methods should return all attachable ones by default per distributor, not per all distributors
This commit is contained in:
committed by
Filipe
parent
7e40ad39cb
commit
5207dbf8c6
@@ -294,10 +294,15 @@ class OrderCycle < ApplicationRecord
|
||||
end
|
||||
|
||||
def distributor_shipping_methods
|
||||
if simple? || selected_distributor_shipping_methods.none?
|
||||
if simple?
|
||||
attachable_distributor_shipping_methods
|
||||
else
|
||||
selected_distributor_shipping_methods
|
||||
attachable_distributor_shipping_methods.reject do |distributor_shipping_method|
|
||||
selected_distributor_shipping_methods.
|
||||
map(&:distributor_id).
|
||||
include?(distributor_shipping_method.distributor_id) &&
|
||||
!selected_distributor_shipping_methods.include?(distributor_shipping_method)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -672,8 +672,8 @@ describe OrderCycle do
|
||||
context "distributor order cycle i.e. non-simple" do
|
||||
let(:oc) { create(:distributor_order_cycle, distributors: [distributor]) }
|
||||
|
||||
it "returns all attachable distributor shipping methods if no preferred shipping methods have
|
||||
been chosen" do
|
||||
it "returns all attachable distributor shipping methods if no distributor shipping methods
|
||||
have been selected specifically" do
|
||||
distributor_shipping_method = create(
|
||||
:shipping_method,
|
||||
distributors: [distributor]
|
||||
@@ -697,6 +697,35 @@ describe OrderCycle do
|
||||
|
||||
expect(oc.distributor_shipping_methods).to eq [distributor_shipping_method_ii]
|
||||
end
|
||||
|
||||
context "with multiple distributors" do
|
||||
let(:other_distributor) { create(:distributor_enterprise) }
|
||||
let(:oc) { create(:distributor_order_cycle, distributors: [distributor, other_distributor]) }
|
||||
|
||||
it "returns all attachable distributor shipping methods for a distributor if no distributor
|
||||
shipping methods have been selected specifically for that distributor, even if
|
||||
distributor shipping methods have been selected specifically for a different distributor
|
||||
on the order cycle" do
|
||||
distributor_shipping_method = create(
|
||||
:shipping_method,
|
||||
distributors: [distributor]
|
||||
).distributor_shipping_methods.first
|
||||
other_distributor_shipping_method_i = create(
|
||||
:shipping_method,
|
||||
distributors: [other_distributor]
|
||||
).distributor_shipping_methods.first
|
||||
other_distributor_shipping_method_ii = create(
|
||||
:shipping_method,
|
||||
distributors: [other_distributor]
|
||||
).distributor_shipping_methods.first
|
||||
oc.selected_distributor_shipping_methods << other_distributor_shipping_method_i
|
||||
|
||||
expect(oc.distributor_shipping_methods).to eq [
|
||||
distributor_shipping_method,
|
||||
other_distributor_shipping_method_i
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user