diff --git a/src/Controllers/ShowQueueMonitorController.php b/src/Controllers/ShowQueueMonitorController.php index 0e76974..aa6d24b 100644 --- a/src/Controllers/ShowQueueMonitorController.php +++ b/src/Controllers/ShowQueueMonitorController.php @@ -30,10 +30,10 @@ public function __invoke(Request $request) ]); $filters = [ - 'status' => isset($data['status']) ? (int) $data['status'] : null, + 'status' => isset($data['status']) && '' !== $data['status'] ? (int) $data['status'] : null, 'queue' => $data['queue'] ?? 'all', - 'name' => $data['name'] ?? null, - 'custom_data' => $data['custom_data'] ?? null, + 'name' => isset($data['name']) && '' !== $data['name'] ? $data['name'] : null, + 'custom_data' => isset($data['custom_data']) && '' !== $data['custom_data'] ? $data['custom_data'] : null, ]; $jobsQuery = QueueMonitor::getModel()->newQuery(); diff --git a/tests/RoutesTest.php b/tests/RoutesTest.php index f881f3a..f5c98c8 100644 --- a/tests/RoutesTest.php +++ b/tests/RoutesTest.php @@ -4,6 +4,7 @@ use romanzipp\QueueMonitor\Enums\MonitorStatus; use romanzipp\QueueMonitor\Models\Monitor; +use romanzipp\QueueMonitor\Tests\Support\MonitoredJob; use romanzipp\QueueMonitor\Tests\TestCases\DatabaseTestCase; class RoutesTest extends DatabaseTestCase @@ -40,6 +41,58 @@ public function testIndexEnabled() ->assertViewIs('queue-monitor::jobs'); } + public function testIndexStatusFilterAll() + { + config(['queue-monitor.ui.enabled' => true]); + + Monitor::query()->create(['job_id' => mt_rand(), 'status' => MonitorStatus::RUNNING]); + Monitor::query()->create(['job_id' => mt_rand(), 'status' => MonitorStatus::FAILED]); + + $this + ->get('/jobs?status=') + ->assertStatus(200) + ->assertViewHas('filters', fn (array $filters) => null === $filters['status']) + ->assertViewHas('jobs', fn ($jobs) => 2 === $jobs->total()); + } + + public function testIndexStatusFilterRunning() + { + config(['queue-monitor.ui.enabled' => true]); + + Monitor::query()->create(['job_id' => mt_rand(), 'status' => MonitorStatus::RUNNING]); + Monitor::query()->create(['job_id' => mt_rand(), 'status' => MonitorStatus::FAILED]); + + $this + ->get('/jobs?status=0') + ->assertStatus(200) + ->assertViewHas('filters', fn (array $filters) => MonitorStatus::RUNNING === $filters['status']) + ->assertViewHas('jobs', fn ($jobs) => 1 === $jobs->total()); + } + + public function testIndexFiltersByJobNameWithoutRestrictingStatusToRunning() + { + config(['queue-monitor.ui.enabled' => true]); + + Monitor::query()->create([ + 'job_id' => '1', + 'name' => MonitoredJob::class, + 'status' => MonitorStatus::SUCCEEDED, + 'started_at' => now(), + ]); + + Monitor::query()->create([ + 'job_id' => '2', + 'name' => MonitoredJob::class, + 'status' => MonitorStatus::FAILED, + 'started_at' => now(), + ]); + + $this + ->get('/jobs?name=MonitoredJob&status=&queue=all') + ->assertStatus(200) + ->assertViewHas('jobs', fn ($jobs) => 2 === $jobs->total()); + } + /* *-------------------------------------------------------------------------- * Delete Monitor diff --git a/views/partials/table.blade.php b/views/partials/table.blade.php index b134e6e..769b488 100644 --- a/views/partials/table.blade.php +++ b/views/partials/table.blade.php @@ -35,7 +35,7 @@