VRFS-850 adding integration tests and refactoring utilities.

This commit is contained in:
Anthony Davis 2013-11-13 00:58:28 -06:00
parent a3dff94f47
commit cd912c9b48
5 changed files with 62 additions and 15 deletions

View File

@ -51,7 +51,7 @@
<div class="clearall"></div>
<div class="mt10" style="padding-left:2px;">
<div class="left">
<a layout-link="add-new-audio-gear" class="button-grey" style="margin-left:0px;">ADD NEW AUDIO GEAR</a>
<a layout-link="add-new-audio-gear" id="btn-add-new-audio-gear" class="button-grey" style="margin-left:0px;">ADD NEW AUDIO GEAR</a>
</div>
<div class="right mr40">
<a layout-action="close" class="button-grey">CANCEL</a>&nbsp;

View File

@ -172,7 +172,7 @@
<div class="clearall"></div>
<div class="mt10" style="padding-left:2px;">
<div class="left">
<a layout-link="add-new-audio-gear" class="button-grey" style="margin-left:0px;">ADD NEW AUDIO GEAR</a>
<a layout-link="add-new-audio-gear" id="btn-add-new-audio-gear" class="button-grey" style="margin-left:0px;">ADD NEW AUDIO GEAR</a>
</div>
<div class="right mr35">
<a id="btn-cancel-settings" class="button-grey">CANCEL</a>&nbsp;

View File

@ -7,7 +7,7 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr
before(:all) do
Capybara.javascript_driver = :poltergeist
Capybara.current_driver = Capybara.javascript_driver
Capybara.default_wait_time = 30 # these tests are SLOOOOOW
Capybara.default_wait_time = 15
end
let(:user) { FactoryGirl.create(:user) }
@ -15,22 +15,53 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr
before(:each) do
UserMailer.deliveries.clear
MusicSession.delete_all
end
it "isn't possible to see a private session until it is made public", :slow => true do
MusicSession.delete_all
it "can't see a private session until it is made public", :slow => true do
create_session(user, description = "Public or private, I cant decide!")
set_session_as_private(user)
in_client(finder) do
sign_in_poltergeist finder
visit "/client#/findSession"
# verify private session is not found
expect(page).to have_selector('#sessions-none-found')
expect(page).to have_selector('#sessions-none-found') # verify private session is not found
end
set_session_as_public(user)
join_session(finder, 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
create_session(user, description = "I'm gonna bail at some point!")
join_session(finder, 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
it "can see all tracks with four users", :slow => true do
others = Array.new
3.times { others.push FactoryGirl.create(:user) }
create_join_session(user, others)
assert_all_tracks_seen(others.push user)
end
end

View File

@ -2,13 +2,6 @@ require 'spec_helper'
describe "Music Session", :js => true, :type => :feature, :capybara_feature => true, :slow => true do
def leave_music_session_sleep_delay
# add a buffer to ensure WSG has enough time to expire
sleep_dur = (Rails.application.config.websocket_gateway_connect_time_stale +
Rails.application.config.websocket_gateway_connect_time_expire) * 1.4
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

View File

@ -44,6 +44,14 @@ def sign_out()
end
def leave_music_session_sleep_delay
# add a buffer to ensure WSG has enough time to expire
sleep_dur = (Rails.application.config.websocket_gateway_connect_time_stale +
Rails.application.config.websocket_gateway_connect_time_expire) * 1.4
sleep sleep_dur
end
def wait_for_ajax(wait=Capybara.default_wait_time)
wait = wait * 10 #(because we sleep .1)
@ -72,6 +80,10 @@ def wait_until_curtain_gone
should have_no_selector('.curtain')
end
def wait_to_see_my_track
within('div.session-mytracks') {first('div.session-track.track')}
end
def determine_test_name(metadata, test_name_buffer = '')
description = metadata[:description_args]
if description.kind_of?(Array)
@ -157,4 +169,15 @@ def set_session_as_public(session_owner)
find('#session-settings-dialog-submit').trigger(:click)
end
end
end
def assert_all_tracks_seen(users=[])
users.each do |user|
in_client(user) do
users.reject {|u| u==user}.each do |other|
expect(page).to have_selector('div.track-label', text: other.name)
#puts user.name + " is able to see " + other.name + "\'s track"
end
end
end
end