From bf67ae2fbbea3b21695b8b0c085b233f9699b27f Mon Sep 17 00:00:00 2001 From: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com> Date: Mon, 11 Apr 2022 09:20:26 -0600 Subject: [PATCH] Refactor Member Index View Tooltips (#17170) * Adjusts Member Index View tooltips to include resource type * Adds .compact to the list of resource_types in #format_role_tooltip * Updates users_helper.rb#format_role_tooltip tests * right align tooltip * Update app/views/admin/users/_member_index.html.erb Co-authored-by: Suzanne Aitchison Co-authored-by: Suzanne Aitchison --- .../stylesheets/components/tooltips.scss | 6 +++ app/helpers/admin/users_helper.rb | 10 ++++ app/views/admin/users/_member_index.html.erb | 2 +- .../admin/users/index/_organizations.html.erb | 2 +- spec/helpers/admin/users_helper_spec.rb | 49 ++++++++++++++++--- 5 files changed, 61 insertions(+), 8 deletions(-) diff --git a/app/assets/stylesheets/components/tooltips.scss b/app/assets/stylesheets/components/tooltips.scss index 0987eff83..c30c46c19 100644 --- a/app/assets/stylesheets/components/tooltips.scss +++ b/app/assets/stylesheets/components/tooltips.scss @@ -51,4 +51,10 @@ transition-delay: 0s; } } + + // Variant allowing placement in line with right edge instead of left + &.crayons-hover-tooltip--right:after { + left: revert; + right: 0; + } } diff --git a/app/helpers/admin/users_helper.rb b/app/helpers/admin/users_helper.rb index 3876346fe..b8a58d1f6 100644 --- a/app/helpers/admin/users_helper.rb +++ b/app/helpers/admin/users_helper.rb @@ -21,5 +21,15 @@ module Admin "Resource Admin" end end + + def format_role_tooltip(user) + if user.super_admin? + "Super Admin" + elsif user.admin? + "Admin" + elsif user.single_resource_admin_for?(:any) + "Resource Admin: #{user.roles.pluck(:resource_type).compact.join(', ')}" + end + end end end diff --git a/app/views/admin/users/_member_index.html.erb b/app/views/admin/users/_member_index.html.erb index 526f30910..85a95b712 100644 --- a/app/views/admin/users/_member_index.html.erb +++ b/app/views/admin/users/_member_index.html.erb @@ -30,7 +30,7 @@
<%= render "admin/users/index/status_indicator", user: user %>
- + <%= cascading_high_level_roles(user) %> diff --git a/app/views/admin/users/index/_organizations.html.erb b/app/views/admin/users/index/_organizations.html.erb index f53bc44a4..4928454b3 100644 --- a/app/views/admin/users/index/_organizations.html.erb +++ b/app/views/admin/users/index/_organizations.html.erb @@ -1,6 +1,6 @@ <% if organizations.any? %> <% organizations.each do |organization| %> - + <% end %> diff --git a/spec/helpers/admin/users_helper_spec.rb b/spec/helpers/admin/users_helper_spec.rb index aa0bd8a61..77452d0b4 100644 --- a/spec/helpers/admin/users_helper_spec.rb +++ b/spec/helpers/admin/users_helper_spec.rb @@ -25,21 +25,23 @@ describe Admin::UsersHelper do end describe "#cascading_high_level_roles" do + let(:user) { create(:user) } + it "renders the proper role for a Super Admin" do - super_admin = create(:user, :super_admin) - role = helper.cascading_high_level_roles(super_admin) + user.add_role(:super_admin) + role = helper.cascading_high_level_roles(user) expect(role).to eq "Super Admin" end it "renders the proper role for an Admin" do - admin = create(:user, :admin) - role = helper.cascading_high_level_roles(admin) + user.add_role(:admin) + role = helper.cascading_high_level_roles(user) expect(role).to eq "Admin" end it "renders the proper role for a Resource Admin" do - resource_admin = create(:user, :single_resource_admin) - role = helper.cascading_high_level_roles(resource_admin) + user.add_role(:single_resource_admin, Article) + role = helper.cascading_high_level_roles(user) expect(role).to eq "Resource Admin" end @@ -49,4 +51,39 @@ describe Admin::UsersHelper do expect(role).to be_nil end end + + describe "#format_role_tooltip" do + let(:user) { create(:user) } + + it "renders the proper tooltip for a Super Admin" do + user.add_role(:super_admin) + role = helper.format_role_tooltip(user) + expect(role).to eq "Super Admin" + end + + it "renders the proper tooltip for an Admin" do + user.add_role(:admin) + role = helper.format_role_tooltip(user) + expect(role).to eq "Admin" + end + + it "renders the proper tooltip for a Resource Admin" do + user.add_role(:single_resource_admin, Article) + role = helper.format_role_tooltip(user) + expect(role).to eq "Resource Admin: Article" + end + + it "renders the proper, comma-separated tooltip for a Resource Admin with multiple resource_types" do + user.add_role(:single_resource_admin, Article) + user.add_role(:single_resource_admin, Badge) + role = helper.format_role_tooltip(user) + expect(role).to eq "Resource Admin: Article, Badge" + end + + it "does not render a the resource_type for a Trusted user" do + user.add_role(:trusted) + role = helper.format_role_tooltip(user) + expect(role).to be_nil + end + end end