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

71 lines
2.9 KiB
Ruby

require 'spec_helper'
describe "Music session video button", :js => true, :type => :feature, :capybara_feature => true do
subject { page }
let(:user) { FactoryGirl.create(:user, subscription_plan_code: 'jamsubplatinum') }
let(:connection) { FactoryGirl.create(:connection, :user => user, addr: "1.1.1.1") }
let(:music_session) {
ms = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => true)
ms.save!
ms
}
before(:each) do
MusicSession.delete_all
ActiveMusicSession.delete_all
@url = "/client#/session/#{music_session.id}"
Gon.global.use_video_conferencing_server = false
end
describe "user has opted for video conferencing server" do
before do
user.use_video_conferencing_server = true
user.save!
end
it "opens video conferencing server page" do
fast_signin(user, @url)
# give the web page a little time to connect; sometimes in firefox this needs some time to connect
page.should_not have_selector('span.disconnected-msg', text: 'DISCONNECTED FROM SERVER')
execute_script("window.VideoActions.setVideoEnabled(true)") #force video capability of the browser
# this should open a new window/tab to a different site, as configured by the new
# Rails.configuration.video_conferencing_host parameter.
temp_tokens_count = JamRuby::TempToken.count
vid_btn = find(".session-video-btn")
new_window = window_opened_by { find(".session-video-btn").click() } #assure a new popup window is opened by clicking video button
within_window new_window do
expect(TempToken.count).to eq(temp_tokens_count + 1)
end
# We only need to verify that secondary window opens up. We should probably also test that a new TempToken record
# was created as a result of clicking the video button .I wouldn't bother testing anything else in this particular
# test.
#
# It's true that this secondary window (in staging/production) will load a site that will then in turn call the
# new controller token auth method.. but we can test the correctness of the new controller method in a much
# simpler web/spec/controller spec
end
end
describe "user has NOT opted for video conferencing server" do
before do
user.use_video_conferencing_server = false
user.save!
end
it "does not open video conferencing server" do
fast_signin(user, @url)
# give the web page a little time to connect; sometimes in firefox this needs some time to connect
page.should_not have_selector('span.disconnected-msg', text: 'DISCONNECTED FROM SERVER')
execute_script("window.VideoActions.setVideoEnabled(true)") #force video capability of the browser
#assert it does not create new window
expect { window_opened_by { find(".session-video-btn").click() } }.to raise_error(Capybara::WindowError)
end
end
end