Skip to content

Commit 8336d0c

Browse files
committed
Fix finished_at filters and add a couple of tests
Follow up to #111
1 parent de40350 commit 8336d0c

File tree

3 files changed

+38
-6
lines changed

3 files changed

+38
-6
lines changed

app/controllers/concerns/mission_control/jobs/job_filters.rb

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@ module MissionControl::Jobs::JobFilters
99

1010
private
1111
def set_filters
12-
@job_filters = { job_class_name: params.dig(:filter, :job_class_name).presence, queue_name: params.dig(:filter, :queue_name).presence,
13-
finished_at: finished_at_range_params }.compact
12+
@job_filters = {
13+
job_class_name: params.dig(:filter, :job_class_name).presence,
14+
queue_name: params.dig(:filter, :queue_name).presence,
15+
finished_at: finished_at_range_params
16+
}.compact
1417
end
1518

1619
def active_filters?
@@ -24,9 +27,7 @@ def finished_at_range_params
2427
end
2528
end
2629

27-
def date_with_time_zone(date)
28-
if date.present?
29-
DateTime.parse(date).in_time_zone
30-
end
30+
def parse_with_time_zone(date)
31+
DateTime.parse(date).in_time_zone if date.present?
3132
end
3233
end

test/active_job/jobs_relation_test.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@ class ActiveJob::JobsRelationTest < ActiveSupport::TestCase
3838
assert_equal "MyJob", jobs.job_class_name
3939
end
4040

41+
test "set finished_at range" do
42+
jobs = @jobs.where(finished_at: (1.day.ago..))
43+
assert 1.hour.ago.in? jobs.finished_at
44+
45+
# Supports concatenation without overriding exising properties
46+
jobs = jobs.where(queue_name: "my_queue")
47+
assert_equal "my_queue", jobs.queue_name
48+
assert 1.hour.ago.in? jobs.finished_at
49+
end
50+
4151
test "caches the fetched set of jobs" do
4252
ActiveJob::Base.queue_adapter.expects(:fetch_jobs).twice.returns([ :job_1, :job_2 ], [])
4353
ActiveJob::Base.queue_adapter.expects(:supports_job_filter?).at_least_once.returns(true)

test/controllers/jobs_controller_test.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,27 @@ class MissionControl::Jobs::JobsControllerTest < ActionDispatch::IntegrationTest
4343
assert_select "div.is-danger", "failed"
4444
end
4545

46+
test "get finished jobs filtered by finished_at date" do
47+
job = DummyJob.perform_later(42)
48+
perform_enqueued_jobs_async
49+
50+
get mission_control_jobs.application_jobs_url(@application, :finished)
51+
assert_response :ok
52+
assert_select "tr.job", 1
53+
54+
get mission_control_jobs.application_jobs_url(@application, :finished, filter: { finished_at_start: 1.hour.from_now.to_s })
55+
assert_response :ok
56+
assert_select "tr.job", 0
57+
58+
get mission_control_jobs.application_jobs_url(@application, :finished, filter: { finished_at_start: 1.hour.ago.to_s, finished_at_end: 1.hour.from_now })
59+
assert_response :ok
60+
assert_select "tr.job", 1
61+
62+
get mission_control_jobs.application_jobs_url(@application, :finished, filter: { finished_at_end: 1.hour.from_now })
63+
assert_response :ok
64+
assert_select "tr.job", 1
65+
end
66+
4667
test "redirect to queue when job doesn't exist" do
4768
job = DummyJob.perform_later(42)
4869

0 commit comments

Comments
 (0)