From b2cc6220362700ba780ec523e308dd0006e7baf8 Mon Sep 17 00:00:00 2001 From: mayor Date: Fri, 6 Feb 2026 16:17:26 -0600 Subject: [PATCH] test: add missing assertions for ordering and worker filtering --- test/towerops/job_monitoring_test.exs | 41 +++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/test/towerops/job_monitoring_test.exs b/test/towerops/job_monitoring_test.exs index 5a38ee51..5824c2bb 100644 --- a/test/towerops/job_monitoring_test.exs +++ b/test/towerops/job_monitoring_test.exs @@ -10,20 +10,19 @@ defmodule Towerops.JobMonitoringTest do test "returns jobs in executing state for polling and discovery workers" do device = device_fixture() - # Create executing polling job - oban_job_fixture(%{ + # Create jobs with different attempted_at times + older_job = oban_job_fixture(%{ worker: "Towerops.Workers.DevicePollerWorker", state: "executing", args: %{"device_id" => device.id}, - attempted_at: DateTime.utc_now() + attempted_at: DateTime.add(DateTime.utc_now(), -60, :second) # 60 seconds ago }) - # Create executing discovery job - oban_job_fixture(%{ + newer_job = oban_job_fixture(%{ worker: "Towerops.Workers.DiscoveryWorker", state: "executing", args: %{"device_id" => device.id}, - attempted_at: DateTime.utc_now() + attempted_at: DateTime.utc_now() # Now }) # Create completed job (should not be returned) @@ -37,6 +36,36 @@ defmodule Towerops.JobMonitoringTest do assert length(jobs) == 2 assert Enum.all?(jobs, fn j -> j.state == "executing" end) + + # Verify ascending order by attempted_at + assert hd(jobs).id == older_job.id + assert List.last(jobs).id == newer_job.id + end + + test "excludes jobs from other workers" do + device = device_fixture() + + # Create job from non-monitored worker + oban_job_fixture(%{ + worker: "Towerops.Workers.SomeOtherWorker", + state: "executing", + args: %{"device_id" => device.id}, + attempted_at: DateTime.utc_now() + }) + + # Create job from monitored worker + oban_job_fixture(%{ + worker: "Towerops.Workers.DevicePollerWorker", + state: "executing", + args: %{"device_id" => device.id}, + attempted_at: DateTime.utc_now() + }) + + jobs = JobMonitoring.list_active_jobs() + + # Should only return the DevicePollerWorker job + assert length(jobs) == 1 + assert hd(jobs).worker == "Towerops.Workers.DevicePollerWorker" end end end