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