- user = create(:user)
- icons = role_icons(user)
- expected = <<~HTML.delete("\n")
- <a data-confirm="Are you sure you want to grant the role `administrator' to the user `#{user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(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 data-confirm="Are you sure you want to grant the role `moderator' to the user `#{user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(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>
- HTML
- assert_dom_equal expected, icons
-
- moderator_user = create(:moderator_user)
- icons = role_icons(moderator_user)
- expected = <<~HTML.delete("\n")
- <a data-confirm="Are you sure you want to grant the role `administrator' to the user `#{moderator_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(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 data-confirm="Are you sure you want to revoke the role `moderator' from the user `#{moderator_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(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>
- HTML
- assert_dom_equal expected, icons
-
- super_user = create(:super_user)
- icons = role_icons(super_user)
- expected = <<~HTML.delete("\n")
- <a data-confirm="Are you sure you want to revoke the role `administrator' from the user `#{super_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(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 data-confirm="Are you sure you want to revoke the role `moderator' from the user `#{super_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(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>
- 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='#{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
+
+ 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
+
+ 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
+
+ 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