From b1e7d8a5ec17eb62c24b2b5d935e4841e59fa0ec Mon Sep 17 00:00:00 2001 From: Suzanne Aitchison Date: Tue, 12 Apr 2022 10:40:44 +0100 Subject: [PATCH] Member index (phase 2) - Search invitations (#17210) * add ability to search invitations * add an invited scope * add a cypress test --- .../admin/invitations_controller.rb | 5 ++- app/models/user.rb | 1 + app/views/admin/invitations/index.html.erb | 11 ++++- .../admin/users/index/_controls.html.erb | 8 ++-- .../admin/users/index/_search_field.html.erb | 10 +++-- .../adminFlows/users/invitedUsers.spec.js | 40 +++++++++++++++++++ cypress/support/commands.js | 8 ++++ 7 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 cypress/integration/seededFlows/adminFlows/users/invitedUsers.spec.js diff --git a/app/controllers/admin/invitations_controller.rb b/app/controllers/admin/invitations_controller.rb index 435663a34..5d497405c 100644 --- a/app/controllers/admin/invitations_controller.rb +++ b/app/controllers/admin/invitations_controller.rb @@ -3,7 +3,10 @@ module Admin layout "admin" def index - @invitations = User.where(registered: false).page(params[:page]).per(50) + @invitations = Admin::UsersQuery.call(relation: User.invited, + options: params.permit( + :search, + )).page(params[:page]).per(50) end def new; end diff --git a/app/models/user.rb b/app/models/user.rb index 2f07dc7fd..6d9e3d427 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -170,6 +170,7 @@ class User < ApplicationRecord scope :eager_load_serialized_data, -> { includes(:roles) } scope :registered, -> { where(registered: true) } + scope :invited, -> { where(registered: false) } # Unfortunately pg_search's default SQL query is not performant enough in this # particular case (~ 500ms). There are multiple reasons: # => creates a complex query like `SELECT FROM users INNER JOIN users` to compute ranking. diff --git a/app/views/admin/invitations/index.html.erb b/app/views/admin/invitations/index.html.erb index 3c22f7087..306841676 100644 --- a/app/views/admin/invitations/index.html.erb +++ b/app/views/admin/invitations/index.html.erb @@ -5,7 +5,16 @@

Members (Invitations)

<%= render "admin/users/index/tabs" %> - <%= render "admin/users/index/controls" %> +
+ <%= form_with url: admin_invitations_path, method: :get, local: true, class:"grow-1" do |f| %> + <% render "admin/users/index/search_field", f: f, placeholder: "Search invited members...", aria_label: "Search invited members by name, username, or email" %> + <% end %> +
+ <%= paginate @invitations, theme: "admin", scope: @invitations, label: "Paginate invitations" %> + <%= link_to "Invite member", new_admin_invitation_path, class: "c-cta c-cta--branded self-end" %> +
+
+ diff --git a/app/views/admin/users/index/_controls.html.erb b/app/views/admin/users/index/_controls.html.erb index cb20eae0b..3c4f96b4e 100644 --- a/app/views/admin/users/index/_controls.html.erb +++ b/app/views/admin/users/index/_controls.html.erb @@ -18,8 +18,8 @@ <%= paginate @users, theme: "admin", scope: @users, label: "Paginate users" %>
-