diff --git a/app/assets/javascripts/play_previous_recordings.js b/app/assets/javascripts/play_previous_recordings.js deleted file mode 100644 index f2d1212..0000000 --- a/app/assets/javascripts/play_previous_recordings.js +++ /dev/null @@ -1,24 +0,0 @@ -$(document).on("click", "[data-behavior=play_recording]", function() { - if ($(this).hasClass('active')){ - return false; - } - - var playback_url = $(this).attr("data-playback-url") - $("#broadcast_video").empty(); - - new Clappr.Player({ - parentId: '#broadcast_video', - source: playback_url, - width: '100%', - height: '100%', - autoPlay: true - }); - - $(".dropdown-menu").children().removeClass('active'); - $(".dropdown-menu").children().children('i').remove(); - $(this).siblings().removeClass('active'); - $(this).siblings().children("i").remove(); - $(this).addClass('active'); - $(this).prepend(' '); -}); - diff --git a/app/assets/javascripts/play_previous_recordings.js.erb b/app/assets/javascripts/play_previous_recordings.js.erb new file mode 100644 index 0000000..c3c7b49 --- /dev/null +++ b/app/assets/javascripts/play_previous_recordings.js.erb @@ -0,0 +1,26 @@ +$(document).on("click", "[data-behavior=play_recording]", function() { + if ($(this).hasClass('active')){ + return false; + } + + console.warn('Play prev : ', playback_url); + + var playback_url = $(this).attr("data-playback-url") + $("#broadcast_video").empty(); + + new Clappr.Player({ + <%= "baseUrl: 'http://cdn.clappr.io/latest'," if Rails.env.test? %> + parentId: '#broadcast_video', + source: playback_url, + width: '100%', + height: '100%', + autoPlay: true + }); + + $(".dropdown-menu").children().removeClass('active'); + $(".dropdown-menu").children().children('i').remove(); + $(this).siblings().removeClass('active'); + $(this).siblings().children("i").remove(); + $(this).addClass('active'); + $(this).prepend(' '); +}); \ No newline at end of file diff --git a/app/views/broadcasts/show.html.erb b/app/views/broadcasts/show.html.erb index 42b83a7..4d6e507 100644 --- a/app/views/broadcasts/show.html.erb +++ b/app/views/broadcasts/show.html.erb @@ -33,7 +33,7 @@ <%= link_to "Switch View", "#", class: "btn btn-light border dropdown-toggle", role: "button", id: "dropdownMenuLink", data: { toggle: "dropdown" }, aria: { haspopup: "true", expanded: "false" } %> -
+
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