Use normalizes to prepare CustomEmoji domain value (#28624)
				
					
				
			This commit is contained in:
		
							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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user