From 50990fa6604b86febc8f64ddc042752e2198b31c Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Fri, 31 Jan 2025 13:31:45 -0600 Subject: [PATCH] Move the Media components out of the Embed namespace The Embed namespace is not needed. --- .../companion_windows_component.html.erb | 2 +- .../embed/media/embed_this_form_component.rb | 17 --- .../embed/media/metadata_component.rb | 13 -- .../embed/media/preview_image_component.rb | 65 ---------- app/components/embed/media/tag_component.rb | 119 ------------------ .../embed/media/wrapper_component.rb | 37 ------ app/components/embed/media_component.rb | 20 --- .../media/embed_this_form_component.html.erb | 0 .../media/embed_this_form_component.rb | 15 +++ .../media/metadata_component.html.erb | 0 app/components/media/metadata_component.rb | 11 ++ .../media/preview_image_component.rb | 63 ++++++++++ app/components/media/tag_component.rb | 117 +++++++++++++++++ app/components/media/wrapper_component.rb | 35 ++++++ .../{embed => }/media_component.html.erb | 2 +- app/components/media_component.rb | 18 +++ .../media/embed_this_form_component_spec.rb | 2 +- .../media/metadata_component_spec.rb | 2 +- .../media/preview_image_component_spec.rb | 2 +- .../{embed => }/media/tag_component_spec.rb | 2 +- .../media/wrapper_component_spec.rb | 2 +- .../{embed => }/media_component_spec.rb | 2 +- 22 files changed, 267 insertions(+), 279 deletions(-) delete mode 100644 app/components/embed/media/embed_this_form_component.rb delete mode 100644 app/components/embed/media/metadata_component.rb delete mode 100644 app/components/embed/media/preview_image_component.rb delete mode 100644 app/components/embed/media/tag_component.rb delete mode 100644 app/components/embed/media/wrapper_component.rb delete mode 100644 app/components/embed/media_component.rb rename app/components/{embed => }/media/embed_this_form_component.html.erb (100%) create mode 100644 app/components/media/embed_this_form_component.rb rename app/components/{embed => }/media/metadata_component.html.erb (100%) create mode 100644 app/components/media/metadata_component.rb create mode 100644 app/components/media/preview_image_component.rb create mode 100644 app/components/media/tag_component.rb create mode 100644 app/components/media/wrapper_component.rb rename app/components/{embed => }/media_component.html.erb (98%) create mode 100644 app/components/media_component.rb rename spec/components/{embed => }/media/embed_this_form_component_spec.rb (92%) rename spec/components/{embed => }/media/metadata_component_spec.rb (92%) rename spec/components/{embed => }/media/preview_image_component_spec.rb (82%) rename spec/components/{embed => }/media/tag_component_spec.rb (99%) rename spec/components/{embed => }/media/wrapper_component_spec.rb (97%) rename spec/components/{embed => }/media_component_spec.rb (95%) diff --git a/app/components/companion_windows_component.html.erb b/app/components/companion_windows_component.html.erb index d28d4fcea..f845c5d79 100644 --- a/app/components/companion_windows_component.html.erb +++ b/app/components/companion_windows_component.html.erb @@ -74,7 +74,7 @@ Share - <%= render Embed::Media::EmbedThisFormComponent.new(viewer:) %> + <%= render Media::EmbedThisFormComponent.new(viewer:) %> diff --git a/app/components/embed/media/embed_this_form_component.rb b/app/components/embed/media/embed_this_form_component.rb deleted file mode 100644 index 1fa35680f..000000000 --- a/app/components/embed/media/embed_this_form_component.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -module Embed - module Media - class EmbedThisFormComponent < ViewComponent::Base - def initialize(viewer:) - @viewer = viewer - end - - delegate :embed_request, :purl_object, to: :viewer - delegate :title, to: :purl_object, prefix: true - delegate :purl_url, to: :purl_object - - attr_reader :viewer - end - end -end diff --git a/app/components/embed/media/metadata_component.rb b/app/components/embed/media/metadata_component.rb deleted file mode 100644 index 2ea666d73..000000000 --- a/app/components/embed/media/metadata_component.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -module Embed - module Media - class MetadataComponent < ViewComponent::Base - def initialize(viewer:) - @viewer = viewer - end - - attr_reader :viewer - end - end -end diff --git a/app/components/embed/media/preview_image_component.rb b/app/components/embed/media/preview_image_component.rb deleted file mode 100644 index a13dfaea9..000000000 --- a/app/components/embed/media/preview_image_component.rb +++ /dev/null @@ -1,65 +0,0 @@ -# frozen_string_literal: true - -module Embed - module Media - # Displays an image (e.g. photo of the media) for a media resource - class PreviewImageComponent < ViewComponent::Base - include StacksImage - - # @param [String] druid the object identifier - # @param [ResourceFile] file the file to display - # @param [Integer] resource_index the offset of this resource in the purl - # @param [String] type the type of resource (either audio or video), used to determine which icon to show - def initialize(druid:, file:, resource_index:, type:) - @druid = druid - @file = file - @resource_index = resource_index - @type = type - end - - attr_reader :resource_index, :druid, :file, :type - - def call - # the 74,73 size accounts for the additional pixel size returned by the image server - thumb_url = stacks_square_url(druid, file.title, size: '74,73') - render WrapperComponent.new(thumbnail: thumb_url, file:, type:, resource_index:) do - tag.div(class: 'osd', id: "openseadragon-#{resource_index}", - data: { controller: 'osd', osd_url_value:, osd_nav_images_value: }) - end - end - - def osd_url_value - "#{stacks_image_url(druid, file.filename)}/info.json" - end - - def osd_nav_images_value # rubocop:disable Metrics/MethodLength - { - zoomIn: { - REST: asset_path('zoomin_rest.png'), - GROUP: asset_path('zoomin_grouphover.png'), - HOVER: asset_path('zoomin_hover.png'), - DOWN: asset_path('zoomin_pressed.png') - }, - zoomOut: { - REST: asset_path('zoomout_rest.png'), - GROUP: asset_path('zoomout_grouphover.png'), - HOVER: asset_path('zoomout_hover.png'), - DOWN: asset_path('zoomout_pressed.png') - }, - home: { - REST: asset_path('home_rest.png'), - GROUP: asset_path('home_grouphover.png'), - HOVER: asset_path('home_hover.png'), - DOWN: asset_path('home_pressed.png') - }, - fullpage: { - REST: asset_path('fullpage_rest.png'), - GROUP: asset_path('fullpage_grouphover.png'), - HOVER: asset_path('fullpage_hover.png'), - DOWN: asset_path('fullpage_pressed.png') - } - } - end - end - end -end diff --git a/app/components/embed/media/tag_component.rb b/app/components/embed/media/tag_component.rb deleted file mode 100644 index 7623264a5..000000000 --- a/app/components/embed/media/tag_component.rb +++ /dev/null @@ -1,119 +0,0 @@ -# frozen_string_literal: true - -module Embed - module Media - class TagComponent < ViewComponent::Base - include StacksImage - with_collection_parameter :resource - SUPPORTED_MEDIA_TYPES = %i[audio video].freeze - - # @param [Purl::Resource] resource This resource is expected to have a primary file. - # @param [#index] resource_iteration Information about what part of the collection we are in - # @param [String] druid the object identifier - def initialize(resource:, resource_iteration:, druid:) - @resource = resource - @file = resource.primary_file - @resource_iteration = resource_iteration - @druid = druid - end - - attr_reader :file, :druid - - delegate :type, to: :@resource - - def call - if SUPPORTED_MEDIA_TYPES.include?(type.to_sym) - media_element - else - render PreviewImageComponent.new(druid:, file:, type:, resource_index: @resource_iteration.index) - end - end - - def thumbnail_url - # the 74,73 size accounts for the additional pixel size returned by the image server - stacks_square_url(druid, @resource.thumbnail.title, size: '74,73') if @resource.thumbnail - end - - def poster_url_for - return default_audio_thumbnail if type == 'audio' && !@resource.thumbnail - return unless @resource.thumbnail - - if @resource.thumbnail.world_downloadable? - stacks_thumb_url(druid, @resource.thumbnail.title, size: '!800,600') - else - stacks_thumb_url(druid, @resource.thumbnail.title) - end - end - - def default_audio_thumbnail - asset_url('waveform-audio-poster.svg') - end - - def media_element - render WrapperComponent.new(thumbnail: thumbnail_url, file:, type:, - resource_index: @resource_iteration.index) do - media_tag - end - end - - def media_tag_name - safari_wants_audio_with_captions? ? 'video' : type - end - - def safari_wants_audio_with_captions? - type == 'audio' && request.headers['User-Agent'].include?('Safari') && render_captions? - end - - def media_tag # rubocop:disable Metrics/MethodLength - tag.send(media_tag_name, - id: "sul-embed-media-#{@resource_iteration.index}", - data: { - auth_url: authentication_url, - index: @resource_iteration.index, - media_tag_target: 'authorizeableResource', - controller: 'media-player', - action: 'media-seek@window->media-player#seek ' \ - 'auth-success@window->media-player#initializeVideoJSPlayer' - }, - poster: poster_url_for, - controls: 'controls', - class: 'sul-embed-media-file', - height: '100%') do - streaming_source + captions - end - end - - def streaming_source - type = Rails.env.development? ? file.mimetype : 'application/x-mpegURL' - stacks_media_stream = Embed::StacksMediaStream.new(druid:, file:) - tag.source(src: stacks_media_stream.to_playlist_url, type:) - end - - # Generate the video caption elements - def captions - return unless render_captions? - - # A video clip may have multiple caption files in different languages. - # We want to enable the user to select from any of these options. - # We also want the different language options to be listed alphabetically. - # For Safari, we must ensure a track is selected by default to allow the track cues to be available. - safe_join( - @resource.caption_files.map.with_index do |caption_file, i| - tag.track(src: caption_file.file_url, kind: 'captions', - srclang: caption_file.language_code, label: caption_file.media_caption_label, - default: (i.zero? && !caption_file.sdr_generated? ? '' : nil)) - end - ) - end - - def render_captions? - @resource.caption_files.any? - end - - def authentication_url - attributes = { host: Settings.stacks_url, druid:, title: file.title } - Settings.streaming.auth_url % attributes - end - end - end -end diff --git a/app/components/embed/media/wrapper_component.rb b/app/components/embed/media/wrapper_component.rb deleted file mode 100644 index 7903c4cfd..000000000 --- a/app/components/embed/media/wrapper_component.rb +++ /dev/null @@ -1,37 +0,0 @@ -# frozen_string_literal: true - -module Embed - module Media - class WrapperComponent < ViewComponent::Base - def initialize(file:, type:, resource_index:, thumbnail:) - @file = file - @type = type - @resource_index = resource_index - @thumbnail = thumbnail - end - - # TODO: stanford_only and location_restricted moved to the media tag, - # so they can be removed after we switch to the new component - def call # rubocop:disable Metrics/MethodLength - tag.div(style: 'flex: 1 0 100%;', - data: { - controller: 'media-wrapper', - media_wrapper_index_value: @resource_index, - action: 'thumbnail-clicked@window->media-wrapper#toggleVisibility', - stanford_only: @file.stanford_only?, - location_restricted: @file.location_restricted?, - file_label: @file.label_or_filename, - media_tag_target: 'mediaWrapper', - thumbnail_url: @thumbnail.presence, - default_icon: @type == 'audio' ? 'sul-i-file-music-1' : 'sul-i-file-video-3' - }, - # When rendering this component, show only the first media wrapper component - hidden: !@resource_index.zero?) do - tag.div class: 'sul-embed-media-wrapper' do - content - end - end - end - end - end -end diff --git a/app/components/embed/media_component.rb b/app/components/embed/media_component.rb deleted file mode 100644 index d17eae418..000000000 --- a/app/components/embed/media_component.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -module Embed - class MediaComponent < ViewComponent::Base - def initialize(viewer:) - @viewer = viewer - end - - attr_reader :viewer - - delegate :purl_object, to: :viewer - delegate :druid, :downloadable_transcript_files?, to: :purl_object - - def resources_with_primary_file - @resources_with_primary_file ||= purl_object.contents.select do |purl_resource| - purl_resource.primary_file.present? - end - end - end -end diff --git a/app/components/embed/media/embed_this_form_component.html.erb b/app/components/media/embed_this_form_component.html.erb similarity index 100% rename from app/components/embed/media/embed_this_form_component.html.erb rename to app/components/media/embed_this_form_component.html.erb diff --git a/app/components/media/embed_this_form_component.rb b/app/components/media/embed_this_form_component.rb new file mode 100644 index 000000000..70cf8e9e3 --- /dev/null +++ b/app/components/media/embed_this_form_component.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Media + class EmbedThisFormComponent < ViewComponent::Base + def initialize(viewer:) + @viewer = viewer + end + + delegate :embed_request, :purl_object, to: :viewer + delegate :title, to: :purl_object, prefix: true + delegate :purl_url, to: :purl_object + + attr_reader :viewer + end +end diff --git a/app/components/embed/media/metadata_component.html.erb b/app/components/media/metadata_component.html.erb similarity index 100% rename from app/components/embed/media/metadata_component.html.erb rename to app/components/media/metadata_component.html.erb diff --git a/app/components/media/metadata_component.rb b/app/components/media/metadata_component.rb new file mode 100644 index 000000000..d86a28929 --- /dev/null +++ b/app/components/media/metadata_component.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Media + class MetadataComponent < ViewComponent::Base + def initialize(viewer:) + @viewer = viewer + end + + attr_reader :viewer + end +end diff --git a/app/components/media/preview_image_component.rb b/app/components/media/preview_image_component.rb new file mode 100644 index 000000000..4e24d0e85 --- /dev/null +++ b/app/components/media/preview_image_component.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +module Media + # Displays an image (e.g. photo of the media) for a media resource + class PreviewImageComponent < ViewComponent::Base + include Embed::StacksImage + + # @param [String] druid the object identifier + # @param [ResourceFile] file the file to display + # @param [Integer] resource_index the offset of this resource in the purl + # @param [String] type the type of resource (either audio or video), used to determine which icon to show + def initialize(druid:, file:, resource_index:, type:) + @druid = druid + @file = file + @resource_index = resource_index + @type = type + end + + attr_reader :resource_index, :druid, :file, :type + + def call + # the 74,73 size accounts for the additional pixel size returned by the image server + thumb_url = stacks_square_url(druid, file.title, size: '74,73') + render WrapperComponent.new(thumbnail: thumb_url, file:, type:, resource_index:) do + tag.div(class: 'osd', id: "openseadragon-#{resource_index}", + data: { controller: 'osd', osd_url_value:, osd_nav_images_value: }) + end + end + + def osd_url_value + "#{stacks_image_url(druid, file.filename)}/info.json" + end + + def osd_nav_images_value # rubocop:disable Metrics/MethodLength + { + zoomIn: { + REST: asset_path('zoomin_rest.png'), + GROUP: asset_path('zoomin_grouphover.png'), + HOVER: asset_path('zoomin_hover.png'), + DOWN: asset_path('zoomin_pressed.png') + }, + zoomOut: { + REST: asset_path('zoomout_rest.png'), + GROUP: asset_path('zoomout_grouphover.png'), + HOVER: asset_path('zoomout_hover.png'), + DOWN: asset_path('zoomout_pressed.png') + }, + home: { + REST: asset_path('home_rest.png'), + GROUP: asset_path('home_grouphover.png'), + HOVER: asset_path('home_hover.png'), + DOWN: asset_path('home_pressed.png') + }, + fullpage: { + REST: asset_path('fullpage_rest.png'), + GROUP: asset_path('fullpage_grouphover.png'), + HOVER: asset_path('fullpage_hover.png'), + DOWN: asset_path('fullpage_pressed.png') + } + } + end + end +end diff --git a/app/components/media/tag_component.rb b/app/components/media/tag_component.rb new file mode 100644 index 000000000..910b352c0 --- /dev/null +++ b/app/components/media/tag_component.rb @@ -0,0 +1,117 @@ +# frozen_string_literal: true + +module Media + class TagComponent < ViewComponent::Base + include Embed::StacksImage + with_collection_parameter :resource + SUPPORTED_MEDIA_TYPES = %i[audio video].freeze + + # @param [Purl::Resource] resource This resource is expected to have a primary file. + # @param [#index] resource_iteration Information about what part of the collection we are in + # @param [String] druid the object identifier + def initialize(resource:, resource_iteration:, druid:) + @resource = resource + @file = resource.primary_file + @resource_iteration = resource_iteration + @druid = druid + end + + attr_reader :file, :druid + + delegate :type, to: :@resource + + def call + if SUPPORTED_MEDIA_TYPES.include?(type.to_sym) + media_element + else + render PreviewImageComponent.new(druid:, file:, type:, resource_index: @resource_iteration.index) + end + end + + def thumbnail_url + # the 74,73 size accounts for the additional pixel size returned by the image server + stacks_square_url(druid, @resource.thumbnail.title, size: '74,73') if @resource.thumbnail + end + + def poster_url_for + return default_audio_thumbnail if type == 'audio' && !@resource.thumbnail + return unless @resource.thumbnail + + if @resource.thumbnail.world_downloadable? + stacks_thumb_url(druid, @resource.thumbnail.title, size: '!800,600') + else + stacks_thumb_url(druid, @resource.thumbnail.title) + end + end + + def default_audio_thumbnail + asset_url('waveform-audio-poster.svg') + end + + def media_element + render WrapperComponent.new(thumbnail: thumbnail_url, file:, type:, + resource_index: @resource_iteration.index) do + media_tag + end + end + + def media_tag_name + safari_wants_audio_with_captions? ? 'video' : type + end + + def safari_wants_audio_with_captions? + type == 'audio' && request.headers['User-Agent'].include?('Safari') && render_captions? + end + + def media_tag # rubocop:disable Metrics/MethodLength + tag.send(media_tag_name, + id: "sul-embed-media-#{@resource_iteration.index}", + data: { + auth_url: authentication_url, + index: @resource_iteration.index, + media_tag_target: 'authorizeableResource', + controller: 'media-player', + action: 'media-seek@window->media-player#seek ' \ + 'auth-success@window->media-player#initializeVideoJSPlayer' + }, + poster: poster_url_for, + controls: 'controls', + class: 'sul-embed-media-file', + height: '100%') do + streaming_source + captions + end + end + + def streaming_source + type = Rails.env.development? ? file.mimetype : 'application/x-mpegURL' + stacks_media_stream = Embed::StacksMediaStream.new(druid:, file:) + tag.source(src: stacks_media_stream.to_playlist_url, type:) + end + + # Generate the video caption elements + def captions + return unless render_captions? + + # A video clip may have multiple caption files in different languages. + # We want to enable the user to select from any of these options. + # We also want the different language options to be listed alphabetically. + # For Safari, we must ensure a track is selected by default to allow the track cues to be available. + safe_join( + @resource.caption_files.map.with_index do |caption_file, i| + tag.track(src: caption_file.file_url, kind: 'captions', + srclang: caption_file.language_code, label: caption_file.media_caption_label, + default: (i.zero? && !caption_file.sdr_generated? ? '' : nil)) + end + ) + end + + def render_captions? + @resource.caption_files.any? + end + + def authentication_url + attributes = { host: Settings.stacks_url, druid:, title: file.title } + Settings.streaming.auth_url % attributes + end + end +end diff --git a/app/components/media/wrapper_component.rb b/app/components/media/wrapper_component.rb new file mode 100644 index 000000000..4d670768f --- /dev/null +++ b/app/components/media/wrapper_component.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module Media + class WrapperComponent < ViewComponent::Base + def initialize(file:, type:, resource_index:, thumbnail:) + @file = file + @type = type + @resource_index = resource_index + @thumbnail = thumbnail + end + + # TODO: stanford_only and location_restricted moved to the media tag, + # so they can be removed after we switch to the new component + def call # rubocop:disable Metrics/MethodLength + tag.div(style: 'flex: 1 0 100%;', + data: { + controller: 'media-wrapper', + media_wrapper_index_value: @resource_index, + action: 'thumbnail-clicked@window->media-wrapper#toggleVisibility', + stanford_only: @file.stanford_only?, + location_restricted: @file.location_restricted?, + file_label: @file.label_or_filename, + media_tag_target: 'mediaWrapper', + thumbnail_url: @thumbnail.presence, + default_icon: @type == 'audio' ? 'sul-i-file-music-1' : 'sul-i-file-video-3' + }, + # When rendering this component, show only the first media wrapper component + hidden: !@resource_index.zero?) do + tag.div class: 'sul-embed-media-wrapper' do + content + end + end + end + end +end diff --git a/app/components/embed/media_component.html.erb b/app/components/media_component.html.erb similarity index 98% rename from app/components/embed/media_component.html.erb rename to app/components/media_component.html.erb index 6d3021bcd..ae8450fe9 100644 --- a/app/components/embed/media_component.html.erb +++ b/app/components/media_component.html.erb @@ -91,7 +91,7 @@ - <%= render Embed::Media::TagComponent.with_collection(resources_with_primary_file, druid:) %> + <%= render Media::TagComponent.with_collection(resources_with_primary_file, druid:) %> <% end %> <% component.with_dialog do %> diff --git a/app/components/media_component.rb b/app/components/media_component.rb new file mode 100644 index 000000000..3882a28d6 --- /dev/null +++ b/app/components/media_component.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class MediaComponent < ViewComponent::Base + def initialize(viewer:) + @viewer = viewer + end + + attr_reader :viewer + + delegate :purl_object, to: :viewer + delegate :druid, :downloadable_transcript_files?, to: :purl_object + + def resources_with_primary_file + @resources_with_primary_file ||= purl_object.contents.select do |purl_resource| + purl_resource.primary_file.present? + end + end +end diff --git a/spec/components/embed/media/embed_this_form_component_spec.rb b/spec/components/media/embed_this_form_component_spec.rb similarity index 92% rename from spec/components/embed/media/embed_this_form_component_spec.rb rename to spec/components/media/embed_this_form_component_spec.rb index 1b95727e2..df145b8b9 100644 --- a/spec/components/embed/media/embed_this_form_component_spec.rb +++ b/spec/components/media/embed_this_form_component_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.describe Embed::Media::EmbedThisFormComponent, type: :component do +RSpec.describe Media::EmbedThisFormComponent, type: :component do let(:request) do Embed::Request.new(url: 'http://purl.stanford.edu/abc123') end diff --git a/spec/components/embed/media/metadata_component_spec.rb b/spec/components/media/metadata_component_spec.rb similarity index 92% rename from spec/components/embed/media/metadata_component_spec.rb rename to spec/components/media/metadata_component_spec.rb index 1ffb47c6d..dc736edce 100644 --- a/spec/components/embed/media/metadata_component_spec.rb +++ b/spec/components/media/metadata_component_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.describe Embed::Media::MetadataComponent, type: :component do +RSpec.describe Media::MetadataComponent, type: :component do let(:request) { Embed::Request.new(url: 'http://purl.stanford.edu/abc123') } let(:viewer) { Embed::Viewer::Media.new(request) } let(:purl) { build(:purl) } diff --git a/spec/components/embed/media/preview_image_component_spec.rb b/spec/components/media/preview_image_component_spec.rb similarity index 82% rename from spec/components/embed/media/preview_image_component_spec.rb rename to spec/components/media/preview_image_component_spec.rb index df3b6c824..0d49ca71d 100644 --- a/spec/components/embed/media/preview_image_component_spec.rb +++ b/spec/components/media/preview_image_component_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.describe Embed::Media::PreviewImageComponent, type: :component do +RSpec.describe Media::PreviewImageComponent, type: :component do pending "add some examples to (or delete) #{__FILE__}" # it "renders something useful" do diff --git a/spec/components/embed/media/tag_component_spec.rb b/spec/components/media/tag_component_spec.rb similarity index 99% rename from spec/components/embed/media/tag_component_spec.rb rename to spec/components/media/tag_component_spec.rb index 1d28f4ec1..50da4adac 100644 --- a/spec/components/embed/media/tag_component_spec.rb +++ b/spec/components/media/tag_component_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.describe Embed::Media::TagComponent, type: :component do +RSpec.describe Media::TagComponent, type: :component do subject(:render) do render_inline( described_class.new( diff --git a/spec/components/embed/media/wrapper_component_spec.rb b/spec/components/media/wrapper_component_spec.rb similarity index 97% rename from spec/components/embed/media/wrapper_component_spec.rb rename to spec/components/media/wrapper_component_spec.rb index 7f59d2fee..d51b38be8 100644 --- a/spec/components/embed/media/wrapper_component_spec.rb +++ b/spec/components/media/wrapper_component_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.describe Embed::Media::WrapperComponent, type: :component do +RSpec.describe Media::WrapperComponent, type: :component do subject(:render) do render_inline( described_class.new( diff --git a/spec/components/embed/media_component_spec.rb b/spec/components/media_component_spec.rb similarity index 95% rename from spec/components/embed/media_component_spec.rb rename to spec/components/media_component_spec.rb index d56e0b0ea..0dfea37d0 100644 --- a/spec/components/embed/media_component_spec.rb +++ b/spec/components/media_component_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.describe Embed::MediaComponent, type: :component do +RSpec.describe MediaComponent, type: :component do before do allow(embed_request).to receive(:purl_object).and_return(purl_object) render_inline(described_class.new(viewer:))