Extract filter_keywords helper method for listing filter keyword groups (#35921)

This commit is contained in:
Matt Jankowski authored and GitHub committed 2025-12-17 14:48:58 +00:00
1 parent c4a760d6ba
commit 7e817f2471
3 files changed
+33 -3

No files matched your search

+8
View File
@@ -1,6 +1,8 @@
# frozen_string_literal: true
module FiltersHelper
KEYWORDS_LIMIT = 5
def filter_action_label(action)
safe_join(
[
@@ -9,4 +11,10 @@ module FiltersHelper
]
)
end
def filter_keywords(filter)
filter.keywords.map(&:keyword).take(KEYWORDS_LIMIT).tap do |list|
list << '…' if filter.keywords.size > KEYWORDS_LIMIT
end.join(', ')
end
end
+1 -3
View File
@@ -19,9 +19,7 @@
.permissions-list__item__text__title
= t('filters.index.keywords', count: filter.keywords.size)
.permissions-list__item__text__type
- keywords = filter.keywords.map(&:keyword)
- keywords = keywords.take(5) + ['…'] if keywords.size > 5 # TODO
= keywords.join(', ')
= filter_keywords(filter)
- unless filter.statuses.empty?
%li.permissions-list__item
.permissions-list__item__icon
+24
View File
@@ -0,0 +1,24 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe FiltersHelper do
describe '#filter_keywords' do
subject { helper.filter_keywords(filter) }
let(:filter) { Fabricate.build :custom_filter, keywords: }
let(:keywords) { words.map { |keyword| Fabricate.build(:custom_filter_keyword, keyword:) } }
context 'with few keywords' do
let(:words) { %w(One) }
it { is_expected.to eq('One') }
end
context 'with many keywords' do
let(:words) { %w(One Two Three Four Five Six Seven Eight Nine Ten) }
it { is_expected.to eq('One, Two, Three, Four, Five, …') }
end
end
end