From e3fb6c46ae7e79cca8fefb84eca49be489a3fd4a Mon Sep 17 00:00:00 2001 From: Finn Date: Tue, 23 Jan 2024 11:28:25 +0000 Subject: [PATCH 1/2] Fix SVG blobs being previewed as text --- lib/seek/renderers/renderer_factory.rb | 2 +- test/unit/renderers_test.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/seek/renderers/renderer_factory.rb b/lib/seek/renderers/renderer_factory.rb index 784117e257..164e61db09 100644 --- a/lib/seek/renderers/renderer_factory.rb +++ b/lib/seek/renderers/renderer_factory.rb @@ -23,7 +23,7 @@ def detect_renderer(blob) # Ordered list of Renderer classes. More generic renderers appear last. def renderer_instances - [SlideshareRenderer, YoutubeRenderer, MarkdownRenderer, NotebookRenderer, TextRenderer, PdfRenderer, ImageRenderer, BlankRenderer] + [SlideshareRenderer, YoutubeRenderer, MarkdownRenderer, NotebookRenderer, PdfRenderer, ImageRenderer, TextRenderer, BlankRenderer] end end end diff --git a/test/unit/renderers_test.rb b/test/unit/renderers_test.rb index 74c3a193ac..6ca23903a8 100644 --- a/test/unit/renderers_test.rb +++ b/test/unit/renderers_test.rb @@ -27,6 +27,7 @@ class RenderersTest < ActiveSupport::TestCase assert_equal Seek::Renderers::NotebookRenderer, factory.renderer(FactoryBot.create(:jupyter_notebook_content_blob)).class assert_equal Seek::Renderers::TextRenderer, factory.renderer(FactoryBot.create(:txt_content_blob)).class assert_equal Seek::Renderers::ImageRenderer, factory.renderer(FactoryBot.create(:image_content_blob)).class + assert_equal Seek::Renderers::ImageRenderer, factory.renderer(FactoryBot.create(:svg_content_blob)).class assert_equal Seek::Renderers::BlankRenderer, factory.renderer(FactoryBot.create(:binary_content_blob)).class end From 49873214398fe8a06380dd68ac202c4741f7deb9 Mon Sep 17 00:00:00 2001 From: Finn Date: Tue, 23 Jan 2024 12:31:44 +0000 Subject: [PATCH 2/2] More SVG preview tests --- test/functional/git_controller_test.rb | 10 ++++++++++ test/unit/renderers_test.rb | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/test/functional/git_controller_test.rb b/test/functional/git_controller_test.rb index a21c7364a6..5a43c947ee 100644 --- a/test/functional/git_controller_test.rb +++ b/test/functional/git_controller_test.rb @@ -200,6 +200,16 @@ def setup assert_select 'img.git-image-preview[src=?]', workflow_git_raw_path(@workflow, version: @git_version.version, path: 'diagram.png') end + test 'get svg file blob' do + @git_version.add_file('test.svg', open_fixture_file('transparent-fairdom-logo-square.svg')) + @git_version.save! + get :blob, params: { workflow_id: @workflow.id, version: @git_version.version, path: 'test.svg', format: 'html' } # Not sure why this is needed + + assert_response :success + assert_select 'a.btn[href=?]', workflow_git_remove_file_path(@workflow, version: @git_version.version, path: 'test.svg') + assert_select 'img.git-image-preview[src=?]', workflow_git_raw_path(@workflow, version: @git_version.version, path: 'test.svg') + end + test 'get raw binary file' do get :raw, params: { workflow_id: @workflow.id, version: @git_version.version, path: 'diagram.png' } diff --git a/test/unit/renderers_test.rb b/test/unit/renderers_test.rb index 6ca23903a8..0f80fc7f4d 100644 --- a/test/unit/renderers_test.rb +++ b/test/unit/renderers_test.rb @@ -388,9 +388,22 @@ class RenderersTest < ActiveSupport::TestCase assert_select 'iframe', count: 0 assert_select '#navbar', count: 0 assert_select 'img.git-image-preview' + blob = FactoryBot.create(:txt_content_blob, asset: @asset) renderer = Seek::Renderers::ImageRenderer.new(blob) refute renderer.can_render? + + @git.add_file('test.svg', open_fixture_file('transparent-fairdom-logo-square.svg')) + git_blob = @git.get_blob('test.svg') + renderer = Seek::Renderers::ImageRenderer.new(git_blob) + assert renderer.can_render? + @html = Nokogiri::HTML.parse(renderer.render) + assert_select 'img.git-image-preview' + + @html = Nokogiri::HTML.parse(renderer.render_standalone) + assert_select 'iframe', count: 0 + assert_select '#navbar', count: 0 + assert_select 'img.git-image-preview' end def document_root_element