From 53436024e258282946c54786b7ffbfa8805d4c91 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 3 May 2018 16:23:15 +1000 Subject: [PATCH] Compile Orders & Fulfillment report only on search --- .../spree/admin/reports_controller_decorator.rb | 2 +- .../orders_and_fulfillments_report.rb | 4 +++- .../spree/admin/reports_controller_spec.rb | 12 ++++++------ .../orders_and_fulfillments_report_spec.rb | 6 +++--- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/controllers/spree/admin/reports_controller_decorator.rb b/app/controllers/spree/admin/reports_controller_decorator.rb index c8046f439a..ad63693f14 100644 --- a/app/controllers/spree/admin/reports_controller_decorator.rb +++ b/app/controllers/spree/admin/reports_controller_decorator.rb @@ -198,7 +198,7 @@ Spree::Admin::ReportsController.class_eval do @include_blank = I18n.t(:all) # -- Build Report with Order Grouper - @report = OpenFoodNetwork::OrdersAndFulfillmentsReport.new spree_current_user, params + @report = OpenFoodNetwork::OrdersAndFulfillmentsReport.new spree_current_user, params, render_content? order_grouper = OpenFoodNetwork::OrderGrouper.new @report.rules, @report.columns @table = order_grouper.table(@report.table_items) csv_file_name = "#{params[:report_type]}_#{timestamp}.csv" diff --git a/lib/open_food_network/orders_and_fulfillments_report.rb b/lib/open_food_network/orders_and_fulfillments_report.rb index 1de8c3ff40..8d11f81548 100644 --- a/lib/open_food_network/orders_and_fulfillments_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report.rb @@ -3,9 +3,10 @@ include Spree::ReportsHelper module OpenFoodNetwork class OrdersAndFulfillmentsReport attr_reader :params - def initialize(user, params = {}) + def initialize(user, params = {}, render_table = false) @params = params @user = user + @render_table = render_table end def header @@ -49,6 +50,7 @@ module OpenFoodNetwork end def table_items + return [] unless @render_table orders = search.result line_items = permissions.visible_line_items.merge(Spree::LineItem.where(order_id: orders)) diff --git a/spec/controllers/spree/admin/reports_controller_spec.rb b/spec/controllers/spree/admin/reports_controller_spec.rb index 45fb5f8151..bc0044e788 100644 --- a/spec/controllers/spree/admin/reports_controller_spec.rb +++ b/spec/controllers/spree/admin/reports_controller_spec.rb @@ -71,7 +71,7 @@ describe Spree::Admin::ReportsController, type: :controller do # create test objects [orderA1, orderA2, orderB1, orderB2] - spree_get :orders_and_fulfillment + spree_post :orders_and_fulfillment expect(resulting_orders).to include orderA1, orderA2 expect(resulting_orders).not_to include orderB1, orderB2 @@ -119,7 +119,7 @@ describe Spree::Admin::ReportsController, type: :controller do describe 'Orders & Fulfillment' do it "only shows orders that I distribute" do [orderA1, orderA2, orderB1, orderB2] - spree_get :orders_and_fulfillment + spree_post :orders_and_fulfillment expect(resulting_orders).to include orderA1, orderB1 expect(resulting_orders).not_to include orderA2, orderB2 @@ -127,7 +127,7 @@ describe Spree::Admin::ReportsController, type: :controller do it "only shows the selected order cycle" do [orderA1, orderB1] - spree_get :orders_and_fulfillment, q: {order_cycle_id_in: [ocA.id.to_s]} + spree_post :orders_and_fulfillment, q: {order_cycle_id_in: [ocA.id.to_s]} expect(resulting_orders).to include(orderA1) expect(resulting_orders).not_to include(orderB1) @@ -181,7 +181,7 @@ describe Spree::Admin::ReportsController, type: :controller do it "only shows product line items that I am supplying" do [orderA1, orderA2] - spree_get :orders_and_fulfillment + spree_post :orders_and_fulfillment expect(resulting_products).to include p1 expect(resulting_products).not_to include p2, p3 @@ -189,7 +189,7 @@ describe Spree::Admin::ReportsController, type: :controller do it "only shows the selected order cycle" do [orderA1, orderB1] - spree_get :orders_and_fulfillment, q: {order_cycle_id_eq: ocA.id} + spree_post :orders_and_fulfillment, q: {order_cycle_id_eq: ocA.id} expect(resulting_orders_prelim).to include(orderA1) expect(resulting_orders_prelim).not_to include(orderB1) @@ -199,7 +199,7 @@ describe Spree::Admin::ReportsController, type: :controller do context "where I have not granted P-OC to the distributor" do it "does not show me line_items I supply" do [orderA1, orderA2] - spree_get :orders_and_fulfillment + spree_post :orders_and_fulfillment expect(resulting_products).not_to include p1, p2, p3 end diff --git a/spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb b/spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb index f37dcefa02..a33722859c 100644 --- a/spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb +++ b/spec/lib/open_food_network/orders_and_fulfillments_report_spec.rb @@ -14,7 +14,7 @@ module OpenFoodNetwork context "as a site admin" do let(:user) { create(:admin_user) } - subject { PackingReport.new user } + subject { PackingReport.new user, {}, true } it "fetches completed orders" do o2 = create(:order) @@ -31,7 +31,7 @@ module OpenFoodNetwork context "as a manager of a supplier" do let!(:user) { create(:user) } - subject { OrdersAndFulfillmentsReport.new user } + subject { OrdersAndFulfillmentsReport.new user, {}, true } let(:s1) { create(:supplier_enterprise) } @@ -70,7 +70,7 @@ module OpenFoodNetwork context "as a manager of a distributor" do let!(:user) { create(:user) } - subject { OrdersAndFulfillmentsReport.new user } + subject { OrdersAndFulfillmentsReport.new user, {}, true } before do d1.enterprise_roles.create!(user: user)