commit: 8f800ad6917e5fb41d17098f3f860d0d1aedcabe
parent 219a4423d8371fc89f122f3ef4874e9121b423f7
Author: Paul Woolcock <paul@woolcock.us>
Date: Tue, 10 Apr 2018 09:46:27 -0400
Change custom emoji search to `ILIKE` instead of `=` (#7099)
Diffstat:
3 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb
@@ -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
diff --git a/app/models/custom_emoji_filter.rb b/app/models/custom_emoji_filter.rb
@@ -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
diff --git a/spec/models/custom_emoji_spec.rb b/spec/models/custom_emoji_spec.rb
@@ -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) }