From c18c1c67d11c307d76fa0eb7174e3708b2870541 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Sun, 25 Sep 2016 17:28:57 +1000 Subject: [PATCH] Adding visibility permissions for standing orders --- lib/open_food_network/permissions.rb | 7 +++++++ spec/factories.rb | 6 +++--- spec/lib/open_food_network/permissions_spec.rb | 11 +++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/open_food_network/permissions.rb b/lib/open_food_network/permissions.rb index e5101dddd9..46b73b310c 100644 --- a/lib/open_food_network/permissions.rb +++ b/lib/open_food_network/permissions.rb @@ -135,6 +135,13 @@ module OpenFoodNetwork Schedule.joins(:order_cycles).where(order_cycles: { id: OrderCycle.accessible_by(@user).pluck(:id) }).select("DISTINCT schedules.*") end + def editable_standing_orders + StandingOrder.where('standing_orders.shop_id IN (?)', managed_enterprises) + end + + def visible_standing_orders + editable_standing_orders + end private diff --git a/spec/factories.rb b/spec/factories.rb index a52f9882bd..f38fa6655d 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -140,10 +140,10 @@ FactoryGirl.define do factory :standing_order, :class => StandingOrder do shop { FactoryGirl.create :enterprise } - schedule + schedule { FactoryGirl.create(:schedule, order_cycles: [create(:simple_order_cycle, coordinator: shop)]) } customer { create(:customer, enterprise: shop) } - payment_method - shipping_method + payment_method { create(:payment_method, distributors: [shop]) } + shipping_method { create(:shipping_method, distributors: [shop]) } begins_at { 1.month.ago } end diff --git a/spec/lib/open_food_network/permissions_spec.rb b/spec/lib/open_food_network/permissions_spec.rb index 5e96a22080..08865033dc 100644 --- a/spec/lib/open_food_network/permissions_spec.rb +++ b/spec/lib/open_food_network/permissions_spec.rb @@ -394,5 +394,16 @@ module OpenFoodNetwork end end end + + describe "finding visible standing orders" do + let!(:so1) { create(:standing_order) } + let!(:so2) { create(:standing_order) } + + it "returns standing orders placed with managed shops" do + expect(permissions).to receive(:managed_enterprises) { [so1.shop] } + + expect(permissions.visible_standing_orders).to eq [so1] + end + end end end