From 112adb11db44145657c2e51c90a88a0ae08dc74e Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Wed, 25 Sep 2019 19:29:59 +0100 Subject: [PATCH] Pass permissions object into OrdersAndFulfillMentsReport --- .../spree/admin/reports_controller_decorator.rb | 3 ++- .../orders_and_fulfillments_report.rb | 10 ++++------ .../orders_and_fulfillments_report_spec.rb | 15 ++++++++++----- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/controllers/spree/admin/reports_controller_decorator.rb b/app/controllers/spree/admin/reports_controller_decorator.rb index 56ca48bed3..cd50b642cc 100644 --- a/app/controllers/spree/admin/reports_controller_decorator.rb +++ b/app/controllers/spree/admin/reports_controller_decorator.rb @@ -126,7 +126,8 @@ Spree::Admin::ReportsController.class_eval do @include_blank = I18n.t(:all) # -- Build Report with Order Grouper - @report = OpenFoodNetwork::OrdersAndFulfillmentsReport.new spree_current_user, params, render_content? + @report = OpenFoodNetwork::OrdersAndFulfillmentsReport.new(spree_current_user, + permissions, params, render_content?) @table = order_grouper_table 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 1e5481ca73..7e5a65e654 100644 --- a/lib/open_food_network/orders_and_fulfillments_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report.rb @@ -6,9 +6,10 @@ include Spree::ReportsHelper module OpenFoodNetwork class OrdersAndFulfillmentsReport attr_reader :params - def initialize(user, params = {}, render_table = false) + def initialize(user, permissions, params = {}, render_table = false) @params = params @user = user + @permissions = permissions @render_table = render_table end @@ -288,6 +289,8 @@ module OpenFoodNetwork private + attr_reader :permissions + def supplier_name proc { |line_items| find_variant(line_items.first.variant_id).product.supplier.name } end @@ -304,11 +307,6 @@ module OpenFoodNetwork proc { |line_items| find_variant(line_items.first.variant_id).full_name } end - def permissions - return @permissions unless @permissions.nil? - @permissions = OpenFoodNetwork::Permissions.new(@user) - end - def total_units(line_items) return " " if not_all_have_unit?(line_items) 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 35fa8accc6..8435866a09 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 @@ -23,7 +23,7 @@ describe OpenFoodNetwork::OrdersAndFulfillmentsReport do before { order.line_items << line_item } context "as a site admin" do - subject { described_class.new admin_user, {}, true } + subject { described_class.new admin_user, OpenFoodNetwork::Permissions.new(admin_user), {}, true } it "fetches completed orders" do o2 = create(:order) @@ -39,7 +39,7 @@ describe OpenFoodNetwork::OrdersAndFulfillmentsReport do end context "as a manager of a supplier" do - subject { described_class.new user, {}, true } + subject { described_class.new user, OpenFoodNetwork::Permissions.new(user), {}, true } let(:s1) { create(:supplier_enterprise) } @@ -98,7 +98,7 @@ describe OpenFoodNetwork::OrdersAndFulfillmentsReport do end context "as a manager of a distributor" do - subject { described_class.new user, {}, true } + subject { described_class.new user, OpenFoodNetwork::Permissions.new(user), {}, true } before do distributor.enterprise_roles.create!(user: user) @@ -133,7 +133,9 @@ describe OpenFoodNetwork::OrdersAndFulfillmentsReport do ] report_types.each do |report_type| - report = described_class.new admin_user, report_type: report_type + report = described_class.new admin_user, + OpenFoodNetwork::Permissions.new(admin_user), + report_type: report_type expect(report.header.size).to eq(report.columns.size) end end @@ -149,7 +151,10 @@ describe OpenFoodNetwork::OrdersAndFulfillmentsReport do end let(:items) { - report = described_class.new(admin_user, { report_type: "order_cycle_customer_totals" }, true) + report = described_class.new(admin_user, + OpenFoodNetwork::Permissions.new(admin_user), + { report_type: "order_cycle_customer_totals" }, + true) OpenFoodNetwork::OrderGrouper.new(report.rules, report.columns).table(report.table_items) }