diff --git a/web/app/views/clients/_profile.html.erb b/web/app/views/clients/_profile.html.erb
index ff822567b..002a4add9 100644
--- a/web/app/views/clients/_profile.html.erb
+++ b/web/app/views/clients/_profile.html.erb
@@ -96,13 +96,13 @@
diff --git a/web/spec/features/in_session_spec.rb b/web/spec/features/in_session_spec.rb
index 5d8a1ee38..709777af8 100644
--- a/web/spec/features/in_session_spec.rb
+++ b/web/spec/features/in_session_spec.rb
@@ -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
diff --git a/web/spec/features/recordings_spec.rb b/web/spec/features/recordings_spec.rb
index dda0de29d..b37891118 100644
--- a/web/spec/features/recordings_spec.rb
+++ b/web/spec/features/recordings_spec.rb
@@ -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 }
diff --git a/web/spec/support/utilities.rb b/web/spec/support/utilities.rb
index 7c8134e78..38e2467e3 100644
--- a/web/spec/support/utilities.rb
+++ b/web/spec/support/utilities.rb
@@ -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