166 lines
4.9 KiB
Ruby
166 lines
4.9 KiB
Ruby
require "rails_helper"
|
|
|
|
feature "Home" do
|
|
|
|
context "For not logged users" do
|
|
|
|
scenario "Welcome message" do
|
|
visit root_path
|
|
|
|
expect(page).to have_content "CONSUL"
|
|
end
|
|
|
|
scenario "Not display recommended section" do
|
|
debate = create(:debate)
|
|
|
|
visit root_path
|
|
|
|
expect(page).not_to have_content "Recommendations that may interest you"
|
|
end
|
|
|
|
end
|
|
|
|
context "For signed in users" do
|
|
|
|
feature "Recommended" do
|
|
|
|
background do
|
|
Setting["feature.user.recommendations"] = true
|
|
user = create(:user)
|
|
proposal = create(:proposal, tag_list: "Sport")
|
|
create(:follow, followable: proposal, user: user)
|
|
login_as(user)
|
|
end
|
|
|
|
after do
|
|
Setting["feature.user.recommendations"] = nil
|
|
end
|
|
|
|
scenario "Display recommended section when feature flag recommended is active" do
|
|
debate = create(:debate, tag_list: "Sport")
|
|
visit root_path
|
|
expect(page).to have_content "Recommendations that may interest you"
|
|
end
|
|
|
|
scenario "Not display recommended section when feature flag recommended is not active" do
|
|
debate = create(:debate, tag_list: "Sport")
|
|
Setting["feature.user.recommendations"] = false
|
|
|
|
visit root_path
|
|
|
|
expect(page).not_to have_content "Recommendations that may interest you"
|
|
end
|
|
|
|
scenario "Display debates" do
|
|
debate = create(:debate, tag_list: "Sport")
|
|
|
|
visit root_path
|
|
|
|
expect(page).to have_content debate.title
|
|
expect(page).to have_content debate.description
|
|
end
|
|
|
|
scenario "Display all recommended debates link" do
|
|
debate = create(:debate, tag_list: "Sport")
|
|
visit root_path
|
|
expect(page).to have_link("All recommended debates", href: debates_path(order: "recommendations"))
|
|
end
|
|
|
|
scenario "Display proposal" do
|
|
proposal = create(:proposal, tag_list: "Sport")
|
|
|
|
visit root_path
|
|
|
|
expect(page).to have_content proposal.title
|
|
expect(page).to have_content proposal.description
|
|
end
|
|
|
|
scenario "Display all recommended proposals link" do
|
|
debate = create(:proposal, tag_list: "Sport")
|
|
visit root_path
|
|
expect(page).to have_link("All recommended proposals", href: proposals_path(order: "recommendations"))
|
|
end
|
|
|
|
scenario "Display orbit carrousel" do
|
|
create_list(:debate, 3, tag_list: "Sport")
|
|
|
|
visit root_path
|
|
|
|
expect(page).to have_selector("li[data-slide='0']")
|
|
expect(page).to have_selector("li[data-slide='1']", visible: false)
|
|
expect(page).to have_selector("li[data-slide='2']", visible: false)
|
|
end
|
|
|
|
scenario "Display recommended show when click on carousel" do
|
|
debate = create(:debate, tag_list: "Sport")
|
|
|
|
visit root_path
|
|
|
|
within("#section_recommended") do
|
|
click_on debate.title
|
|
end
|
|
|
|
expect(page).to have_current_path(debate_path(debate))
|
|
end
|
|
|
|
scenario "Do not display recommended section when there are not debates and proposals" do
|
|
visit root_path
|
|
expect(page).not_to have_content "Recommendations that may interest you"
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
feature "IE alert" do
|
|
scenario "IE visitors are presented with an alert until they close it", :page_driver do
|
|
# Selenium API does not include page request/response inspection methods
|
|
# so we must use Capybara::RackTest driver to set the browser's headers
|
|
Capybara.current_session.driver.header(
|
|
"User-Agent",
|
|
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"
|
|
)
|
|
|
|
visit root_path
|
|
expect(page).to have_xpath(ie_alert_box_xpath, visible: false)
|
|
expect(page.driver.request.cookies["ie_alert_closed"]).to be_nil
|
|
|
|
# faking close button, since a normal find and click
|
|
# will not work as the element is inside a HTML conditional comment
|
|
page.driver.browser.set_cookie("ie_alert_closed=true")
|
|
|
|
visit root_path
|
|
expect(page).not_to have_xpath(ie_alert_box_xpath, visible: false)
|
|
expect(page.driver.request.cookies["ie_alert_closed"]).to eq("true")
|
|
end
|
|
|
|
scenario "non-IE visitors are not bothered with IE alerts", :page_driver do
|
|
visit root_path
|
|
expect(page).not_to have_xpath(ie_alert_box_xpath, visible: false)
|
|
expect(page.driver.request.cookies["ie_alert_closed"]).to be_nil
|
|
end
|
|
|
|
def ie_alert_box_xpath
|
|
"/html/body/div[@class='wrapper ']/comment()[contains(.,'ie-callout')]"
|
|
end
|
|
end
|
|
|
|
scenario "if there are cards, the 'featured' title will render" do
|
|
card = create(:widget_card,
|
|
title: "Card text",
|
|
description: "Card description",
|
|
link_text: "Link text",
|
|
link_url: "consul.dev"
|
|
)
|
|
|
|
visit root_path
|
|
|
|
expect(page).to have_css(".title", text: "Featured")
|
|
end
|
|
|
|
scenario "if there are no cards, the 'featured' title will not render" do
|
|
visit root_path
|
|
|
|
expect(page).not_to have_css(".title", text: "Featured")
|
|
end
|
|
end
|