diff --git a/app/views/broadcasts/show.html.erb b/app/views/broadcasts/show.html.erb
index ed6c4e4..bc8f740 100644
--- a/app/views/broadcasts/show.html.erb
+++ b/app/views/broadcasts/show.html.erb
@@ -48,18 +48,18 @@
<% if @broadcast.director_mode_video_embed.present? %>
- <% if params[:director_mode] %>
+ <% unless params[:director_mode] %>
- <%= link_to "Disable Director Mode", url_for(params.permit!.except(:director_mode)), class: "d-none", id: "director_mode_link" %>
+ <%= link_to "Disable Director Mode", [@broadcast.project, @broadcast, director_mode: false], class: "d-none", id: "director_mode_link" %>
<% else %>
- <%= link_to "Enable Director Mode", url_for(params.permit!.merge(director_mode: true)), class: "d-none", id: "director_mode_link" %>
+ <%= link_to "Enable Director Mode", [@broadcast.project, @broadcast], class: "d-none", id: "director_mode_link" %>
<% end %>
<% end %>
diff --git a/spec/controllers/broadcasts_controller_spec.rb b/spec/controllers/broadcasts_controller_spec.rb
index e9ec4eb..a3513a2 100644
--- a/spec/controllers/broadcasts_controller_spec.rb
+++ b/spec/controllers/broadcasts_controller_spec.rb
@@ -197,13 +197,13 @@ RSpec.describe BroadcastsController, type: :controller do
context "when director mode is enabled" do
it "shows the video embed" do
- get :show, params: { project_id: project, id: broadcast, director_mode: true }
+ get :show, params: { project_id: project, id: broadcast }
expect(response.body).to have_selector("iframe", text: "video player")
end
it "renders the view dropdown with a director mode disable option" do
- get :show, params: { project_id: project, id: broadcast, director_mode: true }
+ get :show, params: { project_id: project, id: broadcast }
expect(response.body).to have_content broadcast.name
expect(response.body).to have_selector(".custom-control-label", text: "Director Mode")
diff --git a/spec/features/user_managing_broadcasts_spec.rb b/spec/features/user_managing_broadcasts_spec.rb
index 30fd848..03f34f6 100644
--- a/spec/features/user_managing_broadcasts_spec.rb
+++ b/spec/features/user_managing_broadcasts_spec.rb
@@ -151,6 +151,30 @@ feature 'User managing broadcasts' do
end
end
+ scenario 'opening broadcast page starts in normal mode if director mode is not available' do
+ broadcast = create(:broadcast, :with_stream, :with_files, project: project)
+ broadcast.director_mode_video_embed = nil
+ broadcast.save
+
+ visit project_broadcast_path(project, broadcast)
+
+ expect(page).not_to have_selector('#director_broadcast_video')
+ expect(page).to have_selector('#broadcast_video')
+
+ expect(page).not_to have_selector('#director_mode_switch')
+ end
+
+ scenario 'opening broadcast page starts in director mode if available' do
+ broadcast = create(:broadcast, :with_stream, :with_files, project: project, director_mode_video_embed: 'director_mode')
+
+ visit project_broadcast_path(project, broadcast)
+
+ expect(page).not_to have_selector('#broadcast_video')
+ expect(page).to have_selector('#director_broadcast_video')
+
+ expect(page).to have_selector('#director_mode_switch')
+ end
+
context 'When the user is associate' do
let(:current_user) { create(:user, :associate) }