From d115ef5f7ea13ad9802862eb965426d27e6435a4 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Wed, 25 Mar 2015 10:46:32 +1100 Subject: [PATCH] Scoping old generalised order cycle helper methods to a specific order cycle --- .../admin/order_cycles_controller.rb | 8 +++--- app/helpers/order_cycles_helper.rb | 26 +++++++++---------- app/views/admin/order_cycles/_form.html.haml | 6 ++--- .../order_cycles/set_coordinator.html.haml | 2 +- spec/helpers/order_cycles_helper_spec.rb | 18 ++++++------- 5 files changed, 29 insertions(+), 31 deletions(-) diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb index 20c844fe96..efb32f2483 100644 --- a/app/controllers/admin/order_cycles_controller.rb +++ b/app/controllers/admin/order_cycles_controller.rb @@ -31,7 +31,7 @@ module Admin respond_to do |format| if @order_cycle.save - OpenFoodNetwork::OrderCycleFormApplicator.new(@order_cycle, order_cycle_permitted_enterprises).go! + OpenFoodNetwork::OrderCycleFormApplicator.new(@order_cycle, permitted_enterprises_for(@order_cycle)).go! flash[:notice] = 'Your order cycle has been created.' format.html { redirect_to admin_order_cycles_path } @@ -48,7 +48,7 @@ module Admin respond_to do |format| if @order_cycle.update_attributes(params[:order_cycle]) - OpenFoodNetwork::OrderCycleFormApplicator.new(@order_cycle, order_cycle_permitted_enterprises).go! + OpenFoodNetwork::OrderCycleFormApplicator.new(@order_cycle, permitted_enterprises_for(@order_cycle)).go! flash[:notice] = 'Your order cycle has been updated.' format.html { redirect_to admin_order_cycles_path } @@ -93,11 +93,11 @@ module Admin end def require_coordinator - if params[:coordinator_id] && @order_cycle.coordinator = order_cycle_coordinating_enterprises.find_by_id(params[:coordinator_id]) + if params[:coordinator_id] && @order_cycle.coordinator = permitted_coordinating_enterprises_for(@order_cycle).find_by_id(params[:coordinator_id]) return end - available_coordinators = order_cycle_coordinating_enterprises.select(&:confirmed?) + available_coordinators = permitted_coordinating_enterprises_for(@order_cycle).select(&:confirmed?) case available_coordinators.count when 0 flash[:error] = "None of your enterprises have permission to coordinate an order cycle" diff --git a/app/helpers/order_cycles_helper.rb b/app/helpers/order_cycles_helper.rb index 8dc887e99e..39727bbddb 100644 --- a/app/helpers/order_cycles_helper.rb +++ b/app/helpers/order_cycles_helper.rb @@ -3,32 +3,32 @@ module OrderCyclesHelper @current_order_cycle ||= current_order(false).andand.order_cycle end - def order_cycle_permitted_enterprises - OpenFoodNetwork::Permissions.new(spree_current_user).order_cycle_enterprises + def permitted_enterprises_for(order_cycle) + OpenFoodNetwork::Permissions.new(spree_current_user).order_cycle_enterprises_for(order_cycle: order_cycle) end - def order_cycle_producer_enterprises - order_cycle_permitted_enterprises.is_primary_producer.by_name + def permitted_producer_enterprises_for(order_cycle) + permitted_enterprises_for(order_cycle).is_primary_producer.by_name end - def order_cycle_producer_enterprise_options - validated_enterprise_options order_cycle_producer_enterprises, confirmed: true + def permitted_producer_enterprise_options_for(order_cycle) + validated_enterprise_options permitted_producer_enterprises_for(order_cycle), confirmed: true end - def order_cycle_coordinating_enterprises + def permitted_coordinating_enterprises_for(order_cycle) Enterprise.managed_by(spree_current_user).is_distributor.by_name end - def order_cycle_coordinating_enterprise_options - validated_enterprise_options order_cycle_coordinating_enterprises, confirmed: true + def permitted_coordinating_enterprise_options_for(order_cycle) + validated_enterprise_options permitted_coordinating_enterprises_for(order_cycle), confirmed: true end - def order_cycle_hub_enterprises - order_cycle_permitted_enterprises.is_hub.by_name + def permitted_hub_enterprises_for(order_cycle) + permitted_enterprises_for(order_cycle).is_hub.by_name end - def order_cycle_hub_enterprise_options - validated_enterprise_options order_cycle_hub_enterprises, confirmed: true, shipping_and_payment_methods: true + def permitted_hub_enterprise_options_for(order_cycle) + validated_enterprise_options permitted_hub_enterprises_for(order_cycle), confirmed: true, shipping_and_payment_methods: true end def order_cycle_status_class(order_cycle) diff --git a/app/views/admin/order_cycles/_form.html.haml b/app/views/admin/order_cycles/_form.html.haml index 387b2627ec..489055459b 100644 --- a/app/views/admin/order_cycles/_form.html.haml +++ b/app/views/admin/order_cycles/_form.html.haml @@ -16,7 +16,7 @@ = render 'exchange_supplied_products_form' - if spree_current_user.enterprises.include? @order_cycle.coordinator - = select_tag :new_supplier_id, options_for_select(order_cycle_producer_enterprise_options), {'ng-model' => 'new_supplier_id'} + = select_tag :new_supplier_id, options_for_select(permitted_producer_enterprise_options_for(@order_cycle)), {'ng-model' => 'new_supplier_id'} = f.submit 'Add supplier', 'ng-click' => 'addSupplier($event)' @@ -24,7 +24,7 @@ %h2 Coordinator -if spree_current_user.enterprises.include? @order_cycle.coordinator = f.label :coordinator_id, 'Coordinator' - = f.select :coordinator_id, order_cycle_coordinating_enterprise_options, { include_blank: true }, {'ng-model' => 'order_cycle.coordinator_id', 'ofn-on-change' => 'order_cycle.coordinator_fees = []', 'required' => true} + = f.select :coordinator_id, permitted_coordinating_enterprise_options_for(@order_cycle), { include_blank: true }, {'ng-model' => 'order_cycle.coordinator_id', 'ofn-on-change' => 'order_cycle.coordinator_fees = []', 'required' => true} = render 'coordinator_fees', f: f - else = @order_cycle.coordinator.name @@ -45,7 +45,7 @@ = render 'exchange_distributed_products_form' - if spree_current_user.enterprises.include? @order_cycle.coordinator - = select_tag :new_distributor_id, options_for_select(order_cycle_hub_enterprise_options), {'ng-model' => 'new_distributor_id'} + = select_tag :new_distributor_id, options_for_select(permitted_hub_enterprise_options_for(@order_cycle)), {'ng-model' => 'new_distributor_id'} = f.submit 'Add distributor', 'ng-click' => 'addDistributor($event)' .actions diff --git a/app/views/admin/order_cycles/set_coordinator.html.haml b/app/views/admin/order_cycles/set_coordinator.html.haml index ebf0cffbb8..f2663cbfd2 100644 --- a/app/views/admin/order_cycles/set_coordinator.html.haml +++ b/app/views/admin/order_cycles/set_coordinator.html.haml @@ -7,7 +7,7 @@ .two.columns.alpha   .ten.columns - = select_tag :coordinator_id, options_for_select(order_cycle_coordinating_enterprise_options), { 'required' => true, class: 'select2 fullwidth'} + = select_tag :coordinator_id, options_for_select(permitted_coordinating_enterprise_options_for(@order_cycle)), { 'required' => true, class: 'select2 fullwidth'} .two.columns.alpha = f.submit "Continue >" diff --git a/spec/helpers/order_cycles_helper_spec.rb b/spec/helpers/order_cycles_helper_spec.rb index 0e1ea42121..6841889313 100644 --- a/spec/helpers/order_cycles_helper_spec.rb +++ b/spec/helpers/order_cycles_helper_spec.rb @@ -1,46 +1,44 @@ require 'spec_helper' describe OrderCyclesHelper do + let(:oc) { double(:order_cycle) } + describe "finding producer enterprise options" do before do - helper.stub(:order_cycle_producer_enterprises) { "enterprise list" } + helper.stub(:permitted_producer_enterprises_for) { "enterprise list" } end it "asks for a validation option list" do expect(helper).to receive(:validated_enterprise_options).with("enterprise list", {confirmed: true}) - helper.order_cycle_producer_enterprise_options + helper.permitted_producer_enterprise_options_for(oc) end end describe "finding coodinator enterprise options" do before do - helper.stub(:order_cycle_coordinating_enterprises) { "enterprise list" } + helper.stub(:permitted_coordinating_enterprises_for) { "enterprise list" } end it "asks for a validation option list" do expect(helper).to receive(:validated_enterprise_options).with("enterprise list", {confirmed: true}) - helper.order_cycle_coordinating_enterprise_options + helper.permitted_coordinating_enterprise_options_for(oc) end end describe "finding hub enterprise options" do before do - helper.stub(:order_cycle_hub_enterprises) { "enterprise list" } + helper.stub(:permitted_hub_enterprises_for) { "enterprise list" } end it "asks for a validation option list" do expect(helper).to receive(:validated_enterprise_options).with("enterprise list", {confirmed: true, shipping_and_payment_methods: true}) - helper.order_cycle_hub_enterprise_options + helper.permitted_hub_enterprise_options_for(oc) end end describe "building a validated enterprise list" do let(:e) { create(:distributor_enterprise, name: 'enterprise') } - before do - helper.stub(:order_cycle_permitted_enterprises) { Enterprise.where(id: e.id) } - end - it "returns enterprises without shipping methods as disabled" do create(:payment_method, distributors: [e]) expect(helper.send(:validated_enterprise_options, [e], shipping_and_payment_methods: true))