Since the change on commit cbbe188d6 we added a Poll.current.any?
condition to show the officing link on admin menu to officers.
That condition doesn't have much sense since Poll results only can be
added after a poll has ended, and there may be only one active poll.
133 lines
3.4 KiB
Ruby
133 lines
3.4 KiB
Ruby
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
|