OrderCycle#distributor_shipping_methods should return all attachable ones by default per distributor, not per all distributors

This commit is contained in:
Cillian O'Ruanaidh
2022-09-09 15:23:20 +01:00
committed by Filipe
parent 7e40ad39cb
commit 5207dbf8c6
2 changed files with 38 additions and 4 deletions

View File

@@ -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

View File

@@ -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