diff --git a/spec/features/user_managing_broadcasts_spec.rb b/spec/features/user_managing_broadcasts_spec.rb index ab3d71f..a5b7f08 100644 --- a/spec/features/user_managing_broadcasts_spec.rb +++ b/spec/features/user_managing_broadcasts_spec.rb @@ -54,6 +54,46 @@ feature "User managing broadcasts" do expect(page).to have_content(recording.download_file_name) end + scenario "user can go back and forth between live session and previous sessions", js: true do + broadcast = create(:broadcast, :with_stream, :with_files, project: project) + recording = create(:broadcast_recording, broadcast: broadcast) + + visit project_broadcast_path(project, broadcast) + + expect(page).to have_content broadcast.name.titleize, count: 1 + expect(page).to have_content recording.download_file_name, count: 0 + + click_on switch_view_dropdown + expect(page).to have_content broadcast.name.titleize, count: 2 + expect(page).to have_content recording.download_file_name, count: 1 + + live_stream_nav_item = page.find(".dropdown-item", text: broadcast.name.titleize) + recording_nav_item = page.find(".dropdown-item", text: recording.download_file_name) + + expect(live_stream_nav_item[:class].include?("active")).to eq true + expect(recording_nav_item[:class].include?("active")).to eq false + + click_on recording.download_file_name + + expect(page).to have_content broadcast.name.titleize, count: 1 + expect(page).to have_content recording.download_file_name, count: 0 + expect(live_stream_nav_item[:class].include?("active")).to eq false + expect(recording_nav_item[:class].include?("active")).to eq true + + click_on switch_view_dropdown + click_on broadcast.name.titleize + + expect(page).to have_content broadcast.name.titleize, count: 1 + expect(page).to have_content recording.download_file_name, count: 0 + + # Page is reloaded, we need to get dropdown items again + live_stream_nav_item = page.find(".dropdown-item", text: broadcast.name.titleize, visible: :all) + recording_nav_item = page.find(".dropdown-item", text: recording.download_file_name, visible: :all) + + expect(live_stream_nav_item[:class].include?("active")).to eq true + expect(recording_nav_item[:class].include?("active")).to eq false + end + scenario "form will not submit if user clicks Add files without selected files", js: true do broadcast = create(:broadcast, :with_stream, :with_files, project: project) @@ -74,9 +114,9 @@ feature "User managing broadcasts" do new_window = window_opened_by { click_link "Multi-View" } within_window new_window do - expect(page).to have_content("Switch View") + expect(page).to have_content switch_view_dropdown - click_on "Switch View" + click_on switch_view_dropdown expect(page).to have_link("Broadcast 1") expect(page).to have_link("Broadcast 2") @@ -106,4 +146,8 @@ feature "User managing broadcasts" do all('input[type="checkbox"]')[0].click all('input[type="checkbox"]')[1].click end + + def switch_view_dropdown + "Switch View" + end end