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