mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-02 21:57:17 +00:00
Merge pull request #11079 from abdellani/fix-distributors-listing-on-checkout-options
filter distributors before listing on checkout options
This commit is contained in:
@@ -36,6 +36,13 @@ module OrderCyclesHelper
|
||||
shipping_and_payment_methods: true
|
||||
end
|
||||
|
||||
def distributors_with_editable_shipping_and_payment_methods(order_cycle)
|
||||
return order_cycle.distributors if Enterprise
|
||||
.managed_by(spree_current_user).exists?(order_cycle.coordinator.id)
|
||||
|
||||
order_cycle.distributors.managed_by(spree_current_user)
|
||||
end
|
||||
|
||||
def order_cycle_status_class(order_cycle)
|
||||
if order_cycle.undated?
|
||||
'undated'
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
%th{ colspan: 2 }
|
||||
= t('.shipping_methods')
|
||||
= hidden_field_tag "order_cycle[selected_distributor_shipping_method_ids][]", ""
|
||||
- @order_cycle.distributors.each do |distributor|
|
||||
- distributors_with_editable_shipping_and_payment_methods(@order_cycle).each do |distributor|
|
||||
- distributor_shipping_methods = @order_cycle.attachable_distributor_shipping_methods.where("distributor_id = ?", distributor.id).includes(:shipping_method)
|
||||
%tr{ class: "distributor-#{distributor.id}-shipping-methods", "data-controller": "checked" }
|
||||
%td.text-center
|
||||
@@ -50,7 +50,7 @@
|
||||
%th{ colspan: 2 }
|
||||
= t('.payment_methods')
|
||||
= hidden_field_tag "order_cycle[selected_distributor_payment_method_ids][]", ""
|
||||
- @order_cycle.distributors.each do |distributor|
|
||||
- distributors_with_editable_shipping_and_payment_methods(@order_cycle).each do |distributor|
|
||||
- distributor_payment_methods = @order_cycle.attachable_distributor_payment_methods.where("distributor_id = ?", distributor.id).includes(:payment_method)
|
||||
%tr{ class: "distributor-#{distributor.id}-payment-methods", "data-controller": "checked" }
|
||||
%td.text-center
|
||||
|
||||
@@ -92,4 +92,50 @@ describe OrderCyclesHelper, type: :helper do
|
||||
expect(helper.pickup_time(oc2)).to eq("turtles")
|
||||
end
|
||||
end
|
||||
|
||||
describe "distibutors that have editable shipping/payment methods" do
|
||||
let(:result) {
|
||||
helper.distributors_with_editable_shipping_and_payment_methods(order_cycle)
|
||||
}
|
||||
let(:order_cycle) {
|
||||
create(
|
||||
:simple_order_cycle,
|
||||
coordinator:, suppliers: [supplier], distributors: [hub1, hub2],
|
||||
)
|
||||
}
|
||||
let(:hub1) { create(:distributor_enterprise, name: 'hub1') }
|
||||
let(:hub2) { create(:distributor_enterprise, name: 'hub2') }
|
||||
let(:supplier){ create(:supplier_enterprise, name: 'supplier') }
|
||||
let(:coordinator){ create(:distributor_enterprise, name: 'coordinator') }
|
||||
|
||||
context 'current user is a coordinator' do
|
||||
before do
|
||||
allow(helper).to receive(:spree_current_user).and_return coordinator.owner
|
||||
end
|
||||
|
||||
it 'returns all distributors' do
|
||||
expect(result).to match_array [hub1, hub2]
|
||||
end
|
||||
end
|
||||
|
||||
context 'current user is a producer' do
|
||||
before do
|
||||
allow(helper).to receive(:spree_current_user).and_return supplier.owner
|
||||
end
|
||||
|
||||
it "doesn't return any distributors" do
|
||||
expect(result).to eq []
|
||||
end
|
||||
end
|
||||
|
||||
context 'current user is a hub' do
|
||||
before do
|
||||
allow(helper).to receive(:spree_current_user).and_return hub1.owner
|
||||
end
|
||||
|
||||
it "returns only the hubs of the current user" do
|
||||
expect(result).to eq [hub1]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user