diff --git a/app/controllers/spree/admin/reports_controller_decorator.rb b/app/controllers/spree/admin/reports_controller_decorator.rb index e479982609..44faa87990 100644 --- a/app/controllers/spree/admin/reports_controller_decorator.rb +++ b/app/controllers/spree/admin/reports_controller_decorator.rb @@ -210,9 +210,9 @@ Spree::Admin::ReportsController.class_eval do def products_and_inventory @report_types = report_types[:products_and_inventory] if params[:report_type] != 'lettuce_share' - @report = OpenFoodNetwork::ProductsAndInventoryReport.new spree_current_user, params + @report = OpenFoodNetwork::ProductsAndInventoryReport.new spree_current_user, params, render_content? else - @report = OpenFoodNetwork::LettuceShareReport.new spree_current_user, params + @report = OpenFoodNetwork::LettuceShareReport.new spree_current_user, params, render_content? end render_report(@report.header, @report.table, params[:csv], "products_and_inventory_#{timestamp}.csv") end diff --git a/lib/open_food_network/lettuce_share_report.rb b/lib/open_food_network/lettuce_share_report.rb index a1a157c3a3..7bfcf26ec4 100644 --- a/lib/open_food_network/lettuce_share_report.rb +++ b/lib/open_food_network/lettuce_share_report.rb @@ -19,6 +19,7 @@ module OpenFoodNetwork end def table + return [] unless @render_table variants.select { |v| v.in_stock? } .map do |variant| [ diff --git a/lib/open_food_network/products_and_inventory_report.rb b/lib/open_food_network/products_and_inventory_report.rb index 6f6ac4a44d..16d94dafb7 100644 --- a/lib/open_food_network/products_and_inventory_report.rb +++ b/lib/open_food_network/products_and_inventory_report.rb @@ -18,6 +18,7 @@ module OpenFoodNetwork end def table + return [] unless @render_table variants.map do |variant| [ variant.product.supplier.name, diff --git a/lib/open_food_network/products_and_inventory_report_base.rb b/lib/open_food_network/products_and_inventory_report_base.rb index 7641c056ea..dff53fdb9a 100644 --- a/lib/open_food_network/products_and_inventory_report_base.rb +++ b/lib/open_food_network/products_and_inventory_report_base.rb @@ -2,9 +2,10 @@ module OpenFoodNetwork class ProductsAndInventoryReportBase attr_reader :params - def initialize(user, params = {}) + def initialize(user, params = {}, render_table = false) @user = user @params = params + @render_table = render_table end def permissions diff --git a/spec/controllers/spree/admin/reports_controller_spec.rb b/spec/controllers/spree/admin/reports_controller_spec.rb index 2e0e70d65e..2356f238c5 100644 --- a/spec/controllers/spree/admin/reports_controller_spec.rb +++ b/spec/controllers/spree/admin/reports_controller_spec.rb @@ -235,7 +235,7 @@ describe Spree::Admin::ReportsController, type: :controller do it "creates a ProductAndInventoryReport" do expect(OpenFoodNetwork::ProductsAndInventoryReport).to receive(:new) - .with(@admin_user, {"test" => "foo", "controller" => "spree/admin/reports", "action" => "products_and_inventory"}) + .with(@admin_user, {"test" => "foo", "controller" => "spree/admin/reports", "action" => "products_and_inventory"}, false) .and_return(report = double(:report)) allow(report).to receive(:header).and_return [] allow(report).to receive(:table).and_return [] diff --git a/spec/features/admin/reports_spec.rb b/spec/features/admin/reports_spec.rb index 202e0fc5a7..c6c6f63602 100644 --- a/spec/features/admin/reports_spec.rb +++ b/spec/features/admin/reports_spec.rb @@ -314,6 +314,7 @@ feature %q{ expect(page).to have_content "All products" expect(page).to have_content "Inventory (on hand)" click_link 'Products & Inventory' + click_button "Search" expect(page).to have_content "Supplier" expect(page).to have_table_row ["Supplier", "Producer Suburb", "Product", "Product Properties", "Taxons", "Variant Value", "Price", "Group Buy Unit Quantity", "Amount", "SKU"].map(&:upcase) expect(page).to have_table_row [product1.supplier.name, product1.supplier.address.city, "Product Name", product1.properties.map(&:presentation).join(", "), product1.primary_taxon.name, "Test", "100.0", product1.group_buy_unit_size.to_s, "", "sku1"] @@ -325,6 +326,7 @@ feature %q{ login_to_admin_section click_link 'Reports' click_link 'LettuceShare' + click_button "Search" expect(page).to have_table_row ['PRODUCT', 'Description', 'Qty', 'Pack Size', 'Unit', 'Unit Price', 'Total', 'GST incl.', 'Grower and growing method', 'Taxon'].map(&:upcase) expect(page).to have_table_row ['Product 2', '100g', '', '100', 'g', '99.0', '', '0', 'Supplier Name (Organic - NASAA 12345)', 'Taxon Name'] diff --git a/spec/lib/open_food_network/lettuce_share_report_spec.rb b/spec/lib/open_food_network/lettuce_share_report_spec.rb index f37e15b69e..5a871cfbbb 100644 --- a/spec/lib/open_food_network/lettuce_share_report_spec.rb +++ b/spec/lib/open_food_network/lettuce_share_report_spec.rb @@ -3,7 +3,7 @@ require 'open_food_network/lettuce_share_report' module OpenFoodNetwork describe LettuceShareReport do let(:user) { create(:user) } - let(:report) { LettuceShareReport.new user } + let(:report) { LettuceShareReport.new user, {}, true } let(:v) { create(:variant) } describe "grower and method" do diff --git a/spec/lib/open_food_network/products_and_inventory_report_spec.rb b/spec/lib/open_food_network/products_and_inventory_report_spec.rb index f0fae499fe..80bdaebcf7 100644 --- a/spec/lib/open_food_network/products_and_inventory_report_spec.rb +++ b/spec/lib/open_food_network/products_and_inventory_report_spec.rb @@ -9,7 +9,7 @@ module OpenFoodNetwork user end subject do - ProductsAndInventoryReport.new user + ProductsAndInventoryReport.new user, {}, true end it "Should return headers" do @@ -72,7 +72,7 @@ module OpenFoodNetwork end subject do - ProductsAndInventoryReport.new enterprise_user + ProductsAndInventoryReport.new enterprise_user, {}, true end describe "fetching child variants" do