mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-06 02:51:34 +00:00
Don't compile user-enterprises report before search
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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"],
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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] }
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user