diff --git a/engine/app/filters/good_job/executions_filter.rb b/engine/app/filters/good_job/executions_filter.rb index 937a0783b..d85adea4d 100644 --- a/engine/app/filters/good_job/executions_filter.rb +++ b/engine/app/filters/good_job/executions_filter.rb @@ -14,7 +14,7 @@ def filtered_query query = base_query query = query.job_class(params[:job_class]) if params[:job_class].present? query = query.where(queue_name: params[:queue_name]) if params[:queue_name].present? - query = query.search(params['query']) if params[:query].present? + query = query.search_text(params[:query]) if params[:query].present? if params[:state] case params[:state] diff --git a/engine/app/filters/good_job/jobs_filter.rb b/engine/app/filters/good_job/jobs_filter.rb index ebac1c65e..4338c947d 100644 --- a/engine/app/filters/good_job/jobs_filter.rb +++ b/engine/app/filters/good_job/jobs_filter.rb @@ -18,7 +18,7 @@ def filtered_query query = query.job_class(params[:job_class]) if params[:job_class].present? query = query.where(queue_name: params[:queue_name]) if params[:queue_name].present? - query = query.search(params['query']) if params[:query].present? + query = query.search_text(params[:query]) if params[:query].present? if params[:state] case params[:state] diff --git a/lib/good_job/filterable.rb b/lib/good_job/filterable.rb index bcfddec93..cbc339f4e 100644 --- a/lib/good_job/filterable.rb +++ b/lib/good_job/filterable.rb @@ -24,12 +24,12 @@ module Filterable end) # Search records by text query. - # @!method search(query) + # @!method search_text(query) # @!scope class # @param query [String] # Search Query # @return [ActiveRecord::Relation] - scope :search, (lambda do |query| + scope :search_text, (lambda do |query| query = query.to_s.strip next if query.blank? diff --git a/spec/engine/filters/good_job/executions_filter_spec.rb b/spec/engine/filters/good_job/executions_filter_spec.rb index 39ca3afa3..ea8ff3d70 100644 --- a/spec/engine/filters/good_job/executions_filter_spec.rb +++ b/spec/engine/filters/good_job/executions_filter_spec.rb @@ -74,6 +74,16 @@ expect(filter.records.size).to eq 1 end end + + context 'when filtered by search' do + before do + params[:query] = 'default' + end + + it 'returns a limited set of results' do + expect(filter.records.size).to eq 2 + end + end end %w[ diff --git a/spec/engine/filters/good_job/jobs_filter_spec.rb b/spec/engine/filters/good_job/jobs_filter_spec.rb index eca5f3f39..740f94b1c 100644 --- a/spec/engine/filters/good_job/jobs_filter_spec.rb +++ b/spec/engine/filters/good_job/jobs_filter_spec.rb @@ -76,6 +76,16 @@ expect(filter.records.size).to eq 1 end end + + context 'when filtered by search' do + before do + params[:query] = 'DeadError' + end + + it 'returns a limited set of results' do + expect(filter.records.size).to eq 1 + end + end end %w[ diff --git a/spec/lib/good_job/filterable_spec.rb b/spec/lib/good_job/filterable_spec.rb index 12dd291d4..7f2ecce11 100644 --- a/spec/lib/good_job/filterable_spec.rb +++ b/spec/lib/good_job/filterable_spec.rb @@ -5,25 +5,25 @@ let(:model_class) { GoodJob::Execution } let!(:execution) { model_class.create(active_job_id: SecureRandom.uuid, queue_name: "default", serialized_params: { example_key: 'example_value' }, error: "ExampleError: a message") } - describe '.search' do + describe '.search_test' do it 'searches serialized params' do - expect(model_class.search('example_value')).to include(execution) + expect(model_class.search_text('example_value')).to include(execution) end it 'searches record id' do - expect(model_class.search(execution.id)).to include(execution) + expect(model_class.search_text(execution.id)).to include(execution) end it 'searches errors' do - expect(model_class.search('ExampleError')).to include(execution) + expect(model_class.search_text('ExampleError')).to include(execution) end it 'filters out non-matching records' do - expect(model_class.search('ghost')).to be_empty + expect(model_class.search_text('ghost')).to be_empty end it 'is chainable and reversible' do - expect(model_class.where.not(id: nil).search('example_value').reverse).to include(execution) + expect(model_class.where.not(id: nil).search_text('example_value').reverse).to include(execution) end end end