adding: bands_spec, link ids, more in_session JS testing and refactoring

This commit is contained in:
Anthony Davis 2013-12-14 17:53:18 -06:00
parent b5efad954d
commit 4e273759ba
4 changed files with 91 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

@ -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