discourse/spec/serializers/emoji_serializer_spec.rb

49 lines
1.5 KiB
Ruby

# frozen_string_literal: true
RSpec.describe EmojiSerializer do
fab!(:custom_emoji) { CustomEmoji.create!(name: "trout", upload: Fabricate(:upload)) }
describe "#url" do
subject(:serializer) { described_class.new(emoji, root: false) }
fab!(:emoji) { Emoji.load_custom.first }
it "returns a valid URL" do
expect(serializer.url).to start_with("/uploads/")
end
it "returns the creator's username" do
expect(serializer.created_by).to eq(emoji.created_by)
end
it "works with a CDN" do
set_cdn_url("https://cdn.com")
expect(serializer.url).to start_with("https://cdn.com")
end
end
describe "missing uploads" do
before { custom_emoji.upload.destroy! }
it "doesn't raise an error with a missing upload and a CDN" do
emoji = Emoji.load_custom.first
set_cdn_url("https://cdn.com")
result = described_class.new(Emoji.load_custom.first, root: false).as_json
expect(result[:url]).to be_blank
end
it "doesn't raise an error with a missing upload and an s3 CDN" do
emoji = Emoji.load_custom.first
SiteSetting.enable_s3_uploads = true
SiteSetting.s3_upload_bucket = "s3bucket"
SiteSetting.s3_access_key_id = "s3_access_key_id"
SiteSetting.s3_secret_access_key = "s3_secret_access_key"
SiteSetting.s3_cdn_url = "https://example.com"
result = described_class.new(Emoji.load_custom.first, root: false).as_json
expect(result[:url]).to be_blank
end
end
end