diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index 22a1c172de2..ec0d5578832 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -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 diff --git a/app/views/filters/_filter.html.haml b/app/views/filters/_filter.html.haml index a544ac3a758..3daff54237a 100644 --- a/app/views/filters/_filter.html.haml +++ b/app/views/filters/_filter.html.haml @@ -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 diff --git a/spec/helpers/filters_helper_spec.rb b/spec/helpers/filters_helper_spec.rb new file mode 100644 index 00000000000..7cbacdfa34b --- /dev/null +++ b/spec/helpers/filters_helper_spec.rb @@ -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