mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Report Refactor 1: Users & Entreprises
This commit is contained in:
committed by
Jean-Baptiste Bellet
parent
3d1b61ae6e
commit
41c11baa3f
@@ -90,9 +90,7 @@ module Spree
|
||||
end
|
||||
|
||||
def users_and_enterprises
|
||||
@report = OpenFoodNetwork::UsersAndEnterprisesReport.new raw_params, render_content?
|
||||
render_report(@report.header, @report.table, params[:csv],
|
||||
"users_and_enterprises_#{timestamp}.csv")
|
||||
render_report2
|
||||
end
|
||||
|
||||
def xero_invoices
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
.row
|
||||
.alpha.two.columns= label_tag nil, t(:report_enterprises)
|
||||
.omega.fourteen.columns= select_tag(:enterprise_id_in, options_from_collection_for_select(Enterprise.all, :id, :name, params[:enterprise_id_in]), {class: "select2 fullwidth", multiple: true})
|
||||
|
||||
.row
|
||||
.alpha.two.columns= label_tag nil, t(:report_users)
|
||||
.omega.fourteen.columns= select_tag(:user_id_in, options_from_collection_for_select(Spree::User.all, :id, :email, params[:user_id_in]), {class: "select2 fullwidth", multiple: true})
|
||||
@@ -1,21 +0,0 @@
|
||||
= form_tag spree.users_and_enterprises_admin_reports_url do |f|
|
||||
.row
|
||||
.alpha.two.columns= label_tag nil, t(:report_enterprises)
|
||||
.omega.fourteen.columns= select_tag(:enterprise_id_in, options_from_collection_for_select(Enterprise.all, :id, :name, params[:enterprise_id_in]&.split(",")), {class: "select2 fullwidth", multiple: true})
|
||||
|
||||
.row
|
||||
.alpha.two.columns= label_tag nil, t(:report_users)
|
||||
.omega.fourteen.columns= select_tag(:user_id_in, options_from_collection_for_select(Spree::User.all, :id, :email, params[:user_id_in]&.split(",")), {class: "select2 fullwidth", multiple: true})
|
||||
|
||||
-# Might need this later if we add different kinds of reports
|
||||
-# .row
|
||||
-# .alpha.two.columns= label_tag nil, "Report Type: "
|
||||
-# .omega.fourteen.columns= select_tag(:report_type, options_for_select(@report_types, params[:report_type]))
|
||||
|
||||
.row
|
||||
= check_box_tag :csv
|
||||
= label_tag :csv, t(:report_customers_csv)
|
||||
.row
|
||||
= button t(:search)
|
||||
|
||||
= render "table", id: "users_and_enterprises", msg_option: t(:search)
|
||||
@@ -4,7 +4,8 @@ module OpenFoodNetwork
|
||||
class UsersAndEnterprisesReport
|
||||
attr_reader :params
|
||||
|
||||
def initialize(params = {}, compile_table = false)
|
||||
def initialize(user, params = {}, compile_table = false)
|
||||
@user = user
|
||||
@params = params
|
||||
@compile_table = compile_table
|
||||
|
||||
@@ -15,7 +16,7 @@ module OpenFoodNetwork
|
||||
@params[:user_id_in] = @params[:user_id_in].join(',') if @params[:user_id_in].is_a? Array
|
||||
end
|
||||
|
||||
def header
|
||||
def table_headers
|
||||
[
|
||||
I18n.t(:report_header_user),
|
||||
I18n.t(:report_header_relationship),
|
||||
@@ -27,7 +28,7 @@ module OpenFoodNetwork
|
||||
]
|
||||
end
|
||||
|
||||
def table
|
||||
def table_rows
|
||||
return [] unless @compile_table
|
||||
|
||||
users_and_enterprises.map do |uae|
|
||||
|
||||
@@ -328,12 +328,12 @@ describe Spree::Admin::ReportsController, type: :controller do
|
||||
|
||||
it "shows report search forms" do
|
||||
spree_get :users_and_enterprises
|
||||
expect(assigns(:report).table).to eq []
|
||||
expect(assigns(:report).table_rows).to eq []
|
||||
end
|
||||
|
||||
it "shows report data" do
|
||||
spree_post :users_and_enterprises, q: {}
|
||||
expect(assigns(:report).table.empty?).to be false
|
||||
expect(assigns(:report).table_rows.empty?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -8,7 +8,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({}, true) }
|
||||
let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new(nil, {}, true) }
|
||||
|
||||
before do
|
||||
allow(subject).to receive(:owners_and_enterprises) { owners_and_enterprises }
|
||||
@@ -25,7 +25,7 @@ module OpenFoodNetwork
|
||||
end
|
||||
|
||||
describe "sorting results" do
|
||||
let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new({}, true) }
|
||||
let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new(nil, {}, true) }
|
||||
|
||||
it "sorts by creation date" do
|
||||
uae_mock = [
|
||||
@@ -69,7 +69,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, true }
|
||||
let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new nil, params, true }
|
||||
|
||||
it "excludes enterprises that are not explicitly requested" do
|
||||
results = subject.owners_and_enterprises.to_a.map{ |oae| oae["name"] }
|
||||
@@ -80,7 +80,7 @@ module OpenFoodNetwork
|
||||
|
||||
describe "by user id" do
|
||||
let!(:params) { { user_id_in: [enterprise1.owner.id.to_s] } }
|
||||
let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true }
|
||||
let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new nil, params, true }
|
||||
|
||||
it "excludes enterprises that are not explicitly requested" do
|
||||
results = subject.owners_and_enterprises.to_a.map{ |oae| oae["name"] }
|
||||
@@ -93,7 +93,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, true }
|
||||
let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new nil, params, true }
|
||||
|
||||
it "excludes enterprises that are not explicitly requested" do
|
||||
results = subject.managers_and_enterprises.to_a.map{ |mae| mae["name"] }
|
||||
@@ -106,7 +106,7 @@ module OpenFoodNetwork
|
||||
let!(:manager1) { create(:user) }
|
||||
let!(:manager2) { create(:user) }
|
||||
let!(:params) { { user_id_in: [manager1.id.to_s] } }
|
||||
let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true }
|
||||
let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new nil, params, true }
|
||||
|
||||
before do
|
||||
enterprise1.enterprise_roles.build(user: manager1).save
|
||||
|
||||
@@ -347,7 +347,7 @@ describe '
|
||||
end
|
||||
|
||||
it "shows users and enterprises report" do
|
||||
click_button "Search"
|
||||
click_button "Go"
|
||||
|
||||
rows = find("table.report__table").all("tr")
|
||||
table = rows.map { |r| r.all("th,td").map { |c| c.text.strip }[0..2] }
|
||||
@@ -368,7 +368,7 @@ describe '
|
||||
select enterprise3.name, from: "enterprise_id_in"
|
||||
select enterprise1.owner.email, from: "user_id_in"
|
||||
|
||||
click_button "Search"
|
||||
click_button "Go"
|
||||
|
||||
rows = find("table.report__table").all("tr")
|
||||
table = rows.map { |r| r.all("th,td").map { |c| c.text.strip }[0..2] }
|
||||
|
||||
Reference in New Issue
Block a user