Scoping old generalised order cycle helper methods to a specific order cycle

This commit is contained in:
Rob Harrington
2015-03-25 10:46:32 +11:00
parent 35b27fcfd2
commit d115ef5f7e
5 changed files with 29 additions and 31 deletions

View File

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

View File

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

View File

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

View File

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

View File

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