From 4f81ad249477ad25aea191b1987cddb4222e65ba Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Fri, 6 Sep 2024 12:46:25 -0400
Subject: [PATCH] Add coverage for `media#player`, move body class to view
 (#31790)

---
 app/controllers/media_controller.rb |  4 +---
 app/views/media/player.html.haml    |  2 ++
 spec/system/media_spec.rb           | 23 +++++++++++++++++++++++
 3 files changed, 26 insertions(+), 3 deletions(-)
 create mode 100644 spec/system/media_spec.rb

diff --git a/app/controllers/media_controller.rb b/app/controllers/media_controller.rb
index 53eee4001..9d10468e6 100644
--- a/app/controllers/media_controller.rb
+++ b/app/controllers/media_controller.rb
@@ -19,9 +19,7 @@ class MediaController < ApplicationController
     redirect_to @media_attachment.file.url(:original)
   end
 
-  def player
-    @body_classes = 'player'
-  end
+  def player; end
 
   private
 
diff --git a/app/views/media/player.html.haml b/app/views/media/player.html.haml
index df02cc411..6b6e56673 100644
--- a/app/views/media/player.html.haml
+++ b/app/views/media/player.html.haml
@@ -2,6 +2,8 @@
   = render_initial_state
   = javascript_pack_tag 'public', crossorigin: 'anonymous'
 
+- content_for :body_classes, 'player'
+
 :ruby
   meta = @media_attachment.file.meta || {}
 
diff --git a/spec/system/media_spec.rb b/spec/system/media_spec.rb
new file mode 100644
index 000000000..d014c7e88
--- /dev/null
+++ b/spec/system/media_spec.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Media' do
+  describe 'Player page' do
+    context 'when signed in' do
+      before { sign_in Fabricate(:user) }
+
+      it 'visits the media player page and renders the media' do
+        status = Fabricate :status
+        media = Fabricate :media_attachment, type: :video
+        status.media_attachments << media
+
+        visit medium_player_path(media)
+
+        expect(page)
+          .to have_css('body', class: 'player')
+          .and have_css('div[data-component="Video"]')
+      end
+    end
+  end
+end