|
| 1 | +<?php |
| 2 | + |
| 3 | +use HoudaSlassi\Vantage\Listeners\RecordJobSuccess; |
| 4 | +use HoudaSlassi\Vantage\Models\VantageJob; |
| 5 | +use Illuminate\Queue\Events\JobProcessed; |
| 6 | + |
| 7 | +it('skips counting released jobs as processed', function () { |
| 8 | + VantageJob::query()->delete(); |
| 9 | + |
| 10 | + $releasedJob = new class { |
| 11 | + public function getQueue() { return 'default'; } |
| 12 | + public function attempts() { return 1; } |
| 13 | + public function uuid() { return 'released-uuid'; } |
| 14 | + public function resolveName() { return 'App\\Jobs\\RateLimitedJob'; } |
| 15 | + public function isReleased() { return true; } |
| 16 | + public function isDeletedOrReleased() { return true; } |
| 17 | + }; |
| 18 | + |
| 19 | + $event = new JobProcessed('database', $releasedJob); |
| 20 | + (new RecordJobSuccess())->handle($event); |
| 21 | + |
| 22 | + expect(VantageJob::where('uuid', 'released-uuid')->exists())->toBeFalse(); |
| 23 | +}); |
| 24 | + |
| 25 | +it('still counts normal processed jobs', function () { |
| 26 | + VantageJob::query()->delete(); |
| 27 | + |
| 28 | + $record = VantageJob::create([ |
| 29 | + 'uuid' => 'normal-uuid', |
| 30 | + 'job_class' => 'App\\Jobs\\NormalJob', |
| 31 | + 'status' => 'processing', |
| 32 | + 'started_at' => now()->subSecond(), |
| 33 | + ]); |
| 34 | + |
| 35 | + $normalJob = new class { |
| 36 | + public function getQueue() { return 'default'; } |
| 37 | + public function attempts() { return 1; } |
| 38 | + public function uuid() { return 'normal-uuid'; } |
| 39 | + public function resolveName() { return 'App\\Jobs\\NormalJob'; } |
| 40 | + public function isReleased() { return false; } |
| 41 | + public function isDeletedOrReleased() { return false; } |
| 42 | + }; |
| 43 | + |
| 44 | + $event = new JobProcessed('database', $normalJob); |
| 45 | + (new RecordJobSuccess())->handle($event); |
| 46 | + |
| 47 | + $updated = VantageJob::find($record->id); |
| 48 | + |
| 49 | + expect($updated->status)->toBe('processed') |
| 50 | + ->and($updated->finished_at)->not()->toBeNull(); |
| 51 | +}); |
| 52 | + |
0 commit comments