|
4 | 4 |
|
5 | 5 | namespace Konekt\History\Tests;
|
6 | 6 |
|
| 7 | +use Illuminate\Support\Carbon; |
7 | 8 | use Illuminate\Support\Facades\Bus;
|
| 9 | +use Illuminate\Support\Str; |
8 | 10 | use Konekt\History\JobTracker;
|
9 | 11 | use Konekt\History\Models\JobExecution;
|
10 | 12 | use Konekt\History\Models\JobStatus;
|
@@ -82,4 +84,91 @@ public function it_can_return_the_entries_of_a_given_job_class_and_limit_the_rec
|
82 | 84 | $entries = JobExecution::byJobClass(SampleTrackableJob::class, false, 5);
|
83 | 85 | $this->assertCount(5, $entries);
|
84 | 86 | }
|
| 87 | + |
| 88 | + /** @test */ |
| 89 | + public function it_returns_the_queued_at_date_as_last_time_something_has_happened_to_it_when_there_are_no_logs_and_no_other_event_dates_recorded() |
| 90 | + { |
| 91 | + JobExecution::ofJobClass(SampleTrackableJob::class)->delete(); |
| 92 | + |
| 93 | + /** @var JobExecution $job */ |
| 94 | + $job = JobExecution::create([ |
| 95 | + 'job_class' => SampleTrackableJob::class, |
| 96 | + 'tracking_id' => Str::ulid()->toBase58(), |
| 97 | + 'queued_at' => Carbon::parse('2024-11-27 11:35:27'), |
| 98 | + ]); |
| 99 | + |
| 100 | + $this->assertEquals('2024-11-27 11:35:27', $job->lastTimeSomethingHasHappenedWithIt()->format('Y-m-d H:i:s')); |
| 101 | + } |
| 102 | + |
| 103 | + /** @test */ |
| 104 | + public function it_returns_the_started_at_date_as_last_time_something_has_happened_to_it_when_there_is_an_earlier_queued_at_date_but_there_are_no_logs_and_no_other_event_dates_recorded() |
| 105 | + { |
| 106 | + JobExecution::ofJobClass(SampleTrackableJob::class)->delete(); |
| 107 | + |
| 108 | + /** @var JobExecution $job */ |
| 109 | + $job = JobExecution::create([ |
| 110 | + 'job_class' => SampleTrackableJob::class, |
| 111 | + 'tracking_id' => Str::ulid()->toBase58(), |
| 112 | + 'queued_at' => Carbon::parse('2024-11-27 11:35:27'), |
| 113 | + 'started_at' => Carbon::parse('2024-11-27 11:35:35'), |
| 114 | + ]); |
| 115 | + |
| 116 | + $this->assertEquals('2024-11-27 11:35:35', $job->lastTimeSomethingHasHappenedWithIt()->format('Y-m-d H:i:s')); |
| 117 | + } |
| 118 | + |
| 119 | + /** @test */ |
| 120 | + public function it_returns_the_completed_at_date_as_last_time_something_has_happened_to_it_when_there_are_earlier_queued_at_and_started_at_dates_and_there_are_no_logs() |
| 121 | + { |
| 122 | + JobExecution::ofJobClass(SampleTrackableJob::class)->delete(); |
| 123 | + |
| 124 | + /** @var JobExecution $job */ |
| 125 | + $job = JobExecution::create([ |
| 126 | + 'job_class' => SampleTrackableJob::class, |
| 127 | + 'tracking_id' => Str::ulid()->toBase58(), |
| 128 | + 'queued_at' => Carbon::parse('2024-11-27 11:35:27'), |
| 129 | + 'started_at' => Carbon::parse('2024-11-27 11:35:35'), |
| 130 | + 'completed_at' => Carbon::parse('2024-11-27 11:37:02'), |
| 131 | + ]); |
| 132 | + |
| 133 | + $this->assertEquals('2024-11-27 11:37:02', $job->lastTimeSomethingHasHappenedWithIt()->format('Y-m-d H:i:s')); |
| 134 | + } |
| 135 | + |
| 136 | + /** @test */ |
| 137 | + public function it_returns_the_failed_at_date_as_last_time_something_has_happened_to_it_when_there_are_earlier_queued_at_and_started_at_dates_and_there_are_no_logs() |
| 138 | + { |
| 139 | + JobExecution::ofJobClass(SampleTrackableJob::class)->delete(); |
| 140 | + |
| 141 | + /** @var JobExecution $job */ |
| 142 | + $job = JobExecution::create([ |
| 143 | + 'job_class' => SampleTrackableJob::class, |
| 144 | + 'tracking_id' => Str::ulid()->toBase58(), |
| 145 | + 'queued_at' => Carbon::parse('2024-11-27 11:35:27'), |
| 146 | + 'started_at' => Carbon::parse('2024-11-27 11:35:35'), |
| 147 | + 'failed_at' => Carbon::parse('2024-11-27 11:38:18'), |
| 148 | + ]); |
| 149 | + |
| 150 | + $this->assertCount(0, $job->getLogs()); |
| 151 | + $this->assertEquals('2024-11-27 11:38:18', $job->lastTimeSomethingHasHappenedWithIt()->format('Y-m-d H:i:s')); |
| 152 | + } |
| 153 | + |
| 154 | + /** @test */ |
| 155 | + public function it_returns_the_latest_log_date_when_any_of_the_log_entries_are_later_then_the_status_timestamp_fields() |
| 156 | + { |
| 157 | + JobExecution::ofJobClass(SampleTrackableJob::class)->delete(); |
| 158 | + |
| 159 | + Carbon::setTestNow('2024-11-27 14:00:19'); |
| 160 | + /** @var JobExecution $job */ |
| 161 | + $job = JobExecution::create([ |
| 162 | + 'job_class' => SampleTrackableJob::class, |
| 163 | + 'tracking_id' => Str::ulid()->toBase58(), |
| 164 | + 'queued_at' => Carbon::parse('2024-11-27 14:00:01'), |
| 165 | + 'started_at' => Carbon::parse('2024-11-27 14:00:05'), |
| 166 | + 'failed_at' => Carbon::parse('2024-11-27 14:00:18'), |
| 167 | + ]); |
| 168 | + $job->logInfo('Some Happy Message'); |
| 169 | + Carbon::setTestNow('2024-11-27 14:00:20'); |
| 170 | + $job->logError('Another Error Message'); |
| 171 | + |
| 172 | + $this->assertEquals('2024-11-27 14:00:20', $job->lastTimeSomethingHasHappenedWithIt()->format('Y-m-d H:i:s')); |
| 173 | + } |
85 | 174 | }
|
0 commit comments