]> cat aescling's git repositories - mastodon.git/commitdiff
Change custom emoji search to `ILIKE` instead of `=` (#7099)
authorPaul Woolcock <paul@woolcock.us>
Tue, 10 Apr 2018 13:46:27 +0000 (09:46 -0400)
committerEugen Rochko <eugen@zeonfederated.com>
Tue, 10 Apr 2018 13:46:27 +0000 (15:46 +0200)
app/models/custom_emoji.rb
app/models/custom_emoji_filter.rb
spec/models/custom_emoji_spec.rb

index 476178e86e1adc46b7ac4d0d7b4ca74c8bf92d1f..1ec21d1a0bb203da8c8ded412a4a0857f847a042 100644 (file)
@@ -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
index 2c09ed65ca658d86000041e88b4315648a876d25..c4bc310bb0773d60b5136117a6832edff6435ccb 100644 (file)
@@ -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
index bb150b837645248199f0464cf474f747efcbc2b2..87367df5003a47b20e4b090f8822bc66a29eb28d 100644 (file)
@@ -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) }