spec/components/layout/admin_login_items_component_spec.rb
require "rails_helper"
describe Layout::AdminLoginItemsComponent do
it "is not rendered for anonymous users" do
render_inline Layout::AdminLoginItemsComponent.new(nil)
expect(page).not_to be_rendered
end
it "is not rendered for regular users" do
user = create(:user, :level_two)
render_inline Layout::AdminLoginItemsComponent.new(user)
expect(page).not_to be_rendered
end
it "shows access to all places except officing to administrators" do
user = create(:administrator).user
render_inline Layout::AdminLoginItemsComponent.new(user)
expect(page).to have_link "Menu"
page.find("ul") do |menu|
expect(menu).to have_link "Administration"
expect(menu).to have_link "Moderation"
expect(menu).to have_link "Valuation"
expect(menu).to have_link "Management"
expect(menu).to have_link "SDG content"
expect(menu).to have_link count: 5
end
end
it "shows the moderation link to moderators" do
user = create(:moderator).user
render_inline Layout::AdminLoginItemsComponent.new(user)
expect(page).to have_link "Menu"
page.find("ul") do |menu|
expect(menu).to have_link "Moderation"
expect(menu).to have_link count: 1
end
end
it "shows the valuation link to valuators" do
user = create(:valuator).user
render_inline Layout::AdminLoginItemsComponent.new(user)
expect(page).to have_link "Menu"
page.find("ul") do |menu|
expect(menu).to have_link "Valuation"
expect(menu).to have_link count: 1
end
end
it "shows the management link to managers" do
user = create(:manager).user
render_inline Layout::AdminLoginItemsComponent.new(user)
expect(page).to have_link "Menu"
page.find("ul") do |menu|
expect(menu).to have_link "Management"
expect(menu).to have_link count: 1
end
end
it "shows the SDG content link to SDG managers" do
user = create(:sdg_manager).user
render_inline Layout::AdminLoginItemsComponent.new(user)
expect(page).to have_link "Menu"
page.find("ul") do |menu|
expect(menu).to have_link "SDG content"
expect(menu).to have_link count: 1
end
end
it "does not show the SDG content link when the SDG feature is disabled" do
Setting["feature.sdg"] = false
user = create(:administrator).user
render_inline Layout::AdminLoginItemsComponent.new(user)
expect(page).to have_link "Menu"
page.find("ul") do |menu|
expect(menu).to have_link "Administration"
expect(menu).to have_link "Moderation"
expect(menu).to have_link "Valuation"
expect(menu).to have_link "Management"
expect(menu).to have_link count: 4
end
end
it "shows the officing link to poll officers" do
user = create(:poll_officer).user
render_inline Layout::AdminLoginItemsComponent.new(user)
expect(page).to have_link "Menu"
page.find("ul") do |menu|
expect(menu).to have_link "Polling officers"
expect(menu).to have_link count: 1
end
end
it "shows several links to users with several roles" do
user = create(:user)
create(:moderator, user: user)
create(:manager, user: user)
render_inline Layout::AdminLoginItemsComponent.new(user)
expect(page).to have_link "Menu"
page.find("ul") do |menu|
expect(menu).to have_link "Moderation"
expect(menu).to have_link "Management"
expect(menu).to have_link count: 2
end
end
end