Use system specs instead of feature specs
We get rid of database cleaner, and JavaScript tests are faster because between tests we now rollback transactions instead of truncating the database.
This commit is contained in:
173
spec/system/admin/homepage/homepage_spec.rb
Normal file
173
spec/system/admin/homepage/homepage_spec.rb
Normal file
@@ -0,0 +1,173 @@
|
||||
require "rails_helper"
|
||||
|
||||
describe "Homepage" 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
|
||||
|
||||
admin = create(:administrator).user
|
||||
login_as(admin)
|
||||
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", :js do
|
||||
5.times { create(:proposal) }
|
||||
|
||||
visit admin_homepage_path
|
||||
|
||||
within("#widget_feed_#{proposals_feed.id}") do
|
||||
select "1", from: "widget_feed_limit"
|
||||
accept_confirm { click_button "Enable" }
|
||||
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", :js do
|
||||
5.times { create(:debate) }
|
||||
|
||||
visit admin_homepage_path
|
||||
within("#widget_feed_#{debates_feed.id}") do
|
||||
select "2", from: "widget_feed_limit"
|
||||
accept_confirm { click_button "Enable" }
|
||||
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", :js 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"
|
||||
accept_confirm { click_button "Enable" }
|
||||
end
|
||||
|
||||
within("#widget_feed_#{debates_feed.id}") do
|
||||
select "3", from: "widget_feed_limit"
|
||||
accept_confirm { click_button "Enable" }
|
||||
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
|
||||
|
||||
expect(page).to have_css("#feed_proposals.medium-8")
|
||||
expect(page).to have_css("#feed_debates.medium-4")
|
||||
end
|
||||
|
||||
scenario "Processes", :js do
|
||||
5.times { create(:legislation_process) }
|
||||
|
||||
visit admin_homepage_path
|
||||
within("#widget_feed_#{processes_feed.id}") do
|
||||
select "3", from: "widget_feed_limit"
|
||||
accept_confirm { click_button "Enable" }
|
||||
end
|
||||
|
||||
visit root_path
|
||||
|
||||
expect(page).to have_content "Open processes"
|
||||
expect(page).to have_css(".legislation_process", count: 3)
|
||||
end
|
||||
|
||||
xscenario "Deactivate"
|
||||
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("#setting_#{user_recommendations.id}") do
|
||||
click_button "Enable"
|
||||
end
|
||||
|
||||
expect(page).to have_content "Value updated"
|
||||
|
||||
login_as(user)
|
||||
visit root_path
|
||||
|
||||
expect(page).to have_content("Recommendations that may interest you")
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user