mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Pull hotlinked images for lightbox links as well.
This commit is contained in:
@@ -68,6 +68,25 @@ describe Jobs::PullHotlinkedImages do
|
||||
expect(post.raw).to match(/^<img src='\/uploads/)
|
||||
end
|
||||
|
||||
it 'replaces optimized images' do
|
||||
optimized_image = Fabricate(:optimized_image)
|
||||
url = "#{Discourse.base_url}#{optimized_image.url}"
|
||||
|
||||
stub_request(:get, url)
|
||||
.to_return(status: 200, body: file_from_fixtures("smallest.png"))
|
||||
|
||||
post = Fabricate(:post, raw: "<img src='#{url}'>")
|
||||
|
||||
expect { Jobs::PullHotlinkedImages.new.execute(post_id: post.id) }
|
||||
.to change { Upload.count }.by(1)
|
||||
|
||||
upload = Upload.last
|
||||
post.reload
|
||||
|
||||
expect(post.raw).to eq("<img src='#{upload.url}'>")
|
||||
expect(post.uploads).to contain_exactly(upload)
|
||||
end
|
||||
|
||||
describe 'onebox' do
|
||||
let(:media) { "File:Brisbane_May_2013201.jpg" }
|
||||
let(:url) { "https://commons.wikimedia.org/wiki/#{media}" }
|
||||
@@ -172,18 +191,52 @@ describe Jobs::PullHotlinkedImages do
|
||||
|
||||
describe "with a lightboxed image" do
|
||||
fab!(:upload) { Fabricate(:upload) }
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
|
||||
before do
|
||||
FastImage.expects(:size).returns([1750, 2000])
|
||||
FastImage.expects(:size).returns([1750, 2000]).at_least_once
|
||||
OptimizedImage.stubs(:resize).returns(true)
|
||||
Jobs.run_immediately!
|
||||
end
|
||||
|
||||
it 'replaces missing local uploads in lightbox link' do
|
||||
post = PostCreator.create!(
|
||||
user,
|
||||
raw: "<img src='#{Discourse.base_url}#{upload.url}'>",
|
||||
title: "Some title that is long enough"
|
||||
)
|
||||
|
||||
expect(post.reload.cooked).to have_tag(:a, with: { class: "lightbox" })
|
||||
|
||||
stub_request(:get, "#{Discourse.base_url}#{upload.url}")
|
||||
.to_return(status: 200, body: file_from_fixtures("smallest.png"))
|
||||
|
||||
upload.delete
|
||||
|
||||
expect { Jobs::PullHotlinkedImages.new.execute(post_id: post.id) }
|
||||
.to change { Upload.count }.by(1)
|
||||
|
||||
post.reload
|
||||
|
||||
expect(post.raw).to eq("<img src='#{Upload.last.url}'>")
|
||||
expect(post.uploads.count).to eq(1)
|
||||
end
|
||||
|
||||
it "doesn't remove optimized images from lightboxes" do
|
||||
post = Fabricate(:post, raw: "")
|
||||
Jobs::ProcessPost.new.execute(post_id: post.id)
|
||||
post = PostCreator.create!(
|
||||
user,
|
||||
raw: "",
|
||||
title: "Some title that is long enough"
|
||||
)
|
||||
|
||||
expect { Jobs::PullHotlinkedImages.new.execute(post_id: post.id) }.not_to change { Upload.count }
|
||||
expect(post.reload.cooked).to include "/uploads/default/optimized/" # Ensure the lightbox was actually rendered
|
||||
expect(post.reload.cooked).to have_tag(:a, with: { class: "lightbox" })
|
||||
|
||||
expect { Jobs::PullHotlinkedImages.new.execute(post_id: post.id) }
|
||||
.not_to change { Upload.count }
|
||||
|
||||
post.reload
|
||||
|
||||
expect(post.raw).to eq("")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user