]> git.openstreetmap.org Git - rails.git/blobdiff - test/helpers/user_roles_helper_test.rb
Merge remote-tracking branch 'upstream/pull/5051'
[rails.git] / test / helpers / user_roles_helper_test.rb
index 880c16e5909429305533498b096e9da00cca7a10..41366199c4f828479e25de389bc2d9cc2473fe3a 100644 (file)
 require "test_helper"
 
 class UserRolesHelperTest < ActionView::TestCase
+  attr_accessor :current_user
+
   def test_role_icon_normal
-    user = create(:user)
-    @user = user
+    self.current_user = create(:user)
+
+    icon = role_icon(current_user, "moderator")
+    assert_dom_equal "", icon
 
-    icon = role_icon(user, "moderator")
+    icon = role_icon(current_user, "importer")
     assert_dom_equal "", icon
 
     icon = role_icon(create(:moderator_user), "moderator")
-    assert_dom_equal '<picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" /></picture>', 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
-    @user = create(:administrator_user)
+    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='#{grant_role_path(user, 'moderator')}']", :count => 1 do
+        assert_dom "> svg", :count => 1 do
+          assert_dom "> title", :text => "Grant moderator access"
+        end
+      end
 
-    user = create(:user)
-    icon = role_icon(user, "moderator")
-    assert_dom_equal %(<a confirm="Are you sure you want to grant the role `moderator&#39; to the user `#{user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{URI.encode(user.display_name)}/role/moderator/grant"><picture><source srcset="/images/roles/blank_moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/blank_moderator.svg" border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" /></picture></a>), icon
+      icon = role_icon(user, "importer")
+      icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+      assert_dom icon_dom, "a:root[href='#{grant_role_path(user, 'importer')}']", :count => 1 do
+        assert_dom "> svg", :count => 1 do
+          assert_dom "> title", :text => "Grant importer access"
+        end
+      end
+    end
 
-    moderator_user = create(:moderator_user)
-    icon = role_icon(moderator_user, "moderator")
-    assert_dom_equal %(<a confirm="Are you sure you want to revoke the role `moderator&#39; from the user `#{moderator_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{URI.encode(moderator_user.display_name)}/role/moderator/revoke"><picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" /></picture></a>), icon
+    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='#{revoke_role_path(user, 'moderator')}']", :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='#{grant_role_path(user, 'importer')}']", :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='#{grant_role_path(user, 'moderator')}']", :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='#{revoke_role_path(user, 'importer')}']", :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
-    user = create(:user)
-    @user = user
+    self.current_user = create(:user)
 
-    icons = role_icons(user)
-    assert_dom_equal "  ", icons
+    icons = role_icons(current_user)
+    assert_dom_equal "", icons
 
     icons = role_icons(create(:moderator_user))
-    assert_dom_equal '  <picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" /></picture>', 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))
-    assert_dom_equal ' <picture><source srcset="/images/roles/administrator.svg" type="image/svg+xml" /><img srcset="/images/roles/administrator.svg" border="0" alt="This user is an administrator" title="This user is an administrator" src="/images/roles/administrator.png" width="20" height="20" /></picture> <picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" /></picture>', 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
-    @user = create(:administrator_user)
+    self.current_user = create(:administrator_user)
+
+    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='#{grant_role_path(user, 'administrator')}']" do
+        assert_dom "> svg > title", :text => "Grant administrator access"
+      end
+      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']" do
+        assert_dom "> svg > title", :text => "Grant moderator access"
+      end
+      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'importer')}']" do
+        assert_dom "> svg > title", :text => "Grant importer access"
+      end
+    end
 
-    user = create(:user)
-    icons = role_icons(user)
-    assert_dom_equal %( <a confirm="Are you sure you want to grant the role `administrator&#39; to the user `#{user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{URI.encode(user.display_name)}/role/administrator/grant"><picture><source srcset="/images/roles/blank_administrator.svg" type="image/svg+xml" /><img srcset="/images/roles/blank_administrator.svg" border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" /></picture></a> <a confirm="Are you sure you want to grant the role `moderator&#39; to the user `#{user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{URI.encode(user.display_name)}/role/moderator/grant"><picture><source srcset="/images/roles/blank_moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/blank_moderator.svg" border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" /></picture></a>), icons
+    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='#{grant_role_path(user, 'administrator')}']" do
+        assert_dom "> svg > title", :text => "Grant administrator access"
+      end
+      assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'moderator')}']" do
+        assert_dom "> svg > title", :text => "Revoke moderator access"
+      end
+      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'importer')}']" do
+        assert_dom "> svg > title", :text => "Grant importer access"
+      end
+    end
 
-    moderator_user = create(:moderator_user)
-    icons = role_icons(moderator_user)
-    assert_dom_equal %( <a confirm="Are you sure you want to grant the role `administrator&#39; to the user `#{moderator_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{URI.encode(moderator_user.display_name)}/role/administrator/grant"><picture><source srcset="/images/roles/blank_administrator.svg" type="image/svg+xml" /><img srcset="/images/roles/blank_administrator.svg" border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" /></picture></a> <a confirm="Are you sure you want to revoke the role `moderator&#39; from the user `#{moderator_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{URI.encode(moderator_user.display_name)}/role/moderator/revoke"><picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" /></picture></a>), icons
+    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='#{grant_role_path(user, 'administrator')}']" do
+        assert_dom "> svg > title", :text => "Grant administrator access"
+      end
+      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']" do
+        assert_dom "> svg > title", :text => "Grant moderator access"
+      end
+      assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'importer')}']" do
+        assert_dom "> svg > title", :text => "Revoke importer access"
+      end
+    end
 
-    super_user = create(:super_user)
-    icons = role_icons(super_user)
-    assert_dom_equal %( <a confirm="Are you sure you want to revoke the role `administrator&#39; from the user `#{super_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{URI.encode(super_user.display_name)}/role/administrator/revoke"><picture><source srcset="/images/roles/administrator.svg" type="image/svg+xml" /><img srcset="/images/roles/administrator.svg" border="0" alt="Revoke administrator access" title="Revoke administrator access" src="/images/roles/administrator.png" width="20" height="20" /></picture></a> <a confirm="Are you sure you want to revoke the role `moderator&#39; from the user `#{super_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{URI.encode(super_user.display_name)}/role/moderator/revoke"><picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" /></picture></a>), icons
+    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='#{revoke_role_path(user, 'administrator')}']" do
+        assert_dom "> svg > title", :text => "Revoke administrator access"
+      end
+      assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'moderator')}']" do
+        assert_dom "> svg > title", :text => "Revoke moderator access"
+      end
+      assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'importer')}']" do
+        assert_dom "> svg > title", :text => "Revoke importer access"
+      end
+    end
   end
 end