Upload
<% if @upload.is_pending? || @upload.is_processing? %>
@@ -32,17 +32,16 @@
<% @upload_media_asset = @upload.upload_media_assets.first %>
<% @media_asset = @upload_media_asset.media_asset %>
-
- Size
- <%= number_to_human_size(@media_asset.file_size) %>
- <%= @media_asset.image_width %>x<%= @media_asset.image_height %>
-
- (small | large | full)
-
-
-
- <%= tag.img src: @media_asset.variant("original").file_url, title: "Preview", id: "image", class: "fit-width fit-height", "data-shortcut": "z" %>
+ <%= render MediaAssetComponent.new(media_asset: @media_asset) %>
+
+
+ Size
+ <%= link_to @media_asset.variant(:original).file_url do %>
+ <%= number_to_human_size(@media_asset.file_size) %> .<%= @media_asset.file_ext %>
+ <% end %>
+ (<%= @media_asset.image_width %>x<%= @media_asset.image_height %>)
+
<%= render "uploads/related_posts", source: @upload.source_strategy %>
diff --git a/test/components/media_asset_component.rb b/test/components/media_asset_component.rb
new file mode 100644
index 000000000..c16d85545
--- /dev/null
+++ b/test/components/media_asset_component.rb
@@ -0,0 +1,45 @@
+require "test_helper"
+
+class MediaAssetComponentTest < ViewComponent::TestCase
+ def render_component(media_asset, **options)
+ render_inline(MediaAssetComponent.new(media_asset: media_asset, **options))
+ end
+
+ context "The MediaAssetComponent" do
+ context "for an image" do
+ should "render the image" do
+ media_asset = create(:media_asset, file_ext: "jpg")
+ node = render_component(media_asset)
+
+ assert_equal(media_asset.variant(:original).file_url, node.css(".media-asset-component img").attr("src").value)
+ end
+ end
+
+ context "for a video" do
+ should "render the video" do
+ media_asset = create(:media_asset, file_ext: "mp4", duration: 30)
+ node = render_component(media_asset)
+
+ assert_equal(media_asset.variant(:original).file_url, node.css(".media-asset-component video").attr("src").value)
+ end
+ end
+
+ context "for a ugoira" do
+ should "render the ugoira" do
+ media_asset = create(:media_asset, file_ext: "zip")
+ node = render_component(media_asset)
+
+ assert_equal(media_asset.variant(:sample).file_url, node.css(".media-asset-component video").attr("src").value)
+ end
+ end
+
+ context "for a flash file" do
+ should "render the flash" do
+ media_asset = create(:media_asset, file_ext: "swf")
+ node = render_component(media_asset)
+
+ assert_equal(media_asset.variant(:original).file_url, node.css(".media-asset-component div.ruffle-container").attr("data-swf").value)
+ end
+ end
+ end
+end