0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-06 13:08:40 +08:00
discourse/spec/jobs/regular/generate_topic_og_image_spec.rb
Penar Musaraj 1e5ea13515
DEV: Temporarily hide/skip OG image generation (#41264)
This feature isn't working properly yet on all environments.
2026-06-29 11:38:17 -04:00

72 lines
2.8 KiB
Ruby
Vendored

# frozen_string_literal: true
RSpec.describe Jobs::GenerateTopicOgImage do
fab!(:topic)
before { SiteSetting.generate_topic_og_image = true }
it "does nothing when the setting is disabled" do
SiteSetting.generate_topic_og_image = false
TopicOgImageGenerator.any_instance.expects(:generate).never
described_class.new.execute(topic_id: topic.id)
end
it "does nothing when login_required is enabled" do
SiteSetting.login_required = true
TopicOgImageGenerator.any_instance.expects(:generate).never
described_class.new.execute(topic_id: topic.id)
expect(topic.reload.og_image_upload_id).to be_nil
end
xit "clears stale generated OG images when topic has a user-uploaded image" do
old_upload = Fabricate(:upload)
topic.update_column(:image_upload_id, Fabricate(:upload).id)
topic.update_column(:og_image_upload_id, old_upload.id)
UploadReference.ensure_exist!(upload_ids: [old_upload.id], target: topic)
TopicOgImageGenerator.any_instance.expects(:generate).never
described_class.new.execute(topic_id: topic.id)
expect(topic.reload.og_image_upload_id).to be_nil
expect(UploadReference.exists?(upload_id: old_upload.id, target: topic)).to eq(false)
end
xit "replaces an existing generated OG image and cleans up the old reference" do
old_upload = Fabricate(:upload)
topic.update_column(:og_image_upload_id, old_upload.id)
UploadReference.ensure_exist!(upload_ids: [old_upload.id], target: topic)
new_upload = Fabricate(:upload)
TopicOgImageGenerator.any_instance.expects(:generate).returns(new_upload)
described_class.new.execute(topic_id: topic.id)
expect(topic.reload.og_image_upload_id).to eq(new_upload.id)
expect(UploadReference.exists?(upload_id: new_upload.id, target: topic)).to eq(true)
expect(UploadReference.exists?(upload_id: old_upload.id, target: topic)).to eq(false)
end
it "does nothing for personal messages" do
pm = Fabricate(:private_message_topic)
TopicOgImageGenerator.any_instance.expects(:generate).never
described_class.new.execute(topic_id: pm.id)
expect(pm.reload.og_image_upload_id).to be_nil
end
it "does nothing for topics in a read-restricted category" do
private_category = Fabricate(:private_category, group: Fabricate(:group))
topic.update!(category: private_category)
TopicOgImageGenerator.any_instance.expects(:generate).never
described_class.new.execute(topic_id: topic.id)
expect(topic.reload.og_image_upload_id).to be_nil
end
xit "generates an OG image for a topic without an image" do
upload = Fabricate(:upload)
TopicOgImageGenerator.any_instance.expects(:generate).returns(upload)
described_class.new.execute(topic_id: topic.id)
topic.reload
expect(topic.og_image_upload_id).to eq(upload.id)
expect(UploadReference.exists?(upload_id: upload.id, target: topic)).to eq(true)
end
end