From c68aeb4c36dc3ac22bbafed095af3da8d99e04be Mon Sep 17 00:00:00 2001 From: Rob H Date: Wed, 16 Apr 2014 14:54:50 +1000 Subject: [PATCH] Only show orders I am distributing in the API --- .../spree/api/orders_controller_decorator.rb | 2 +- .../spree/api/orders_controller_spec.rb | 55 ++++++++++++++----- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/app/controllers/spree/api/orders_controller_decorator.rb b/app/controllers/spree/api/orders_controller_decorator.rb index 4f3c5c8c77..53e815a5f6 100644 --- a/app/controllers/spree/api/orders_controller_decorator.rb +++ b/app/controllers/spree/api/orders_controller_decorator.rb @@ -7,7 +7,7 @@ Spree::Api::OrdersController.class_eval do before_filter :authorize_read!, :except => [:managed] def managed - @orders = Spree::Order.ransack(params[:q]).result.managed_by(current_api_user).page(params[:page]).per(params[:per_page]) + @orders = Spree::Order.ransack(params[:q]).result.distributed_by_user(current_api_user).page(params[:page]).per(params[:per_page]) respond_with(@orders, default_template: :index) end end \ No newline at end of file diff --git a/spec/controllers/spree/api/orders_controller_spec.rb b/spec/controllers/spree/api/orders_controller_spec.rb index 98534da220..57f04a28f5 100644 --- a/spec/controllers/spree/api/orders_controller_spec.rb +++ b/spec/controllers/spree/api/orders_controller_spec.rb @@ -68,28 +68,57 @@ module Spree end end - context "As a supplier enterprise user" do + context "As an enterprise user" do let(:supplier) { create(:supplier_enterprise) } - let!(:order1) { FactoryGirl.create(:order, state: 'complete', completed_at: Time.now, billing_address: FactoryGirl.create(:address) ) } + let(:distributor1) { create(:distributor_enterprise) } + let(:distributor2) { create(:distributor_enterprise) } + let!(:order1) { FactoryGirl.create(:order, state: 'complete', completed_at: Time.now, distributor: distributor1, billing_address: FactoryGirl.create(:address) ) } let!(:line_item1) { FactoryGirl.create(:line_item, order: order1, product: FactoryGirl.create(:product, supplier: supplier)) } - let!(:line_item2) { FactoryGirl.create(:line_item, order: order1, product: FactoryGirl.create(:product, supplier: FactoryGirl.create(:supplier_enterprise))) } - let(:enterprise_user) do - user = create(:user) + let!(:line_item2) { FactoryGirl.create(:line_item, order: order1, product: FactoryGirl.create(:product, supplier: supplier)) } + let!(:order2) { FactoryGirl.create(:order, state: 'complete', completed_at: Time.now, distributor: distributor2, billing_address: FactoryGirl.create(:address) ) } + let!(:line_item3) { FactoryGirl.create(:line_item, order: order2, product: FactoryGirl.create(:product, supplier: supplier)) } + let(:supplier_user) do + user = create(:user, spree_roles: []) user.enterprise_roles.create(enterprise: supplier) - user.spree_roles = [] + user.save! + user + end + let(:distributor1_user) do + user = create(:user, spree_roles: []) + user.enterprise_roles.create(enterprise: distributor1) + user.save! + user + end + let(:distributor2_user) do + user = create(:user, spree_roles: []) + user.enterprise_roles.create(enterprise: distributor2) user.save! user end - before :each do - stub_authentication! - Spree.user_class.stub :find_by_spree_api_key => enterprise_user - spree_get :managed, { :template => 'bulk_index', :format => :json } + context "producer enterprise" do + before :each do + stub_authentication! + Spree.user_class.stub :find_by_spree_api_key => supplier_user + spree_get :managed, { :template => 'bulk_index', :format => :json } + end + + it "does not display line item for which my enteprise is a supplier" do + json_response.map{ |order| order['line_items'] }.flatten.length.should == 0 + end end - it "returns a list of orders with only managed line items shown" do - json_response.map{ |order| order['line_items'] }.flatten.length.should == 1 - json_response[0]['line_items'][0]['id'].should == line_item1.id + context "hub enterprise" do + before :each do + stub_authentication! + Spree.user_class.stub :find_by_spree_api_key => distributor1_user + spree_get :managed, { :template => 'bulk_index', :format => :json } + binding.pry + end + + it "only displays line items from orders for which my enterprise is a distributor" do + json_response.map{ |order| order['line_items'] }.flatten.map{ |line_item| line_item["id"] }.should == [line_item1.id, line_item2.id] + end end end end