Merge branch 'develop' of bitbucket.org:jamkazam/jam-cloud into develop

This commit is contained in:
Brian Smith 2013-12-15 16:27:24 -05:00
commit 10d9232e3f
5 changed files with 124 additions and 25 deletions

View File

@ -96,13 +96,13 @@
<script type="text/template" id="template-no-bands">
<div class="when-empty">
Not In Any Bands:<br/>
<a href="#/band/setup">Set Up Your Band</a>
<a id="band-setup-link" href="#/band/setup">Set Up Your Band</a>
</div>
</script>
<script type="text/template" id="template-more-bands">
<div class="when-empty">
<a href="#/band/setup">Set Up Another Band</a>
<a id="band-setup-link" href="#/band/setup">Set Up Another Band</a>
</div>
</script>

View File

@ -0,0 +1,33 @@
require 'spec_helper'
describe "Bands", :js => true, :type => :feature, :capybara_feature => true do
subject { page }
before(:all) do
Capybara.javascript_driver = :poltergeist
Capybara.current_driver = Capybara.javascript_driver
Capybara.default_wait_time = 15
end
let(:user) { FactoryGirl.create(:user) }
let(:finder) { FactoryGirl.create(:user) }
before(:each) do
UserMailer.deliveries.clear
end
it "band setup is accessible through profile page" do
sign_in_poltergeist(user)
wait_until_curtain_gone
find('div.homecard.profile').trigger(:click)
wait_for_ajax
find('#profile-bands-link').trigger(:click)
wait_for_ajax
find('#band-setup-link').trigger(:click)
expect(page).to have_selector('#band-setup-title')
end
end

View File

@ -21,14 +21,17 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr
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(user) do
set_session_as_private
end
in_client(finder) do
sign_in_poltergeist finder
visit "/client#/findSession"
expect(page).to have_selector('#sessions-none-found') # verify private session is not found
end
set_session_as_public(user)
in_client(user) do
set_session_as_public
end
join_session(finder, description) # verify the public session is able to be joined
end
@ -57,11 +60,38 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr
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
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 change will be seen by another participant" do
pending "...it doesn't work this way, but i will reuse this pattern"
create_join_session(user, [finder])
in_client(user) do
@new_genre = change_session_genre
end
in_client(finder) do
expect(get_session_genre).to include(@new_genre)
end
end
it "a user can change the genre and the Find Session screen will be updated" do
create_session(user)
in_client(finder) { sign_in_poltergeist finder }
2.times do
in_client(user) do
@new_genre = change_session_genre #randomizes it
end
in_client(finder) do
find_session_contains?(@new_genre)
end
end
end
end

View File

@ -1,6 +1,6 @@
require 'spec_helper'
describe "Find Session", :js => true, :type => :feature, :capybara_feature => true, :slow => true do
describe "Session Recordings", :js => true, :type => :feature, :capybara_feature => true, :slow => true do
subject { page }

View File

@ -125,7 +125,7 @@ end
# this code assumes that there are no music sessions in the database. it should fail on the
# find('.join-link') call if > 1 session exists because capybara will complain of multile matches
# find('.join-link') call if > 1 session exists because capybara will complain of multiple matches
def join_session(joiner, unique_session_desc)
in_client(joiner) do
@ -141,6 +141,7 @@ def join_session(joiner, unique_session_desc)
end
end
def create_join_session(creator, joiners=[])
creator, unique_session_desc = create_session(creator)
@ -151,26 +152,61 @@ def create_join_session(creator, joiners=[])
end
def set_session_as_private(session_owner)
in_client(session_owner) do
find('#session-settings-button').trigger(:click)
within('#session-settings-dialog') do
def set_session_as_private()
find('#session-settings-button').trigger(:click)
within('#session-settings-dialog') do
select('Private', :from => 'session-settings-musician-access')
find('#session-settings-dialog-submit').trigger(:click)
end
end
end
def set_session_as_public(session_owner)
in_client(session_owner) do
find('#session-settings-button').trigger(:click)
within('#session-settings-dialog') do
select('Public', :from => 'session-settings-musician-access')
find('#session-settings-dialog-submit').trigger(:click)
end
def set_session_as_public()
find('#session-settings-button').trigger(:click)
within('#session-settings-dialog') do
select('Public', :from => 'session-settings-musician-access')
find('#session-settings-dialog-submit').trigger(:click)
end
end
def get_options(selector)
return find(selector).all('option').collect(&:text).uniq
end
def selected_genres
return page.evaluate_script("JK.GenreSelectorHelper.getSelectedGenres('#session-settings-genre')")
end
def change_session_genre #randomly just change it
here = 'select.genre-list'
#wait_for_ajax
find('#session-settings-button').trigger(:click)
within('#session-settings-dialog') do
wait_for_ajax
@new_genre = get_options(here).-(["Select Genre"]).-(selected_genres).sample.to_s
select(@new_genre, :from => 'genres')
wait_for_ajax
find('#session-settings-dialog-submit').trigger(:click)
end
return @new_genre
end
def get_session_genre
here = 'select.genre-list'
find('#session-settings-button').trigger(:click)
wait_for_ajax
@current_genres = selected_genres
find('#session-settings-dialog-submit').trigger(:click)
return @current_genres.join(" ")
end
def find_session_contains?(text)
visit "/client#/findSession"
wait_for_ajax
within('#find-session-form') do
expect(page).to have_text(text)
end
end
def assert_all_tracks_seen(users=[])
users.each do |user|
in_client(user) do