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:
Javi Martín
2019-04-29 12:26:17 +02:00
parent 12774c7484
commit 9427f01442
190 changed files with 14 additions and 54 deletions

View 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