Change custom emoji search to ILIKE instead of = (#7099)
				
					
				
			This commit is contained in:
		
							parent
							
								
									219a4423d8
								
							
						
					
					
						commit
						8f800ad691
					
				
					 3 changed files with 29 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -58,5 +58,9 @@ class CustomEmoji < ApplicationRecord
 | 
			
		|||
 | 
			
		||||
      where(shortcode: shortcodes, domain: domain, disabled: false)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def search(shortcode)
 | 
			
		||||
      where('"custom_emojis"."shortcode" ILIKE ?', "%#{shortcode}%")
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ class CustomEmojiFilter
 | 
			
		|||
    when 'by_domain'
 | 
			
		||||
      CustomEmoji.where(domain: value)
 | 
			
		||||
    when 'shortcode'
 | 
			
		||||
      CustomEmoji.where(shortcode: value)
 | 
			
		||||
      CustomEmoji.search(value)
 | 
			
		||||
    else
 | 
			
		||||
      raise "Unknown filter: #{key}"
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,30 @@
 | 
			
		|||
require 'rails_helper'
 | 
			
		||||
 | 
			
		||||
RSpec.describe CustomEmoji, type: :model do
 | 
			
		||||
  describe '#search' do
 | 
			
		||||
    let(:custom_emoji) { Fabricate(:custom_emoji, shortcode: shortcode) }
 | 
			
		||||
 | 
			
		||||
    subject  { described_class.search(search_term) }
 | 
			
		||||
 | 
			
		||||
    context 'shortcode is exact' do
 | 
			
		||||
      let(:shortcode) { 'blobpats' }
 | 
			
		||||
      let(:search_term) { 'blobpats' }
 | 
			
		||||
 | 
			
		||||
      it 'finds emoji' do
 | 
			
		||||
        is_expected.to include(custom_emoji)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'shortcode is partial' do
 | 
			
		||||
      let(:shortcode) { 'blobpats' }
 | 
			
		||||
      let(:search_term) { 'blob' }
 | 
			
		||||
 | 
			
		||||
      it 'finds emoji' do
 | 
			
		||||
        is_expected.to include(custom_emoji)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '#local?' do
 | 
			
		||||
    let(:custom_emoji) { Fabricate(:custom_emoji, domain: domain) }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue