From e61959e6a8c8c7095ac69ec4a96486a7dcb8b511 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Fri, 5 May 2017 14:53:38 +0800 Subject: [PATCH] FIX: `CustomEmoji` may contain an invalid upload_id. https://meta.discourse.org/t/white-screen-after-deleting-custom-emoji/61608 --- app/models/emoji.rb | 2 +- spec/models/emoji_spec.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/models/emoji.rb b/app/models/emoji.rb index 54cac0c4b2b..e737110cf23 100644 --- a/app/models/emoji.rb +++ b/app/models/emoji.rb @@ -95,7 +95,7 @@ class Emoji CustomEmoji.order(:name).all.each do |emoji| result << Emoji.new.tap do |e| e.name = emoji.name - e.url = emoji.upload.url + e.url = emoji.upload&.url end end diff --git a/spec/models/emoji_spec.rb b/spec/models/emoji_spec.rb index 33b2f9114d9..40c214b40aa 100644 --- a/spec/models/emoji_spec.rb +++ b/spec/models/emoji_spec.rb @@ -15,4 +15,17 @@ describe Emoji do expect(Emoji.replacement_code('robin')).to be_nil end + describe '.load_custom' do + describe 'when a custom emoji has an invalid upload_id' do + it 'should return the custom emoji without a URL' do + CustomEmoji.create!(name: 'test', upload_id: -1) + + emoji = Emoji.load_custom.first + + expect(emoji.name).to eq('test') + expect(emoji.url).to eq(nil) + end + end + end + end