Don't compile user-enterprises report before search

This commit is contained in:
Maikel Linke
2018-05-03 10:42:33 +10:00
parent fcd41c67fa
commit 8393b1d4c0
5 changed files with 28 additions and 9 deletions

View File

@@ -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

View File

@@ -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"],

View File

@@ -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

View File

@@ -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] }

View File

@@ -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