jam-cloud/web/spec/features/in_session_spec.rb

99 lines
3.0 KiB
Ruby

require 'spec_helper'
describe "In a Session", :js => true, :type => :feature, :capybara_feature => true do
subject { page }
before(:all) do
Capybara.default_wait_time = 15
end
let(:user) { FactoryGirl.create(:user) }
let(:finder) { FactoryGirl.create(:user) }
before(:each) do
UserMailer.deliveries.clear
ActiveMusicSession.delete_all
end
it "can't see a private session until it is made public", :slow => true do
description = "Public or private, I cant decide!"
create_session(creator: user, description: description)
in_client(user) do
set_session_access :private
end
in_client(finder) do
emulate_client
sign_in_poltergeist finder
visit "/client#/findSession"
expect(page).to have_selector('#no-active-sessions') # verify private session is not found
sign_out_poltergeist(validate: true)
end
in_client(user) do
set_session_access :public
end
join_session(finder, description: description) # verify the public session is able to be joined
end
it "can open the Configure Tracks modal, and Add New Audio Gear", :slow => true do
description = "I'm gonna bail at some point!"
create_session(creator: user, description: description)
join_session(finder, description: description)
assert_all_tracks_seen(users=[user, finder])
in_client(user) do
find('#track-settings').trigger(:click)
wait_for_ajax
expect(page).to have_selector('h1', text: 'configure tracks')
find('.btn-add-new-audio-gear').trigger(:click)
wait_for_ajax
expect(page).to have_selector('h1', text: 'add new audio gear')
find('#btn-leave-session-test').trigger(:click)
wait_for_ajax
expect(page).to have_selector('h1', text: 'audio gear setup')
end
leave_music_session_sleep_delay
in_client(finder) { expect(page).to_not have_selector('div.track-label', text: user.name) }
end
many = 4
it "can see all tracks with #{many} users in a session", :slow => true do
others = Array.new
(many-1).times { others.push FactoryGirl.create(:user) }
create_join_session(user, others)
assert_all_tracks_seen(others.push user)
#in_client(others[0]) {page.save_screenshot('tmp/partys_all_here_now.png')}
end
it "a user can change the genre and the Find Session screen will be updated" do
create_session(creator: user)
in_client(finder) { sign_in_poltergeist finder }
# this used to randomly select genres, but it breaks if the genre contains the name work due to multiple matching genres
['Electronic', 'Religious'].each do |new_genre|
in_client(finder) do
find_session_contains?(new_genre)
end
end
end
it "can rejoin private session as creator" do
pending
creator, description = create_join_session(user, [finder])
in_client(user) do
set_session_access :private
formal_leave_by user
sign_out_poltergeist user
end
join_session(user, description: description)
end
end