They were marked as pending.
Note Capybara doesn't support finding a button by its `aria-labelledby`
attribute, so we're using the ugly `click_button "Yes"`, like we did in
commit fabe97e50.
228 lines
6.1 KiB
Ruby
228 lines
6.1 KiB
Ruby
require "rails_helper"
|
|
|
|
describe "Homepage", :admin do
|
|
before do
|
|
Setting["homepage.widgets.feeds.proposals"] = false
|
|
Setting["homepage.widgets.feeds.debates"] = false
|
|
Setting["homepage.widgets.feeds.processes"] = false
|
|
Setting["feature.user.recommendations"] = false
|
|
end
|
|
|
|
let!(:proposals_feed) { create(:widget_feed, kind: "proposals") }
|
|
let!(:debates_feed) { create(:widget_feed, kind: "debates") }
|
|
let!(:processes_feed) { create(:widget_feed, kind: "processes") }
|
|
|
|
let(:user_recommendations) { Setting.find_by(key: "feature.user.recommendations") }
|
|
let(:user) { create(:user) }
|
|
|
|
context "Header" do
|
|
scenario "Admin menu links to homepage path" do
|
|
visit new_admin_widget_card_path(header_card: true)
|
|
|
|
click_link "#{Setting["org_name"]} Administration"
|
|
|
|
expect(page).to have_current_path(admin_root_path)
|
|
end
|
|
end
|
|
|
|
context "Feeds" do
|
|
scenario "Proposals" do
|
|
5.times { create(:proposal) }
|
|
|
|
visit admin_homepage_path
|
|
|
|
within("#widget_feed_#{proposals_feed.id}") do
|
|
select "1", from: "widget_feed_limit"
|
|
click_button "No"
|
|
|
|
expect(page).to have_button "Yes"
|
|
end
|
|
|
|
visit root_path
|
|
|
|
within("#feed_proposals") do
|
|
expect(page).to have_content "Most active proposals"
|
|
expect(page).to have_css(".proposal", count: 1)
|
|
end
|
|
|
|
expect(page).not_to have_css("#feed_proposals.medium-8")
|
|
end
|
|
|
|
scenario "Debates" do
|
|
5.times { create(:debate) }
|
|
|
|
visit admin_homepage_path
|
|
within("#widget_feed_#{debates_feed.id}") do
|
|
select "2", from: "widget_feed_limit"
|
|
click_button "No"
|
|
|
|
expect(page).to have_button "Yes"
|
|
end
|
|
|
|
visit root_path
|
|
|
|
within("#feed_debates") do
|
|
expect(page).to have_content "Most active debates"
|
|
expect(page).to have_css(".debate", count: 2)
|
|
end
|
|
|
|
expect(page).not_to have_css("#feed_debates.medium-4")
|
|
end
|
|
|
|
scenario "Proposals and debates" do
|
|
3.times { create(:proposal) }
|
|
3.times { create(:debate) }
|
|
|
|
visit admin_homepage_path
|
|
|
|
within("#widget_feed_#{proposals_feed.id}") do
|
|
select "3", from: "widget_feed_limit"
|
|
click_button "No"
|
|
|
|
expect(page).to have_button "Yes"
|
|
end
|
|
|
|
within("#widget_feed_#{debates_feed.id}") do
|
|
select "3", from: "widget_feed_limit"
|
|
click_button "No"
|
|
|
|
expect(page).to have_button "Yes"
|
|
end
|
|
|
|
visit root_path
|
|
|
|
within("#feed_proposals") do
|
|
expect(page).to have_content "Most active proposals"
|
|
expect(page).to have_css(".proposal", count: 3)
|
|
end
|
|
|
|
within("#feed_debates") do
|
|
expect(page).to have_content "Most active debates"
|
|
expect(page).to have_css(".debate", count: 3)
|
|
end
|
|
end
|
|
|
|
scenario "Processes" do
|
|
5.times { create(:legislation_process) }
|
|
|
|
visit admin_homepage_path
|
|
within("#widget_feed_#{processes_feed.id}") do
|
|
select "3", from: "widget_feed_limit"
|
|
click_button "No"
|
|
|
|
expect(page).to have_button "Yes"
|
|
end
|
|
|
|
visit root_path
|
|
|
|
expect(page).to have_content "Open processes"
|
|
expect(page).to have_css(".legislation-process", count: 3)
|
|
end
|
|
|
|
scenario "Deactivate proposals" do
|
|
Setting["homepage.widgets.feeds.proposals"] = true
|
|
create(:proposal)
|
|
|
|
visit admin_homepage_path
|
|
|
|
within("#widget_feed_#{proposals_feed.id}") do
|
|
click_button "Yes"
|
|
|
|
expect(page).to have_button "No"
|
|
end
|
|
|
|
visit root_path
|
|
|
|
expect(page).not_to have_content "Most active proposals"
|
|
end
|
|
|
|
scenario "Deactivate debates" do
|
|
Setting["homepage.widgets.feeds.debates"] = true
|
|
create(:debate)
|
|
|
|
visit admin_homepage_path
|
|
|
|
within("#widget_feed_#{debates_feed.id}") do
|
|
click_button "Yes"
|
|
|
|
expect(page).to have_button "No"
|
|
end
|
|
|
|
visit root_path
|
|
|
|
expect(page).not_to have_content "Most active debates"
|
|
end
|
|
|
|
scenario "Deactivate processes" do
|
|
Setting["homepage.widgets.feeds.processes"] = true
|
|
create(:legislation_process)
|
|
|
|
visit admin_homepage_path
|
|
|
|
within("#widget_feed_#{processes_feed.id}") do
|
|
click_button "Yes"
|
|
|
|
expect(page).to have_button "No"
|
|
end
|
|
|
|
visit root_path
|
|
|
|
expect(page).not_to have_content "Open processes"
|
|
end
|
|
end
|
|
|
|
scenario "Cards" do
|
|
card1 = create(:widget_card, label: "Card1 label",
|
|
title: "Card1 text",
|
|
description: "Card1 description",
|
|
link_text: "Link1 text",
|
|
link_url: "consul1.dev")
|
|
|
|
card2 = create(:widget_card, label: "Card2 label",
|
|
title: "Card2 text",
|
|
description: "Card2 description",
|
|
link_text: "Link2 text",
|
|
link_url: "consul2.dev")
|
|
|
|
visit root_path
|
|
|
|
expect(page).to have_css(".card", count: 2)
|
|
|
|
within("#widget_card_#{card1.id}") do
|
|
expect(page).to have_content("CARD1 LABEL")
|
|
expect(page).to have_content("CARD1 TEXT")
|
|
expect(page).to have_content("Card1 description")
|
|
expect(page).to have_content("Link1 text")
|
|
expect(page).to have_link(href: "consul1.dev")
|
|
expect(page).to have_css("img[alt='#{card1.image.title}']")
|
|
end
|
|
|
|
within("#widget_card_#{card2.id}") do
|
|
expect(page).to have_content("CARD2 LABEL")
|
|
expect(page).to have_content("CARD2 TEXT")
|
|
expect(page).to have_content("Card2 description")
|
|
expect(page).to have_content("Link2 text")
|
|
expect(page).to have_link(href: "consul2.dev")
|
|
expect(page).to have_css("img[alt='#{card2.image.title}']")
|
|
end
|
|
end
|
|
|
|
scenario "Recomendations" do
|
|
create(:proposal, tag_list: "Sport", followers: [user])
|
|
create(:proposal, tag_list: "Sport")
|
|
|
|
visit admin_homepage_path
|
|
|
|
within("#edit_setting_#{user_recommendations.id}") do
|
|
click_button "No"
|
|
|
|
expect(page).to have_button "Yes"
|
|
end
|
|
|
|
login_as(user)
|
|
visit root_path
|
|
|
|
expect(page).to have_content("Recommendations that may interest you")
|
|
end
|
|
end
|