From 628d87b69a18249805ddbd1a2e45bed18385c985 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Tue, 26 Aug 2014 15:00:13 +1000 Subject: [PATCH] Add to OC permission allows adding distributors to order cycle --- app/helpers/order_cycles_helper.rb | 6 +++++- app/views/admin/order_cycles/_form.html.haml | 2 +- spec/features/admin/order_cycles_spec.rb | 13 ++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/app/helpers/order_cycles_helper.rb b/app/helpers/order_cycles_helper.rb index e8e51815a6..4dc13be4fa 100644 --- a/app/helpers/order_cycles_helper.rb +++ b/app/helpers/order_cycles_helper.rb @@ -8,7 +8,11 @@ module OrderCyclesHelper end def coordinating_enterprises - Enterprise.is_distributor.managed_by(spree_current_user).by_name + order_cycle_hub_enterprises + end + + def order_cycle_hub_enterprises + OpenFoodNetwork::Permissions.new(spree_current_user).order_cycle_enterprises.is_distributor.by_name end def order_cycle_local_remote_class(distributor, order_cycle) diff --git a/app/views/admin/order_cycles/_form.html.haml b/app/views/admin/order_cycles/_form.html.haml index aac9f07d6b..e859374a3b 100644 --- a/app/views/admin/order_cycles/_form.html.haml +++ b/app/views/admin/order_cycles/_form.html.haml @@ -50,7 +50,7 @@ %tr.products{'ng-show' => 'exchange.showProducts'} = render 'exchange_distributed_products_form' -= select_tag :new_distributor_id, options_from_collection_for_select(Enterprise.is_distributor.managed_by(spree_current_user).by_name, :id, :name), {'ng-model' => 'new_distributor_id'} += select_tag :new_distributor_id, options_from_collection_for_select(order_cycle_hub_enterprises, :id, :name), {'ng-model' => 'new_distributor_id'} = f.submit 'Add distributor', 'ng-click' => 'addDistributor($event)' .actions diff --git a/spec/features/admin/order_cycles_spec.rb b/spec/features/admin/order_cycles_spec.rb index 9dee3ebd87..368eb0b82a 100644 --- a/spec/features/admin/order_cycles_spec.rb +++ b/spec/features/admin/order_cycles_spec.rb @@ -441,11 +441,16 @@ feature %q{ let!(:supplier_permitted) { create(:supplier_enterprise, name: 'Permitted supplier') } let!(:distributor_managed) { create(:distributor_enterprise, name: 'Managed distributor') } let!(:distributor_unmanaged) { create(:distributor_enterprise, name: 'Unmanaged Distributor') } + let!(:distributor_permitted) { create(:distributor_enterprise, name: 'Permitted distributor') } let!(:distributor_managed_fee) { create(:enterprise_fee, enterprise: distributor_managed, name: 'Managed distributor fee') } let!(:supplier_permitted_relationship) do create(:enterprise_relationship, parent: supplier_permitted, child: supplier_managed, permissions_list: [:add_to_order_cycle]) end + let!(:distributor_permitted_relationship) do + create(:enterprise_relationship, parent: distributor_permitted, child: distributor_managed, + permissions_list: [:add_to_order_cycle]) + end before do product = create(:product, supplier: supplier_managed) @@ -493,6 +498,8 @@ feature %q{ select 'Managed distributor', from: 'new_distributor_id' click_button 'Add distributor' + select 'Permitted distributor', from: 'new_distributor_id' + click_button 'Add distributor' # Should only have suppliers / distributors listed which the user is managing or # has E2E permission to add products to order cycles @@ -511,13 +518,13 @@ feature %q{ end scenario "editing an order cycle" do - oc = create(:simple_order_cycle, { suppliers: [supplier_managed, supplier_permitted, supplier_unmanaged], coordinator: supplier_managed, distributors: [distributor_managed, distributor_unmanaged], name: 'Order Cycle 1' } ) + oc = create(:simple_order_cycle, { suppliers: [supplier_managed, supplier_permitted, supplier_unmanaged], coordinator: supplier_managed, distributors: [distributor_managed, distributor_permitted, distributor_unmanaged], name: 'Order Cycle 1' } ) visit edit_admin_order_cycle_path(oc) # I should not see exchanges for supplier_unmanaged or distributor_unmanaged page.all('tr.supplier').count.should == 2 - page.all('tr.distributor').count.should == 1 + page.all('tr.distributor').count.should == 2 # When I save, then those exchanges should remain click_button 'Update' @@ -526,7 +533,7 @@ feature %q{ oc.reload oc.suppliers.sort.should == [supplier_managed, supplier_permitted, supplier_unmanaged].sort oc.coordinator.should == supplier_managed - oc.distributors.sort.should == [distributor_managed, distributor_unmanaged].sort + oc.distributors.sort.should == [distributor_managed, distributor_permitted, distributor_unmanaged].sort end scenario "cloning an order cycle" do