diff --git a/app/controllers/admin/custom_emojis_controller.rb b/app/controllers/admin/custom_emojis_controller.rb index b6fc9ef27c..4cfe02eabb 100644 --- a/app/controllers/admin/custom_emojis_controller.rb +++ b/app/controllers/admin/custom_emojis_controller.rb @@ -5,9 +5,6 @@ module Admin def index authorize :custom_emoji, :index? - # If filtering by local emojis, remove by_domain filter. - params.delete(:by_domain) if params[:local].present? - # If filtering by domain, ensure remote filter is set. if params[:by_domain].present? params.delete(:local) diff --git a/app/models/custom_emoji_filter.rb b/app/models/custom_emoji_filter.rb index 59ab010875..7f3cec5ae2 100644 --- a/app/models/custom_emoji_filter.rb +++ b/app/models/custom_emoji_filter.rb @@ -19,7 +19,7 @@ class CustomEmojiFilter def results scope = CustomEmoji.alphabetic - params.each do |key, value| + relevant_params.each do |key, value| next if IGNORED_PARAMS.include?(key.to_s) scope.merge!(scope_for(key, value)) if value.present? @@ -30,6 +30,12 @@ class CustomEmojiFilter private + def relevant_params + params.tap do |args| + args.delete(:by_domain) if args[:local].present? + end + end + def scope_for(key, value) case key.to_s when 'local' diff --git a/spec/models/custom_emoji_filter_spec.rb b/spec/models/custom_emoji_filter_spec.rb index c36fecd60d..8fdaeffd24 100644 --- a/spec/models/custom_emoji_filter_spec.rb +++ b/spec/models/custom_emoji_filter_spec.rb @@ -12,9 +12,9 @@ RSpec.describe CustomEmojiFilter do context 'when params have values' do context 'when local' do - let(:params) { { local: true } } + let(:params) { { local: true, by_domain: 'a' } } - it 'returns ActiveRecord::Relation' do + it 'ignores domain and returns ActiveRecord::Relation' do expect(subject).to be_a(ActiveRecord::Relation) expect(subject).to contain_exactly(custom_emoji_domain_nil) end