Extract filter_keywords helper method for listing filter keyword groups

This commit is contained in:
Matt Jankowski 2025-08-26 13:04:54 -04:00
parent 4180f754d0
commit 3b9befc955
3 changed files with 33 additions and 3 deletions

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

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

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