Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
16.67% covered (danger)
16.67%
1 / 6
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
PublishToLemmyJob
16.67% covered (danger)
16.67%
1 / 6
50.00% covered (danger)
50.00%
1 / 2
8.21
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 handle
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace App\Jobs;
4
5use App\Exceptions\PublishException;
6use App\Models\Article;
7use App\Services\Article\ArticleFetcher;
8use App\Services\Publishing\ArticlePublishingService;
9use Illuminate\Contracts\Queue\ShouldQueue;
10use Illuminate\Foundation\Queue\Queueable;
11
12class PublishToLemmyJob implements ShouldQueue
13{
14    use Queueable;
15
16    public int $tries = 3;
17    public array $backoff = [60, 120, 300];
18
19    public function __construct(
20        private readonly Article $article
21    ) {
22        $this->onQueue('lemmy-posts');
23    }
24
25    public function handle(): void
26    {
27        $extractedData = ArticleFetcher::fetchArticleData($this->article);
28
29        /** @var ArticlePublishingService $publishingService */
30        $publishingService = resolve(ArticlePublishingService::class);
31
32        try {
33            $publishingService->publishToRoutedChannels($this->article, $extractedData);
34        } catch (PublishException $e) {
35            $this->fail($e);
36        }
37    }
38}