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