81 lines
4.2 KiB
Ruby
81 lines
4.2 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe "Launch App", :js => true, :type => :feature, :capybara_feature => true do
|
|
|
|
subject { page }
|
|
|
|
let(:user) { FactoryGirl.create(:user) }
|
|
let(:ams) { FactoryGirl.create(:active_music_session, creator: user) }
|
|
|
|
before(:each) do
|
|
ActiveMusicSession.delete_all
|
|
MusicSession.delete_all
|
|
end
|
|
|
|
share_examples_for :launch_not_supported do |options|
|
|
it "should indicate not supported" do
|
|
sign_in_poltergeist user
|
|
ams.touch if options[:need_session]
|
|
visit options[:screen_path]
|
|
if options[:actions]
|
|
options[:actions].call(page)
|
|
end
|
|
should have_selector('h1', text: 'Application Notice')
|
|
if options[:gear_modal] && options[:gear_modal] == true
|
|
should have_selector('p', text: 'To configure your audio gear, you must use the JamKazam application. Please download and install the application if you have not done so already.')
|
|
else
|
|
should have_selector('p', text: 'To create or find and join a session, you must use the JamKazam application. Please download and install the application if you have not done so already.')
|
|
end
|
|
|
|
find('a.btn-go-to-download-page').trigger(:click)
|
|
find('h3', text: 'SYSTEM REQUIREMENTS:')
|
|
end
|
|
end
|
|
|
|
share_examples_for :launch_supported do |options|
|
|
it "should indicate supported" do
|
|
sign_in_poltergeist user
|
|
ams.touch if options[:need_session]
|
|
visit options[:screen_path]
|
|
if options[:actions]
|
|
options[:actions].call(page)
|
|
end
|
|
should have_selector('h1', text: 'Application Notice')
|
|
if options[:gear_modal] && options[:gear_modal] == true
|
|
should have_selector('p', text: 'To configure your audio gear, you must use the JamKazam application.')
|
|
else
|
|
should have_selector('p', text: 'To create or find and join a session, you must use the JamKazam application.')
|
|
end
|
|
should have_selector('.btn-launch-app')
|
|
find('.btn-launch-app')['href'].start_with?('jamkazam:')
|
|
end
|
|
end
|
|
|
|
describe "unsupported" do
|
|
|
|
before do
|
|
# emulate mac safari
|
|
page.driver.headers = { 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.74.9 (KHTML, like Gecko) Version/7.0.2 Safari/537.74.9'}
|
|
end
|
|
it_behaves_like :launch_not_supported, screen_path: '/client#/createSession', actions: lambda { |page| page.find('li[create-type="quick-start"] ins').trigger(:click); page.find('.btn-next').trigger(:click) }
|
|
it_behaves_like :launch_not_supported, screen_path: '/client#/createSession', actions: lambda { |page| page.find('li[create-type="immediately"] ins').trigger(:click); page.find('.btn-next').trigger(:click) }
|
|
it_behaves_like :launch_not_supported, screen_path: '/client#/createSession', actions: lambda { |page| page.find('li[create-type="start-scheduled"] ins').trigger(:click); page.find('.btn-next').trigger(:click) }
|
|
it_behaves_like :launch_not_supported, screen_path: '/client#/findSession', actions: lambda { |page| page.find('.join-link').trigger(:click) }, need_session: true
|
|
it_behaves_like :launch_not_supported, screen_path: '/client#/account/audio', gear_modal: true
|
|
end
|
|
|
|
describe "supported" do
|
|
before do
|
|
# emulate chrome
|
|
page.driver.headers = { 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36'}
|
|
end
|
|
it_behaves_like :launch_supported, screen_path: '/client#/createSession', actions: lambda { |page| page.find('li[create-type="quick-start"] ins').trigger(:click); page.find('.btn-next').trigger(:click) }
|
|
it_behaves_like :launch_supported, screen_path: '/client#/createSession', actions: lambda { |page| page.find('li[create-type="immediately"] ins').trigger(:click); page.find('.btn-next').trigger(:click) }
|
|
it_behaves_like :launch_supported, screen_path: '/client#/createSession', actions: lambda { |page| page.find('li[create-type="start-scheduled"] ins').trigger(:click); page.find('.btn-next').trigger(:click) }
|
|
it_behaves_like :launch_supported, screen_path: '/client#/findSession', actions: lambda { |page| page.find('.join-link').trigger(:click) }, need_session: true
|
|
it_behaves_like :launch_supported, screen_path: '/client#/account/audio', gear_modal: true
|
|
end
|
|
end
|
|
|
|
|