vrfs-492: added second-to-last-person test cases; refactored test methods; added contexts
This commit is contained in:
parent
44f1ca0153
commit
282c43eca8
|
|
@ -2,6 +2,33 @@ require 'spec_helper'
|
|||
|
||||
describe "Music Session", :js => true, :type => :feature, :capybara_feature => true do
|
||||
|
||||
def create_music_session
|
||||
uu = FactoryGirl.create(:user)
|
||||
sign_in_poltergeist uu
|
||||
visit "/#/createSession"
|
||||
within('#create-session-form') do
|
||||
fill_in('description', :with => 'foobar')
|
||||
select('Ambient', :from => 'genres')
|
||||
check('intellectual-property')
|
||||
click_link('btn-create-session')
|
||||
end
|
||||
uu
|
||||
end
|
||||
|
||||
def leave_music_session_sleep_delay
|
||||
# add a buffer of 10% to ensure we have enough time and avoid race condition
|
||||
sleep_dur = (Rails.application.config.websocket_gateway_connect_time_stale +
|
||||
Rails.application.config.websocket_gateway_connect_time_expire) * 1.1
|
||||
sleep sleep_dur
|
||||
end
|
||||
|
||||
def leave_music_session_cleanly(usr)
|
||||
usr.music_session_histories.count.should be == 1
|
||||
usr.music_session_user_histories.count.should be == 1
|
||||
usr.music_session_histories[0].session_removed_at.should_not be_nil
|
||||
usr.music_session_user_histories[0].session_removed_at.should_not be_nil
|
||||
end
|
||||
|
||||
subject { page }
|
||||
|
||||
before(:all) do
|
||||
|
|
@ -10,64 +37,74 @@ describe "Music Session", :js => true, :type => :feature, :capybara_feature => t
|
|||
Capybara.default_wait_time = 10
|
||||
end
|
||||
|
||||
let(:user) { FactoryGirl.create(:user) }
|
||||
context "last person" do
|
||||
before(:each) do
|
||||
UserMailer.deliveries.clear
|
||||
@user1 = create_music_session
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
UserMailer.deliveries.clear
|
||||
@user = user
|
||||
sign_in_poltergeist @user
|
||||
visit "/#/createSession"
|
||||
describe "cleanly leaves music session", :slow => true do
|
||||
it "should update music session user session history" do
|
||||
should have_link('session-leave')
|
||||
click_link('session-leave')
|
||||
leave_music_session_sleep_delay
|
||||
|
||||
within('#create-session-form') do
|
||||
fill_in('description', :with => 'foobar')
|
||||
select('Ambient', :from => 'genres')
|
||||
check('intellectual-property')
|
||||
click_link('btn-create-session')
|
||||
@user1.reload
|
||||
@user1.connections.count.should be == 1
|
||||
leave_music_session_cleanly(@user1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "abruptly leaves music session", :slow => true do
|
||||
it "should delete connection and update music session user session history" do
|
||||
should have_link('session-leave')
|
||||
page.evaluate_script("JK.JamServer.close(true)")
|
||||
leave_music_session_sleep_delay
|
||||
|
||||
@user1.reload
|
||||
@user1.connections.count.should be == 0
|
||||
leave_music_session_cleanly(@user1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "last person cleanly leaves session", :slow => true do
|
||||
it "should update music session and user session history" do
|
||||
should have_link('session-leave')
|
||||
click_link('session-leave')
|
||||
# add a buffer of 10% to ensure we have enough time
|
||||
sleep_dur = (Rails.application.config.websocket_gateway_connect_time_stale +
|
||||
Rails.application.config.websocket_gateway_connect_time_expire) * 1.1
|
||||
sleep sleep_dur
|
||||
|
||||
user.reload
|
||||
user.music_session_histories.count.should be == 1
|
||||
user.music_session_user_histories.count.should be == 1
|
||||
user.music_session_histories[0].session_removed_at.should_not be_nil
|
||||
user.music_session_user_histories[0].session_removed_at.should_not be_nil
|
||||
context "second-to-last person " do
|
||||
before(:each) do
|
||||
UserMailer.deliveries.clear
|
||||
in_client(:user1_music_session) do
|
||||
@user1 = create_music_session
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "last person abruptly leaves session", :slow => true do
|
||||
it "should delete connection and update music session and user session history" do
|
||||
should have_link('session-leave')
|
||||
page.evaluate_script("JK.JamServer.close(true)")
|
||||
describe "cleanly leaves music session", :slow => true do
|
||||
it "should update music session and user session history" do
|
||||
in_client(:user2_music_session) do
|
||||
@user2 = create_music_session
|
||||
should have_link('session-leave')
|
||||
click_link('session-leave')
|
||||
leave_music_session_sleep_delay
|
||||
|
||||
# add a buffer of 10% to ensure we have enough time
|
||||
sleep_dur = (Rails.application.config.websocket_gateway_connect_time_stale +
|
||||
Rails.application.config.websocket_gateway_connect_time_expire) * 1.1
|
||||
sleep sleep_dur
|
||||
|
||||
user.reload
|
||||
user.connections.count.should be == 0
|
||||
user.music_session_histories.count.should be == 1
|
||||
user.music_session_user_histories.count.should be == 1
|
||||
user.music_session_histories[0].session_removed_at.should_not be_nil
|
||||
user.music_session_user_histories[0].session_removed_at.should_not be_nil
|
||||
@user2.reload
|
||||
@user2.connections.count.should be == 1
|
||||
leave_music_session_cleanly(@user2)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "person cleanly leaves session" do
|
||||
pending
|
||||
end
|
||||
describe "abruptly leaves music session", :slow => true do
|
||||
it "should update music session and user session history" do
|
||||
in_client(:user2_music_session) do
|
||||
@user2 = create_music_session
|
||||
should have_link('session-leave')
|
||||
page.evaluate_script("JK.JamServer.close(true)")
|
||||
leave_music_session_sleep_delay
|
||||
|
||||
describe "person abruptly leaves session" do
|
||||
pending
|
||||
@user2.reload
|
||||
@user2.connections.count.should be == 0
|
||||
leave_music_session_cleanly(@user2)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue