From 2a586ecac4dfcb7cdc0e15a7c4b6a25a2c51f66d Mon Sep 17 00:00:00 2001 From: myrmidex Date: Sun, 26 Apr 2026 21:15:07 +0200 Subject: [PATCH] 14 - Add PageCrawlObserver and ProcessCrawlJob skeleton --- app/Jobs/ProcessCrawlJob.php | 21 ++++++++++++ app/Models/PageCrawl.php | 3 ++ app/Observers/PageCrawlObserver.php | 14 ++++++++ tests/Feature/Jobs/ProcessCrawlJobTest.php | 40 ++++++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 app/Jobs/ProcessCrawlJob.php create mode 100644 app/Observers/PageCrawlObserver.php create mode 100644 tests/Feature/Jobs/ProcessCrawlJobTest.php diff --git a/app/Jobs/ProcessCrawlJob.php b/app/Jobs/ProcessCrawlJob.php new file mode 100644 index 0000000..5c55b67 --- /dev/null +++ b/app/Jobs/ProcessCrawlJob.php @@ -0,0 +1,21 @@ + */ diff --git a/app/Observers/PageCrawlObserver.php b/app/Observers/PageCrawlObserver.php new file mode 100644 index 0000000..85a8517 --- /dev/null +++ b/app/Observers/PageCrawlObserver.php @@ -0,0 +1,14 @@ +createQuietly(['url' => 'https://example.com/article']); + PageCrawl::factory()->page($page)->create(); + + Queue::assertPushed(ProcessCrawlJob::class); + } + + public function test_dispatched_job_carries_the_correct_page_crawl(): void + { + Queue::fake(); + + $page = Page::factory()->createQuietly(['url' => 'https://example.com/article']); + $crawl = PageCrawl::factory()->page($page)->create(); + + Queue::assertPushed( + ProcessCrawlJob::class, + fn (ProcessCrawlJob $job) => $job->pageCrawl->id === $crawl->id, + ); + } +}