require 'spec_helper' describe "Profile Menu", :js => true, :type => :feature, :capybara_feature => true do subject { page } let(:user) { FactoryGirl.create(:user) } shared_examples_for "Profile Menu Assertions" do |pops_external| describe "Account Home link" do before(:each) do click_link 'Account Home' end it { should have_selector('h1', text: 'my account') } end describe "Identity link" do before(:each) do click_link 'Identity' end it { should have_selector('h2', text: 'identity:') } end describe "Profile link" do before(:each) do click_link 'Profile' end it { should have_selector('h2', text: 'profile:') } end describe "Audio Gear link" do before(:each) do click_link 'Audio Gear' end it { should have_selector('h2', text: 'audio profiles:') } end describe "Sign Out" do before(:each) do sign_out # this totally cheats. but... we find that a cookie set by poltergeist set_cookie won't be deleted by Rails delete cookie # it's probably a domain matching problem click_link 'Sign Out' end it { should_be_at_logged_out_client } end describe "Download App link" do before(:each) do click_link 'Download App' end it { # the download app link opens a new window in the client, but not non-client areas of the site if pops_external page.driver.window_handles.last page.within_window page.driver.window_handles.last do should have_content("Play and control your JamTracks multi-track recordings") #should have_content('JamTracks are multi-track pro recordings you can use to:') end else should have_selector("a.current-os-download") end } end describe "invite submenu" do before(:each) do click_link "Invite Friends" end describe "Email" do before(:each) do click_link "Email" end it {should have_selector('label', text: 'Enter email address(es). If multiple addresses, separate with commas.')} end end end describe "Profile Menu while in Client" do before(:each) do UserMailer.deliveries.clear fast_signin(user, "/client") find('h2', text: 'musicians') # open menu find('.userinfo').hover find('a', text: 'Sign Out') end it_behaves_like "Profile Menu Assertions", true end describe "Profile Menu while in Web (hidden)" do before(:each) do UserMailer.deliveries.clear fast_signin(user, "/downloads") find('h2.create-account-header') # it's not in /downloads anymore expect(page).to_not have_selector('.userinfo') end end end