From 051e61fea3c5561b354c41973d52015c8f9e7804 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Mon, 21 Jul 2025 12:08:32 +0300 Subject: [PATCH] Replaces role_icons helper with template code Undoes 75300566e123c36599398cdd2e33f7b3e4e49808 further. --- app/helpers/user_roles_helper.rb | 18 ------ app/views/users/_role_icons.html.erb | 16 ++++- test/helpers/user_roles_helper_test.rb | 85 -------------------------- 3 files changed, 15 insertions(+), 104 deletions(-) delete mode 100644 test/helpers/user_roles_helper_test.rb diff --git a/app/helpers/user_roles_helper.rb b/app/helpers/user_roles_helper.rb index 0e72d4102..3845a7ff3 100644 --- a/app/helpers/user_roles_helper.rb +++ b/app/helpers/user_roles_helper.rb @@ -1,22 +1,4 @@ module UserRolesHelper - def role_icon(user, role) - if current_user&.administrator? - if user.role?(role) - link_to role_icon_svg_tag(role, false, t("users.show.role.revoke.#{role}")), - user_role_path(user, role), - :method => :delete, - :data => { :confirm => t("user_role.revoke.are_you_sure", :name => user.display_name, :role => role) } - else - link_to role_icon_svg_tag(role, true, t("users.show.role.grant.#{role}")), - user_role_path(user, role), - :method => :post, - :data => { :confirm => t("user_role.grant.are_you_sure", :name => user.display_name, :role => role) } - end - elsif user.role?(role) - role_icon_svg_tag(role, false, t("users.show.role.#{role}")) - end - end - def role_icon_svg_tag(role, blank, title, **options) role_colors = { "administrator" => "#f69e42", diff --git a/app/views/users/_role_icons.html.erb b/app/views/users/_role_icons.html.erb index 785b9d16c..ff6da3665 100644 --- a/app/views/users/_role_icons.html.erb +++ b/app/views/users/_role_icons.html.erb @@ -1,3 +1,17 @@ <% UserRole::ALL_ROLES.each do |role| %> - <%= role_icon @user, role %> + <% if current_user&.administrator? %> + <% if @user.role?(role) %> + <%= link_to role_icon_svg_tag(role, false, t("users.show.role.revoke.#{role}")), + user_role_path(@user, role), + :method => :delete, + :data => { :confirm => t("user_role.revoke.are_you_sure", :name => @user.display_name, :role => role) } %> + <% else %> + <%= link_to role_icon_svg_tag(role, true, t("users.show.role.grant.#{role}")), + user_role_path(@user, role), + :method => :post, + :data => { :confirm => t("user_role.grant.are_you_sure", :name => @user.display_name, :role => role) } %> + <% end %> + <% elsif @user.role?(role) %> + <%= role_icon_svg_tag(role, false, t("users.show.role.#{role}")) %> + <% end %> <% end %> diff --git a/test/helpers/user_roles_helper_test.rb b/test/helpers/user_roles_helper_test.rb deleted file mode 100644 index 3d84f8423..000000000 --- a/test/helpers/user_roles_helper_test.rb +++ /dev/null @@ -1,85 +0,0 @@ -require "test_helper" - -class UserRolesHelperTest < ActionView::TestCase - attr_accessor :current_user - - def test_role_icon_normal - self.current_user = create(:user) - - icon = role_icon(current_user, "moderator") - assert_dom_equal "", icon - - icon = role_icon(current_user, "importer") - assert_dom_equal "", icon - - icon = role_icon(create(:moderator_user), "moderator") - icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon) - assert_dom icon_dom, "svg:root", :count => 1 do - assert_dom "> title", :text => "This user is a moderator" - end - - icon = role_icon(create(:importer_user), "importer") - icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon) - assert_dom icon_dom, "svg:root", :count => 1 do - assert_dom "> title", :text => "This user is a importer" - end - end - - def test_role_icon_administrator - self.current_user = create(:administrator_user) - - create(:user) do |user| - icon = role_icon(user, "moderator") - icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon) - assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='post']", :count => 1 do - assert_dom "> svg", :count => 1 do - assert_dom "> title", :text => "Grant moderator access" - end - end - - icon = role_icon(user, "importer") - icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon) - assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='post']", :count => 1 do - assert_dom "> svg", :count => 1 do - assert_dom "> title", :text => "Grant importer access" - end - end - end - - create(:moderator_user) do |user| - icon = role_icon(user, "moderator") - icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon) - assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='delete']", :count => 1 do - assert_dom "> svg", :count => 1 do - assert_dom "> title", :text => "Revoke moderator access" - end - end - - icon = role_icon(user, "importer") - icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon) - assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='post']", :count => 1 do - assert_dom "> svg", :count => 1 do - assert_dom "> title", :text => "Grant importer access" - end - end - end - - create(:importer_user) do |user| - icon = role_icon(user, "moderator") - icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon) - assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='post']", :count => 1 do - assert_dom "> svg", :count => 1 do - assert_dom "> title", :text => "Grant moderator access" - end - end - - icon = role_icon(user, "importer") - icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon) - assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='delete']", :count => 1 do - assert_dom "> svg", :count => 1 do - assert_dom "> title", :text => "Revoke importer access" - end - end - end - end -end -- 2.39.5