172 lines
7.1 KiB
Ruby
172 lines
7.1 KiB
Ruby
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
|
|
|
|
def test_role_icons_normal
|
|
self.current_user = create(:user)
|
|
|
|
icons = role_icons(current_user)
|
|
assert_dom_equal "", icons
|
|
|
|
icons = role_icons(create(:moderator_user))
|
|
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))
|
|
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)
|
|
|
|
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
|