diff --git a/app/controllers/spree/admin/reports_controller_decorator.rb b/app/controllers/spree/admin/reports_controller_decorator.rb index c30518fe66..6ca4b6019e 100644 --- a/app/controllers/spree/admin/reports_controller_decorator.rb +++ b/app/controllers/spree/admin/reports_controller_decorator.rb @@ -218,8 +218,7 @@ Spree::Admin::ReportsController.class_eval do end def users_and_enterprises - # @report_types = report_types[:users_and_enterprises] - @report = OpenFoodNetwork::UsersAndEnterprisesReport.new params + @report = OpenFoodNetwork::UsersAndEnterprisesReport.new params, render_content? render_report(@report.header, @report.table, params[:csv], "users_and_enterprises_#{timestamp}.csv") end diff --git a/lib/open_food_network/users_and_enterprises_report.rb b/lib/open_food_network/users_and_enterprises_report.rb index 4f816af8bd..89dba0b73a 100644 --- a/lib/open_food_network/users_and_enterprises_report.rb +++ b/lib/open_food_network/users_and_enterprises_report.rb @@ -1,8 +1,9 @@ module OpenFoodNetwork class UsersAndEnterprisesReport attr_reader :params - def initialize(params = {}) + def initialize(params = {}, compile_table = false) @params = params + @compile_table = compile_table # Convert arrays of ids to comma delimited strings @params[:enterprise_id_in] = @params[:enterprise_id_in].join(',') if @params[:enterprise_id_in].kind_of? Array @@ -22,6 +23,7 @@ module OpenFoodNetwork end def table + return [] unless @compile_table users_and_enterprises.map do |uae| [ uae["user_email"], diff --git a/spec/controllers/spree/admin/reports_controller_spec.rb b/spec/controllers/spree/admin/reports_controller_spec.rb index 0585f80670..b9d73d48be 100644 --- a/spec/controllers/spree/admin/reports_controller_spec.rb +++ b/spec/controllers/spree/admin/reports_controller_spec.rb @@ -269,4 +269,20 @@ describe Spree::Admin::ReportsController, type: :controller do expect(assigns(:report)).to eq(report) end end + + context "Admin" do + before { login_as_admin } + + describe "users_and_enterprises" do + it "shows report search forms" do + spree_get :users_and_enterprises + expect(assigns(:report).table).to eq [] + end + + it "shows report data" do + spree_post :users_and_enterprises + expect(assigns(:report).table.empty?).to be false + end + end + end end diff --git a/spec/features/admin/reports_spec.rb b/spec/features/admin/reports_spec.rb index 23788a7e3f..079c0c2b5e 100644 --- a/spec/features/admin/reports_spec.rb +++ b/spec/features/admin/reports_spec.rb @@ -346,6 +346,8 @@ feature %q{ end it "shows users and enterprises report" do + click_button "Search" + rows = find("table#users_and_enterprises").all("tr") table = rows.map { |r| r.all("th,td").map { |c| c.text.strip }[0..2] } diff --git a/spec/lib/open_food_network/users_and_enterprises_report_spec.rb b/spec/lib/open_food_network/users_and_enterprises_report_spec.rb index 906bef1eef..bd33825722 100644 --- a/spec/lib/open_food_network/users_and_enterprises_report_spec.rb +++ b/spec/lib/open_food_network/users_and_enterprises_report_spec.rb @@ -7,7 +7,7 @@ module OpenFoodNetwork describe "users_and_enterprises" do let!(:owners_and_enterprises) { double(:owners_and_enterprises) } let!(:managers_and_enterprises) { double(:managers_and_enterprises) } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new {} } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new({}, true) } before do subject.stub(:owners_and_enterprises) { owners_and_enterprises } @@ -24,7 +24,7 @@ module OpenFoodNetwork end describe "sorting results" do - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new {} } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new({}, true) } it "sorts by creation date" do uae_mock = [ @@ -68,7 +68,7 @@ module OpenFoodNetwork describe "for owners and enterprises" do describe "by enterprise id" do let!(:params) { { enterprise_id_in: [enterprise1.id.to_s] } } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true } it "excludes enterprises that are not explicitly requested" do results = subject.owners_and_enterprises.to_a.map{ |oae| oae["name"] } @@ -79,7 +79,7 @@ module OpenFoodNetwork describe "by user id" do let!(:params) { { user_id_in: [enterprise1.owner.id.to_s] } } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true } it "excludes enterprises that are not explicitly requested" do results = subject.owners_and_enterprises.to_a.map{ |oae| oae["name"] } @@ -92,7 +92,7 @@ module OpenFoodNetwork describe "for managers and enterprises" do describe "by enterprise id" do let!(:params) { { enterprise_id_in: [enterprise1.id.to_s] } } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true } it "excludes enterprises that are not explicitly requested" do results = subject.managers_and_enterprises.to_a.map{ |mae| mae["name"] } @@ -105,7 +105,7 @@ module OpenFoodNetwork let!(:manager1) { create_enterprise_user } let!(:manager2) { create_enterprise_user } let!(:params) { { user_id_in: [manager1.id.to_s] } } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true } before do enterprise1.enterprise_roles.build(user: manager1).save