150 lines
3.8 KiB
Ruby
150 lines
3.8 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe "Home Screen", :js => true, :type => :feature, :capybara_feature => true do
|
|
|
|
subject { page }
|
|
|
|
before(:all) do
|
|
Capybara.javascript_driver = :poltergeist
|
|
Capybara.current_driver = Capybara.javascript_driver
|
|
Capybara.default_wait_time = 10
|
|
MusicSession.delete_all
|
|
end
|
|
|
|
let(:user) { FactoryGirl.create(:user) }
|
|
|
|
|
|
share_examples_for :has_footer do
|
|
it "should have footer elements" do
|
|
should have_selector('#footer-links')
|
|
find('#footer-links').should have_content('about')
|
|
find('#footer-links').should have_content('news')
|
|
find('#footer-links').should have_content('media')
|
|
find('#footer-links').should have_content('contact')
|
|
find('#footer-links').should have_content('privacy')
|
|
find('#footer-links').should have_content('terms of service')
|
|
find('#footer-links').should have_content('help')
|
|
end
|
|
end
|
|
|
|
shared_examples_for :go_home do
|
|
it "can go back to home" do
|
|
find('a.home-icon').trigger(:click)
|
|
find('h2', text: 'account')
|
|
end
|
|
end
|
|
|
|
shared_examples_for :create_session_homecard do
|
|
describe 'Create Session' do
|
|
before(:each) do
|
|
find('h2', text: 'create session').trigger(:click)
|
|
end
|
|
|
|
it { should have_selector('h1', text: 'create session') }
|
|
it_behaves_like :go_home
|
|
end
|
|
end
|
|
|
|
shared_examples_for :find_session_homecard do
|
|
describe 'Find Session' do
|
|
before(:each) do
|
|
find('h2', text: 'find session').trigger(:click)
|
|
end
|
|
|
|
it { should have_selector('h1', text: 'find a session') }
|
|
it_behaves_like :go_home
|
|
end
|
|
end
|
|
|
|
shared_examples_for :feed_homecard do
|
|
describe 'Feed' do
|
|
before(:each) do
|
|
find('h2', text: 'feed').trigger(:click)
|
|
end
|
|
|
|
it { should have_selector('h1', text: 'feed') }
|
|
it_behaves_like :go_home
|
|
end
|
|
end
|
|
|
|
shared_examples_for :musicians_homecard do
|
|
describe 'Musicians' do
|
|
before(:each) do
|
|
find('h2', text: 'musicians').trigger(:click)
|
|
end
|
|
|
|
it { should have_selector('h1', text: 'musicians') }
|
|
it_behaves_like :go_home
|
|
end
|
|
end
|
|
|
|
shared_examples_for :bands_homecard do
|
|
describe 'Bands' do
|
|
before(:each) do
|
|
find('h2', text: 'bands').trigger(:click)
|
|
end
|
|
|
|
it { should have_selector('h1', text: 'bands') }
|
|
it_behaves_like :go_home
|
|
end
|
|
end
|
|
|
|
shared_examples_for :profile_homecard do
|
|
describe 'Profile' do
|
|
before(:each) do
|
|
find('h2', text: 'profile').trigger(:click)
|
|
end
|
|
|
|
it { should have_selector('h1', text: 'musician profile') }
|
|
it_behaves_like :go_home
|
|
end
|
|
end
|
|
|
|
shared_examples_for :account_homecard do
|
|
describe 'Account' do
|
|
before(:each) do
|
|
find('h2', text: 'account').trigger(:click)
|
|
end
|
|
|
|
it { should have_selector('h1', text: 'my account') }
|
|
it_behaves_like :go_home
|
|
end
|
|
end
|
|
|
|
describe 'Home Screen while in Native Client' do
|
|
before(:each) do
|
|
UserMailer.deliveries.clear
|
|
page.driver.headers = { 'User-Agent' => ' JamKazam ' }
|
|
sign_in_poltergeist user
|
|
visit "/client"
|
|
end
|
|
|
|
it_behaves_like :has_footer
|
|
it_behaves_like :create_session_homecard
|
|
it_behaves_like :find_session_homecard
|
|
it_behaves_like :feed_homecard
|
|
it_behaves_like :musicians_homecard
|
|
it_behaves_like :bands_homecard
|
|
it_behaves_like :account_homecard
|
|
it_behaves_like :profile_homecard
|
|
end
|
|
|
|
describe 'Home Screen while in Browser' do
|
|
before(:each) do
|
|
UserMailer.deliveries.clear
|
|
page.driver.headers = { 'User-Agent' => 'Firefox' }
|
|
sign_in_poltergeist user
|
|
visit "/client"
|
|
end
|
|
|
|
it_behaves_like :has_footer
|
|
it_behaves_like :feed_homecard
|
|
it_behaves_like :musicians_homecard
|
|
it_behaves_like :bands_homecard
|
|
it_behaves_like :account_homecard
|
|
it_behaves_like :profile_homecard
|
|
end
|
|
|
|
|
|
end
|