Use normalizes to prepare CustomEmoji `domain` value (#28624)
parent
202951e6d9
commit
aa6d07dbd9
|
@ -41,7 +41,7 @@ class CustomEmoji < ApplicationRecord
|
||||||
|
|
||||||
has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' } }, validate_media_type: false
|
has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' } }, validate_media_type: false
|
||||||
|
|
||||||
before_validation :downcase_domain
|
normalizes :domain, with: ->(domain) { domain.downcase }
|
||||||
|
|
||||||
validates_attachment :image, content_type: { content_type: IMAGE_MIME_TYPES }, presence: true, size: { less_than: LIMIT }
|
validates_attachment :image, content_type: { content_type: IMAGE_MIME_TYPES }, presence: true, size: { less_than: LIMIT }
|
||||||
validates :shortcode, uniqueness: { scope: :domain }, format: { with: SHORTCODE_ONLY_RE }, length: { minimum: 2 }
|
validates :shortcode, uniqueness: { scope: :domain }, format: { with: SHORTCODE_ONLY_RE }, length: { minimum: 2 }
|
||||||
|
@ -95,8 +95,4 @@ class CustomEmoji < ApplicationRecord
|
||||||
def remove_entity_cache
|
def remove_entity_cache
|
||||||
Rails.cache.delete(EntityCache.instance.to_key(:emoji, shortcode, domain))
|
Rails.cache.delete(EntityCache.instance.to_key(:emoji, shortcode, domain))
|
||||||
end
|
end
|
||||||
|
|
||||||
def downcase_domain
|
|
||||||
self.domain = domain.downcase unless domain.nil?
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -78,12 +78,23 @@ RSpec.describe CustomEmoji do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'pre_validation' do
|
describe 'Normalizations' do
|
||||||
let(:custom_emoji) { Fabricate(:custom_emoji, domain: 'wWw.MaStOdOn.CoM') }
|
describe 'downcase domain value' do
|
||||||
|
context 'with a mixed case domain value' do
|
||||||
|
it 'normalizes the value to downcased' do
|
||||||
|
custom_emoji = Fabricate.build(:custom_emoji, domain: 'wWw.MaStOdOn.CoM')
|
||||||
|
|
||||||
it 'downcases' do
|
expect(custom_emoji.domain).to eq('www.mastodon.com')
|
||||||
custom_emoji.valid?
|
end
|
||||||
expect(custom_emoji.domain).to eq('www.mastodon.com')
|
end
|
||||||
|
|
||||||
|
context 'with a nil domain value' do
|
||||||
|
it 'leaves the value as nil' do
|
||||||
|
custom_emoji = Fabricate.build(:custom_emoji, domain: nil)
|
||||||
|
|
||||||
|
expect(custom_emoji.domain).to be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue