X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/98bfaace9aeba7fb387596cc16b2e661506173c6..314713e73dae99302d02315c9f9182e881ad9241:/test/helpers/user_roles_helper_test.rb
diff --git a/test/helpers/user_roles_helper_test.rb b/test/helpers/user_roles_helper_test.rb
index 7708d5115..3b63889a3 100644
--- a/test/helpers/user_roles_helper_test.rb
+++ b/test/helpers/user_roles_helper_test.rb
@@ -9,33 +9,78 @@ class UserRolesHelperTest < ActionView::TestCase
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")
- expected = <<~HTML.delete("\n")
-
- HTML
- assert_dom_equal expected, icon
+ 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)
- user = create(:user)
- icon = role_icon(user, "moderator")
- expected = <<~HTML.delete("\n")
-
-
-
- HTML
- assert_dom_equal expected, icon
-
- moderator_user = create(:moderator_user)
- icon = role_icon(moderator_user, "moderator")
- expected = <<~HTML.delete("\n")
-
-
-
- HTML
- assert_dom_equal expected, icon
+ 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
def test_role_icons_normal
@@ -45,56 +90,83 @@ class UserRolesHelperTest < ActionView::TestCase
assert_dom_equal "", icons
icons = role_icons(create(:moderator_user))
- expected = <<~HTML.delete("\n")
-
- HTML
- assert_dom_equal expected, icons
+ icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
+ assert_dom icons_dom, "svg:root > title", :text => "This user is a moderator"
+
+ icons = role_icons(create(:importer_user))
+ icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
+ assert_dom icons_dom, "svg:root > title", :text => "This user is a importer"
icons = role_icons(create(:super_user))
- expected = <<~HTML.delete("\n")
-
-
- HTML
- assert_dom_equal expected, icons
+ icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
+ assert_dom icons_dom, "svg:root", :count => 3 do
+ assert_dom "> title", :text => "This user is an administrator"
+ assert_dom "> title", :text => "This user is a moderator"
+ assert_dom "> title", :text => "This user is a importer"
+ end
end
def test_role_icons_administrator
self.current_user = create(:administrator_user)
- user = create(:user)
- icons = role_icons(user)
- expected = <<~HTML.delete("\n")
-
-
-
-
-
-
- HTML
- assert_dom_equal expected, icons
-
- moderator_user = create(:moderator_user)
- icons = role_icons(moderator_user)
- expected = <<~HTML.delete("\n")
-
-
-
-
-
-
- HTML
- assert_dom_equal expected, icons
-
- super_user = create(:super_user)
- icons = role_icons(super_user)
- expected = <<~HTML.delete("\n")
-
-
-
-
-
-
- HTML
- assert_dom_equal expected, icons
+ create(:user) do |user|
+ icons = role_icons(user)
+ icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
+ assert_dom icons_dom, "a:root", :count => 3
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'administrator')}'][data-method='post']" do
+ assert_dom "> svg > title", :text => "Grant administrator access"
+ end
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='post']" do
+ assert_dom "> svg > title", :text => "Grant moderator access"
+ end
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='post']" do
+ assert_dom "> svg > title", :text => "Grant importer access"
+ end
+ end
+
+ create(:moderator_user) do |user|
+ icons = role_icons(user)
+ icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
+ assert_dom icons_dom, "a:root", :count => 3
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'administrator')}'][data-method='post']" do
+ assert_dom "> svg > title", :text => "Grant administrator access"
+ end
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='delete']" do
+ assert_dom "> svg > title", :text => "Revoke moderator access"
+ end
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='post']" do
+ assert_dom "> svg > title", :text => "Grant importer access"
+ end
+ end
+
+ create(:importer_user) do |user|
+ icons = role_icons(user)
+ icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
+ assert_dom icons_dom, "a:root", :count => 3
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'administrator')}'][data-method='post']" do
+ assert_dom "> svg > title", :text => "Grant administrator access"
+ end
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='post']" do
+ assert_dom "> svg > title", :text => "Grant moderator access"
+ end
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='delete']" do
+ assert_dom "> svg > title", :text => "Revoke importer access"
+ end
+ end
+
+ create(:super_user) do |user|
+ icons = role_icons(user)
+ icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
+ assert_dom icons_dom, "a:root", :count => 3
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'administrator')}'][data-method='delete']" do
+ assert_dom "> svg > title", :text => "Revoke administrator access"
+ end
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='delete']" do
+ assert_dom "> svg > title", :text => "Revoke moderator access"
+ end
+ assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='delete']" do
+ assert_dom "> svg > title", :text => "Revoke importer access"
+ end
+ end
end
end