DEV: Make `CookedPostProcessor#post_process_images` method private.
This commit is contained in:
parent
baf7eac704
commit
f54e4b71b1
|
@ -65,15 +65,6 @@ class CookedPostProcessor
|
|||
BadgeGranter.grant(Badge.find(Badge::FirstReplyByEmail), @post.user, post_id: @post.id) if @post.is_reply_by_email?
|
||||
end
|
||||
|
||||
def post_process_images
|
||||
extract_images.each do |img|
|
||||
unless add_image_placeholder!(img)
|
||||
limit_size!(img)
|
||||
convert_to_link!(img)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def post_process_quotes
|
||||
@doc.css("aside.quote").each do |q|
|
||||
post_number = q['data-post']
|
||||
|
@ -688,6 +679,15 @@ class CookedPostProcessor
|
|||
|
||||
private
|
||||
|
||||
def post_process_images
|
||||
extract_images.each do |img|
|
||||
unless add_image_placeholder!(img)
|
||||
limit_size!(img)
|
||||
convert_to_link!(img)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def process_inline_onebox(element)
|
||||
inline_onebox = InlineOneboxer.lookup(
|
||||
element.attributes["href"].value,
|
||||
|
|
|
@ -6,11 +6,7 @@ require "file_store/s3_store"
|
|||
|
||||
describe CookedPostProcessor do
|
||||
context "#post_process" do
|
||||
fab!(:upload) do
|
||||
Fabricate(:upload,
|
||||
url: '/uploads/default/original/1X/1/1234567890123456.jpg'
|
||||
)
|
||||
end
|
||||
fab!(:upload) { Fabricate(:upload) }
|
||||
|
||||
fab!(:post) do
|
||||
Fabricate(:post, raw: <<~RAW)
|
||||
|
@ -254,10 +250,8 @@ describe CookedPostProcessor do
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "#post_process_images" do
|
||||
|
||||
context "processing images" do
|
||||
before do
|
||||
SiteSetting.responsive_post_image_sizes = ""
|
||||
end
|
||||
|
@ -306,8 +300,7 @@ describe CookedPostProcessor do
|
|||
cpp = CookedPostProcessor.new(post)
|
||||
|
||||
cpp.add_to_size_cache(upload.url, 2000, 1500)
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
html = cpp.html
|
||||
|
||||
|
@ -321,8 +314,7 @@ describe CookedPostProcessor do
|
|||
|
||||
cpp = CookedPostProcessor.new(post)
|
||||
cpp.add_to_size_cache(upload.url, 2000, 1500)
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
html = cpp.html
|
||||
|
||||
|
@ -348,8 +340,7 @@ describe CookedPostProcessor do
|
|||
|
||||
cpp = CookedPostProcessor.new(post)
|
||||
cpp.add_to_size_cache(upload.url, 200, 4000)
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html).to_not include('srcset="')
|
||||
end
|
||||
|
@ -368,8 +359,7 @@ describe CookedPostProcessor do
|
|||
let(:cpp) { CookedPostProcessor.new(post, image_sizes: image_sizes) }
|
||||
|
||||
before do
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
end
|
||||
|
||||
context "valid" do
|
||||
|
@ -406,7 +396,7 @@ describe CookedPostProcessor do
|
|||
|
||||
it "adds the width and height to images that don't have them" do
|
||||
FastImage.expects(:size).returns([123, 456])
|
||||
cpp.post_process_images
|
||||
cpp.post_process
|
||||
expect(cpp.html).to match(/width="123" height="456"/)
|
||||
expect(cpp).to be_dirty
|
||||
end
|
||||
|
@ -414,9 +404,14 @@ describe CookedPostProcessor do
|
|||
end
|
||||
|
||||
context "with large images" do
|
||||
|
||||
fab!(:upload) { Fabricate(:upload) }
|
||||
fab!(:post) { Fabricate(:post_with_large_image) }
|
||||
|
||||
fab!(:post) do
|
||||
Fabricate(:post, raw: <<~HTML)
|
||||
<img src="#{upload.url}">
|
||||
HTML
|
||||
end
|
||||
|
||||
let(:cpp) { CookedPostProcessor.new(post, disable_loading_image: true) }
|
||||
|
||||
before do
|
||||
|
@ -426,16 +421,13 @@ describe CookedPostProcessor do
|
|||
end
|
||||
|
||||
it "generates overlay information" do
|
||||
Upload.expects(:get_from_url).returns(upload)
|
||||
OptimizedImage.expects(:resize).returns(true)
|
||||
|
||||
FileStore::BaseStore.any_instance.expects(:get_depth_for).returns(0)
|
||||
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html).to match_html <<~HTML
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost/uploads/default/original/1X/1234567890123456.jpg" data-download-href="//test.localhost/uploads/default/#{upload.sha1}" title="logo.png"><img src="//test.localhost/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_690x788.png" width="690" height="788"><div class="meta">
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost#{upload.url}" data-download-href="//test.localhost/uploads/default/#{upload.sha1}" title="logo.png"><img src="//test.localhost/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_690x788.png" width="690" height="788"><div class="meta">
|
||||
<svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use xlink:href="#far-image"></use></svg><span class="filename">logo.png</span><span class="informations">1750×2000 1.21 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use xlink:href="#discourse-expand"></use></svg>
|
||||
</div></a></div></p>
|
||||
HTML
|
||||
|
@ -452,9 +444,7 @@ describe CookedPostProcessor do
|
|||
end
|
||||
|
||||
it 'should not add lightbox' do
|
||||
cpp.post_process_oneboxes
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html).to match_html <<~HTML
|
||||
<p><img class="onebox" src="//test.localhost/uploads/default/original/1X/1234567890123456.jpg" width="690" height="788"></p>
|
||||
|
@ -468,8 +458,7 @@ describe CookedPostProcessor do
|
|||
end
|
||||
|
||||
it 'should not add lightbox' do
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html).to match_html <<~HTML
|
||||
<p><img src="//test.localhost/uploads/default/original/1X/1234567890123456.svg" width="690" height="788"></p>
|
||||
|
@ -483,8 +472,7 @@ describe CookedPostProcessor do
|
|||
|
||||
it 'should not add lightbox' do
|
||||
SiteSetting.crawl_images = true
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html).to match_html("<p><img src=\"http://test.discourse/uploads/default/original/1X/1234567890123456.svg?somepamas\" width=\"690\"\ height=\"788\"></p>")
|
||||
end
|
||||
|
@ -494,24 +482,27 @@ describe CookedPostProcessor do
|
|||
end
|
||||
|
||||
context "with tall images" do
|
||||
fab!(:upload) { Fabricate(:upload) }
|
||||
|
||||
fab!(:post) do
|
||||
Fabricate(:post, raw: <<~HTML)
|
||||
<img src="#{upload.url}">
|
||||
HTML
|
||||
end
|
||||
|
||||
let(:upload) { Fabricate(:upload) }
|
||||
let(:post) { Fabricate(:post_with_large_image) }
|
||||
let(:cpp) { CookedPostProcessor.new(post, disable_loading_image: true) }
|
||||
|
||||
before do
|
||||
SiteSetting.create_thumbnails = true
|
||||
|
||||
Upload.expects(:get_from_url).returns(upload)
|
||||
FastImage.expects(:size).returns([860, 2000])
|
||||
OptimizedImage.expects(:resize).never
|
||||
OptimizedImage.expects(:crop).returns(true)
|
||||
|
||||
FileStore::BaseStore.any_instance.expects(:get_depth_for).returns(0)
|
||||
end
|
||||
|
||||
it "crops the image" do
|
||||
cpp.post_process_images
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html).to match(/width="690" height="500">/)
|
||||
expect(cpp).to be_dirty
|
||||
end
|
||||
|
@ -519,28 +510,29 @@ describe CookedPostProcessor do
|
|||
end
|
||||
|
||||
context "with iPhone X screenshots" do
|
||||
fab!(:upload) { Fabricate(:upload) }
|
||||
|
||||
fab!(:post) do
|
||||
Fabricate(:post, raw: <<~HTML)
|
||||
<img src="#{upload.url}">
|
||||
HTML
|
||||
end
|
||||
|
||||
let(:upload) { Fabricate(:upload) }
|
||||
let(:post) { Fabricate(:post_with_large_image) }
|
||||
let(:cpp) { CookedPostProcessor.new(post, disable_loading_image: true) }
|
||||
|
||||
before do
|
||||
SiteSetting.create_thumbnails = true
|
||||
|
||||
Upload.expects(:get_from_url).returns(upload)
|
||||
FastImage.expects(:size).returns([1125, 2436])
|
||||
OptimizedImage.expects(:resize).returns(true)
|
||||
OptimizedImage.expects(:crop).never
|
||||
|
||||
FileStore::BaseStore.any_instance.expects(:get_depth_for).returns(0)
|
||||
end
|
||||
|
||||
it "crops the image" do
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html).to match_html <<~HTML
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost/uploads/default/original/1X/1234567890123456.jpg" data-download-href="//test.localhost/uploads/default/#{upload.sha1}" title="logo.png"><img src="//test.localhost/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_230x500.png" width="230" height="500"><div class="meta">
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost#{upload.url}" data-download-href="//test.localhost/uploads/default/#{upload.sha1}" title="logo.png"><img src="//test.localhost/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_230x500.png" width="230" height="500"><div class="meta">
|
||||
<svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use xlink:href="#far-image"></use></svg><span class="filename">logo.png</span><span class="informations">1125×2436 1.21 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use xlink:href="#discourse-expand"></use></svg>
|
||||
</div></a></div></p>
|
||||
HTML
|
||||
|
@ -551,9 +543,14 @@ describe CookedPostProcessor do
|
|||
end
|
||||
|
||||
context "with large images when using subfolders" do
|
||||
|
||||
fab!(:upload) { Fabricate(:upload) }
|
||||
fab!(:post) { Fabricate(:post_with_large_image_on_subfolder) }
|
||||
|
||||
fab!(:post) do
|
||||
Fabricate(:post, raw: <<~HTML)
|
||||
<img src="/subfolder#{upload.url}">
|
||||
HTML
|
||||
end
|
||||
|
||||
let(:cpp) { CookedPostProcessor.new(post, disable_loading_image: true) }
|
||||
let(:base_url) { "http://test.localhost/subfolder" }
|
||||
let(:base_uri) { "/subfolder" }
|
||||
|
@ -563,8 +560,6 @@ describe CookedPostProcessor do
|
|||
SiteSetting.create_thumbnails = true
|
||||
Discourse.stubs(:base_url).returns(base_url)
|
||||
Discourse.stubs(:base_uri).returns(base_uri)
|
||||
|
||||
Upload.expects(:get_from_url).returns(upload)
|
||||
FastImage.expects(:size).returns([1750, 2000])
|
||||
OptimizedImage.expects(:resize).returns(true)
|
||||
|
||||
|
@ -572,11 +567,10 @@ describe CookedPostProcessor do
|
|||
end
|
||||
|
||||
it "generates overlay information" do
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html). to match_html <<~HTML
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost/subfolder/uploads/default/original/1X/1234567890123456.jpg" data-download-href="//test.localhost/subfolder/uploads/default/#{upload.sha1}" title="logo.png"><img src="//test.localhost/subfolder/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_690x788.png" width="690" height="788"><div class="meta">
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost/subfolder#{upload.url}" data-download-href="//test.localhost/subfolder/uploads/default/#{upload.sha1}" title="logo.png"><img src="//test.localhost/subfolder/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_690x788.png" width="690" height="788"><div class="meta">
|
||||
<svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use xlink:href="#far-image"></use></svg><span class="filename">logo.png</span><span class="informations">1750×2000 1.21 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use xlink:href="#discourse-expand"></use></svg>
|
||||
</div></a></div></p>
|
||||
HTML
|
||||
|
@ -586,11 +580,10 @@ describe CookedPostProcessor do
|
|||
|
||||
it "should escape the filename" do
|
||||
upload.update!(original_filename: "><img src=x onerror=alert('haha')>.png")
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html).to match_html <<~HTML
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost/subfolder/uploads/default/original/1X/1234567890123456.jpg" data-download-href="//test.localhost/subfolder/uploads/default/#{upload.sha1}" title="&gt;&lt;img src=x onerror=alert(&#39;haha&#39;)&gt;.png"><img src="//test.localhost/subfolder/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_690x788.png" width="690" height="788"><div class="meta">
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost/subfolder#{upload.url}" data-download-href="//test.localhost/subfolder/uploads/default/#{upload.sha1}" title="&gt;&lt;img src=x onerror=alert(&#39;haha&#39;)&gt;.png"><img src="//test.localhost/subfolder/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_690x788.png" width="690" height="788"><div class="meta">
|
||||
<svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use xlink:href="#far-image"></use></svg><span class="filename">&gt;&lt;img src=x onerror=alert(&#39;haha&#39;)&gt;.png</span><span class="informations">1750×2000 1.21 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use xlink:href="#discourse-expand"></use></svg>
|
||||
</div></a></div></p>
|
||||
HTML
|
||||
|
@ -599,28 +592,29 @@ describe CookedPostProcessor do
|
|||
end
|
||||
|
||||
context "with title" do
|
||||
fab!(:upload) { Fabricate(:upload) }
|
||||
|
||||
fab!(:post) do
|
||||
Fabricate(:post, raw: <<~HTML)
|
||||
<img src="#{upload.url}" title="WAT">
|
||||
HTML
|
||||
end
|
||||
|
||||
let(:upload) { Fabricate(:upload) }
|
||||
let(:post) { Fabricate(:post_with_large_image_and_title) }
|
||||
let(:cpp) { CookedPostProcessor.new(post, disable_loading_image: true) }
|
||||
|
||||
before do
|
||||
SiteSetting.max_image_height = 2000
|
||||
SiteSetting.create_thumbnails = true
|
||||
|
||||
Upload.expects(:get_from_url).returns(upload)
|
||||
FastImage.expects(:size).returns([1750, 2000])
|
||||
OptimizedImage.expects(:resize).returns(true)
|
||||
|
||||
FileStore::BaseStore.any_instance.expects(:get_depth_for).returns(0)
|
||||
end
|
||||
|
||||
it "generates overlay information" do
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.html).to match_html <<~HTML
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost/uploads/default/original/1X/1234567890123456.jpg" data-download-href="//test.localhost/uploads/default/#{upload.sha1}" title="WAT"><img src="//test.localhost/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_690x788.png" title="WAT" width="690" height="788"><div class="meta">
|
||||
<p><div class="lightbox-wrapper"><a class="lightbox" href="//test.localhost#{upload.url}" data-download-href="//test.localhost/uploads/default/#{upload.sha1}" title="WAT"><img src="//test.localhost/uploads/default/optimized/1X/#{upload.sha1}_#{OptimizedImage::VERSION}_690x788.png" title="WAT" width="690" height="788"><div class="meta">
|
||||
<svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use xlink:href="#far-image"></use></svg><span class="filename">WAT</span><span class="informations">1750×2000 1.21 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use xlink:href="#discourse-expand"></use></svg>
|
||||
</div></a></div></p>
|
||||
HTML
|
||||
|
@ -638,7 +632,8 @@ describe CookedPostProcessor do
|
|||
it "adds a topic image if there's one in the first post" do
|
||||
FastImage.stubs(:size)
|
||||
expect(post.topic.image_url).to eq(nil)
|
||||
cpp.update_post_image
|
||||
|
||||
cpp.post_process
|
||||
post.topic.reload
|
||||
expect(post.topic.image_url).to be_present
|
||||
end
|
||||
|
@ -651,12 +646,12 @@ describe CookedPostProcessor do
|
|||
it "adds a post image if there's one in the post" do
|
||||
FastImage.stubs(:size)
|
||||
expect(reply.image_url).to eq(nil)
|
||||
cpp.update_post_image
|
||||
cpp.post_process
|
||||
reply.reload
|
||||
expect(reply.image_url).to be_present
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
context "#extract_images" do
|
||||
|
@ -867,9 +862,7 @@ describe CookedPostProcessor do
|
|||
post.save_custom_fields
|
||||
|
||||
cpp = CookedPostProcessor.new(post, invalidate_oneboxes: true)
|
||||
cpp.post_process_oneboxes
|
||||
cpp.post_process_images
|
||||
cpp.optimize_urls
|
||||
cpp.post_process
|
||||
|
||||
expect(cpp.doc.to_s).to match(/<div class="large-image-placeholder">/)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue