Use `normalizes` on `CustomFilter#context` value (#27602)

main
Matt Jankowski 2024-03-13 04:50:21 -04:00 committed by GitHub
parent 71eecbfa1f
commit 01b624c4a0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 5 deletions

View File

@ -41,7 +41,7 @@ class CustomFilter < ApplicationRecord
validates :title, :context, presence: true validates :title, :context, presence: true
validate :context_must_be_valid validate :context_must_be_valid
before_validation :clean_up_contexts normalizes :context, with: ->(context) { context.map(&:strip).filter_map(&:presence) }
before_save :prepare_cache_invalidation! before_save :prepare_cache_invalidation!
before_destroy :prepare_cache_invalidation! before_destroy :prepare_cache_invalidation!
@ -114,10 +114,6 @@ class CustomFilter < ApplicationRecord
private private
def clean_up_contexts
self.context = Array(context).map(&:strip).filter_map(&:presence)
end
def context_must_be_valid def context_must_be_valid
errors.add(:context, I18n.t('filters.errors.invalid_context')) if invalid_context_value? errors.add(:context, I18n.t('filters.errors.invalid_context')) if invalid_context_value?
end end

View File

@ -32,4 +32,12 @@ RSpec.describe CustomFilter do
expect(record).to model_have_error_on_field(:context) expect(record).to model_have_error_on_field(:context)
end end
end end
describe 'Normalizations' do
it 'cleans up context values' do
record = described_class.new(context: ['home', 'notifications', 'public ', ''])
expect(record.context).to eq(%w(home notifications public))
end
end
end end