diff --git a/.gitignore b/.gitignore index 4fa1441..43bde8b 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ yarn-error.log /.nova /.vscode /.zed +/backend/coverage-report* diff --git a/README.md b/README.md index f8e2bc6..577b087 100644 --- a/README.md +++ b/README.md @@ -190,6 +190,12 @@ # Stop environment podman-compose -f docker/dev/podman/docker-compose.yml down ``` +Run tests: +```sh +podman-compose -f docker/dev/podman/docker-compose.yml exec app bash -c "cd backend && XDEBUG_MODE=coverage php artisan test --coverage-html=coverage-report" +``` + + ### Development Features - **Hot reload**: Vite automatically reloads frontend changes diff --git a/backend/coverage-report/Console/Commands/FetchNewArticlesCommand.php.html b/backend/coverage-report/Console/Commands/FetchNewArticlesCommand.php.html index 4b93356..091d19e 100644 --- a/backend/coverage-report/Console/Commands/FetchNewArticlesCommand.php.html +++ b/backend/coverage-report/Console/Commands/FetchNewArticlesCommand.php.html @@ -173,7 +173,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Console/Commands/SyncChannelPostsCommand.php.html b/backend/coverage-report/Console/Commands/SyncChannelPostsCommand.php.html index 3512514..9feb9db 100644 --- a/backend/coverage-report/Console/Commands/SyncChannelPostsCommand.php.html +++ b/backend/coverage-report/Console/Commands/SyncChannelPostsCommand.php.html @@ -195,7 +195,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Console/Commands/dashboard.html b/backend/coverage-report/Console/Commands/dashboard.html index 4078450..9bc83c1 100644 --- a/backend/coverage-report/Console/Commands/dashboard.html +++ b/backend/coverage-report/Console/Commands/dashboard.html @@ -146,7 +146,7 @@

Project Risks

diff --git a/backend/coverage-report/Console/Commands/index.html b/backend/coverage-report/Console/Commands/index.html index 0748a63..f9bb687 100644 --- a/backend/coverage-report/Console/Commands/index.html +++ b/backend/coverage-report/Console/Commands/index.html @@ -140,7 +140,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Console/dashboard.html b/backend/coverage-report/Console/dashboard.html index a0f4538..ed51e55 100644 --- a/backend/coverage-report/Console/dashboard.html +++ b/backend/coverage-report/Console/dashboard.html @@ -145,7 +145,7 @@

Project Risks

diff --git a/backend/coverage-report/Console/index.html b/backend/coverage-report/Console/index.html index 49cb556..6534a16 100644 --- a/backend/coverage-report/Console/index.html +++ b/backend/coverage-report/Console/index.html @@ -111,7 +111,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Contracts/ArticleParserInterface.php.html b/backend/coverage-report/Contracts/ArticleParserInterface.php.html index 911b37d..4e86906 100644 --- a/backend/coverage-report/Contracts/ArticleParserInterface.php.html +++ b/backend/coverage-report/Contracts/ArticleParserInterface.php.html @@ -94,7 +94,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Contracts/HomepageParserInterface.php.html b/backend/coverage-report/Contracts/HomepageParserInterface.php.html index dba0924..4791edb 100644 --- a/backend/coverage-report/Contracts/HomepageParserInterface.php.html +++ b/backend/coverage-report/Contracts/HomepageParserInterface.php.html @@ -99,7 +99,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Contracts/dashboard.html b/backend/coverage-report/Contracts/dashboard.html index 572b62d..5f19bce 100644 --- a/backend/coverage-report/Contracts/dashboard.html +++ b/backend/coverage-report/Contracts/dashboard.html @@ -136,7 +136,7 @@

Project Risks

diff --git a/backend/coverage-report/Contracts/index.html b/backend/coverage-report/Contracts/index.html index 684b474..c305a54 100644 --- a/backend/coverage-report/Contracts/index.html +++ b/backend/coverage-report/Contracts/index.html @@ -94,7 +94,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Enums/PlatformEnum.php.html b/backend/coverage-report/Enums/PlatformEnum.php.html index 249dc92..3ce03f6 100644 --- a/backend/coverage-report/Enums/PlatformEnum.php.html +++ b/backend/coverage-report/Enums/PlatformEnum.php.html @@ -80,7 +80,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Enums/dashboard.html b/backend/coverage-report/Enums/dashboard.html index f322c51..5c4b9f0 100644 --- a/backend/coverage-report/Enums/dashboard.html +++ b/backend/coverage-report/Enums/dashboard.html @@ -136,7 +136,7 @@

Project Risks

diff --git a/backend/coverage-report/Enums/index.html b/backend/coverage-report/Enums/index.html index 15d95ba..1d8bbe1 100644 --- a/backend/coverage-report/Enums/index.html +++ b/backend/coverage-report/Enums/index.html @@ -81,7 +81,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Events/ArticleApproved.php.html b/backend/coverage-report/Events/ArticleApproved.php.html index 3076ef5..c3befdd 100644 --- a/backend/coverage-report/Events/ArticleApproved.php.html +++ b/backend/coverage-report/Events/ArticleApproved.php.html @@ -143,7 +143,7 @@ 13    public function __construct(public Article $article) 14    { 15        // - 16    } + 16    } 17} @@ -155,7 +155,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Events/ArticleReadyToPublish.php.html b/backend/coverage-report/Events/ArticleReadyToPublish.php.html index 2bd466e..73788af 100644 --- a/backend/coverage-report/Events/ArticleReadyToPublish.php.html +++ b/backend/coverage-report/Events/ArticleReadyToPublish.php.html @@ -156,7 +156,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Events/ExceptionLogged.php.html b/backend/coverage-report/Events/ExceptionLogged.php.html index 3bff7d0..a9ffb8b 100644 --- a/backend/coverage-report/Events/ExceptionLogged.php.html +++ b/backend/coverage-report/Events/ExceptionLogged.php.html @@ -155,7 +155,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Events/ExceptionOccurred.php.html b/backend/coverage-report/Events/ExceptionOccurred.php.html index 087a931..a2e6400 100644 --- a/backend/coverage-report/Events/ExceptionOccurred.php.html +++ b/backend/coverage-report/Events/ExceptionOccurred.php.html @@ -160,7 +160,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Events/NewArticleFetched.php.html b/backend/coverage-report/Events/NewArticleFetched.php.html index 211c7d8..e237a9e 100644 --- a/backend/coverage-report/Events/NewArticleFetched.php.html +++ b/backend/coverage-report/Events/NewArticleFetched.php.html @@ -143,7 +143,7 @@ 13 14    public function __construct(public Article $article) 15    { - 16    } + 16    } 17} @@ -155,7 +155,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Events/dashboard.html b/backend/coverage-report/Events/dashboard.html index c08ca49..c214271 100644 --- a/backend/coverage-report/Events/dashboard.html +++ b/backend/coverage-report/Events/dashboard.html @@ -136,7 +136,7 @@

Project Risks

diff --git a/backend/coverage-report/Events/index.html b/backend/coverage-report/Events/index.html index dd9b5dc..9a531ad 100644 --- a/backend/coverage-report/Events/index.html +++ b/backend/coverage-report/Events/index.html @@ -223,7 +223,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Exceptions/ChannelException.php.html b/backend/coverage-report/Exceptions/ChannelException.php.html index d75f5d3..b5aeb0e 100644 --- a/backend/coverage-report/Exceptions/ChannelException.php.html +++ b/backend/coverage-report/Exceptions/ChannelException.php.html @@ -95,7 +95,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Exceptions/PlatformAuthException.php.html b/backend/coverage-report/Exceptions/PlatformAuthException.php.html index 6822019..fce4ca2 100644 --- a/backend/coverage-report/Exceptions/PlatformAuthException.php.html +++ b/backend/coverage-report/Exceptions/PlatformAuthException.php.html @@ -183,7 +183,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Exceptions/PublishException.php.html b/backend/coverage-report/Exceptions/PublishException.php.html index 9f4d388..f383a1c 100644 --- a/backend/coverage-report/Exceptions/PublishException.php.html +++ b/backend/coverage-report/Exceptions/PublishException.php.html @@ -221,7 +221,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Exceptions/RoutingException.php.html b/backend/coverage-report/Exceptions/RoutingException.php.html index 5b11459..f715bf1 100644 --- a/backend/coverage-report/Exceptions/RoutingException.php.html +++ b/backend/coverage-report/Exceptions/RoutingException.php.html @@ -95,7 +95,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Exceptions/RoutingMismatchException.php.html b/backend/coverage-report/Exceptions/RoutingMismatchException.php.html index f97e7f7..2aa0964 100644 --- a/backend/coverage-report/Exceptions/RoutingMismatchException.php.html +++ b/backend/coverage-report/Exceptions/RoutingMismatchException.php.html @@ -160,7 +160,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Exceptions/dashboard.html b/backend/coverage-report/Exceptions/dashboard.html index d94ef2b..02e84c8 100644 --- a/backend/coverage-report/Exceptions/dashboard.html +++ b/backend/coverage-report/Exceptions/dashboard.html @@ -147,7 +147,7 @@

Project Risks

diff --git a/backend/coverage-report/Exceptions/index.html b/backend/coverage-report/Exceptions/index.html index 7455df9..ef7151f 100644 --- a/backend/coverage-report/Exceptions/index.html +++ b/backend/coverage-report/Exceptions/index.html @@ -193,7 +193,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/ArticlesController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/ArticlesController.php.html index 5e1c924..59e21bf 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/ArticlesController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/ArticlesController.php.html @@ -46,23 +46,23 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 87.88% covered (warning)
-
0.00%
-
0 / 33
+
87.88%
+
29 / 33
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
CRAP
@@ -75,24 +75,24 @@ - ArticlesController -
-
- 0.00% covered (danger) + ArticlesController +
+
+ 87.88% covered (warning)
-
0.00%
-
0 / 33
+
87.88%
+
29 / 33
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
- 30 +
33.33%
+
1 / 3
+ 5.04
0.00% covered (danger) @@ -104,15 +104,37 @@ -  index -
-
- 0.00% covered (danger) +  index +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 19
+
100.00%
+
19 / 19
+
+
+ 100.00% covered (success) +
+
+ +
100.00%
+
1 / 1
+ 1 + + + + +  approve +
+
+ 71.43% covered (warning) +
+
+ +
71.43%
+
5 / 7
0.00% covered (danger) @@ -121,20 +143,20 @@
0.00%
0 / 1
- 2 + 2.09 -  approve -
-
- 0.00% covered (danger) +  reject +
+
+ 71.43% covered (warning)
-
0.00%
-
0 / 7
+
71.43%
+
5 / 7
0.00% covered (danger) @@ -143,29 +165,7 @@
0.00%
0 / 1
- 6 - - - - -  reject -
-
- 0.00% covered (danger) -
-
- -
0.00%
-
0 / 7
-
-
- 0.00% covered (danger) -
-
- -
0.00%
-
0 / 1
- 6 + 2.09 @@ -192,27 +192,27 @@ 15     */ 16    public function index(Request $request): JsonResponse 17    { - 18        $perPage = min($request->get('per_page', 15), 100); // Max 100 items per page - 19        $articles = Article::with(['feed', 'articlePublication']) - 20            ->orderBy('created_at', 'desc') - 21            ->paginate($perPage); + 18        $perPage = min($request->get('per_page', 15), 100); // Max 100 items per page + 19        $articles = Article::with(['feed', 'articlePublication']) + 20            ->orderBy('created_at', 'desc') + 21            ->paginate($perPage); 22 - 23        $publishingApprovalsEnabled = Setting::isPublishingApprovalsEnabled(); + 23        $publishingApprovalsEnabled = Setting::isPublishingApprovalsEnabled(); 24 - 25        return $this->sendResponse([ - 26            'articles' => ArticleResource::collection($articles->items()), - 27            'pagination' => [ - 28                'current_page' => $articles->currentPage(), - 29                'last_page' => $articles->lastPage(), - 30                'per_page' => $articles->perPage(), - 31                'total' => $articles->total(), - 32                'from' => $articles->firstItem(), - 33                'to' => $articles->lastItem(), - 34            ], - 35            'settings' => [ - 36                'publishing_approvals_enabled' => $publishingApprovalsEnabled, - 37            ], - 38        ]); + 25        return $this->sendResponse([ + 26            'articles' => ArticleResource::collection($articles->items()), + 27            'pagination' => [ + 28                'current_page' => $articles->currentPage(), + 29                'last_page' => $articles->lastPage(), + 30                'per_page' => $articles->perPage(), + 31                'total' => $articles->total(), + 32                'from' => $articles->firstItem(), + 33                'to' => $articles->lastItem(), + 34            ], + 35            'settings' => [ + 36                'publishing_approvals_enabled' => $publishingApprovalsEnabled, + 37            ], + 38        ]); 39    } 40 41    /** @@ -221,12 +221,12 @@ 44    public function approve(Article $article): JsonResponse 45    { 46        try { - 47            $article->approve('manual'); + 47            $article->approve('manual'); 48             - 49            return $this->sendResponse( - 50                new ArticleResource($article->fresh(['feed', 'articlePublication'])), - 51                'Article approved and queued for publishing.' - 52            ); + 49            return $this->sendResponse( + 50                new ArticleResource($article->fresh(['feed', 'articlePublication'])), + 51                'Article approved and queued for publishing.' + 52            ); 53        } catch (\Exception $e) { 54            return $this->sendError('Failed to approve article: ' . $e->getMessage(), [], 500); 55        } @@ -238,12 +238,12 @@ 61    public function reject(Article $article): JsonResponse 62    { 63        try { - 64            $article->reject('manual'); + 64            $article->reject('manual'); 65             - 66            return $this->sendResponse( - 67                new ArticleResource($article->fresh(['feed', 'articlePublication'])), - 68                'Article rejected.' - 69            ); + 66            return $this->sendResponse( + 67                new ArticleResource($article->fresh(['feed', 'articlePublication'])), + 68                'Article rejected.' + 69            ); 70        } catch (\Exception $e) { 71            return $this->sendError('Failed to reject article: ' . $e->getMessage(), [], 500); 72        } @@ -259,7 +259,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/AuthController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/AuthController.php.html index 8296907..1dcce1c 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/AuthController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/AuthController.php.html @@ -319,7 +319,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/BaseController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/BaseController.php.html index fb4717b..4fb407b 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/BaseController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/BaseController.php.html @@ -46,24 +46,24 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 87.50% covered (warning)
-
0.00%
-
0 / 16
-
-
- 0.00% covered (danger) +
87.50%
+
14 / 16
+
+
+ 60.00% covered (warning)
-
0.00%
-
0 / 5
- CRAP +
60.00%
+
3 / 5
+ CRAP
0.00% covered (danger) @@ -75,24 +75,24 @@ - BaseController -
-
- 0.00% covered (danger) + BaseController +
+
+ 87.50% covered (warning)
-
0.00%
-
0 / 16
-
-
- 0.00% covered (danger) +
87.50%
+
14 / 16
+
+
+ 60.00% covered (warning)
-
0.00%
-
0 / 5
- 42 +
60.00%
+
3 / 5
+ 6.07
0.00% covered (danger) @@ -104,69 +104,69 @@ -  sendResponse -
-
- 0.00% covered (danger) +  sendResponse +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 6
-
-
- 0.00% covered (danger) +
100.00%
+
6 / 6
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  sendError -
-
- 0.00% covered (danger) +  sendError +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 7
-
-
- 0.00% covered (danger) +
100.00%
+
7 / 7
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 6 - +
100.00%
+
1 / 1
+ 2 + -  sendValidationError -
-
- 0.00% covered (danger) +  sendValidationError +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + @@ -233,13 +233,13 @@ 12     */ 13    public function sendResponse(mixed $result, string $message = 'Success', int $code = 200): JsonResponse 14    { - 15        $response = [ - 16            'success' => true, - 17            'data' => $result, - 18            'message' => $message, - 19        ]; + 15        $response = [ + 16            'success' => true, + 17            'data' => $result, + 18            'message' => $message, + 19        ]; 20 - 21        return response()->json($response, $code); + 21        return response()->json($response, $code); 22    } 23 24    /** @@ -247,16 +247,16 @@ 26     */ 27    public function sendError(string $error, array $errorMessages = [], int $code = 400): JsonResponse 28    { - 29        $response = [ - 30            'success' => false, - 31            'message' => $error, - 32        ]; + 29        $response = [ + 30            'success' => false, + 31            'message' => $error, + 32        ]; 33 - 34        if (!empty($errorMessages)) { - 35            $response['errors'] = $errorMessages; + 34        if (!empty($errorMessages)) { + 35            $response['errors'] = $errorMessages; 36        } 37 - 38        return response()->json($response, $code); + 38        return response()->json($response, $code); 39    } 40 41    /** @@ -264,7 +264,7 @@ 43     */ 44    public function sendValidationError(array $errors): JsonResponse 45    { - 46        return $this->sendError('Validation failed', $errors, 422); + 46        return $this->sendError('Validation failed', $errors, 422); 47    } 48 49    /** @@ -293,7 +293,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/DashboardController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/DashboardController.php.html index 094a854..3fb3e04 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/DashboardController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/DashboardController.php.html @@ -46,23 +46,23 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 84.62% covered (warning)
-
0.00%
-
0 / 13
+
84.62%
+
11 / 13
-
- 0.00% covered (danger) +
+ 50.00% covered (danger)
-
0.00%
-
0 / 2
+
50.00%
+
1 / 2
CRAP
@@ -75,24 +75,24 @@ - DashboardController -
-
- 0.00% covered (danger) + DashboardController +
+
+ 84.62% covered (warning)
-
0.00%
-
0 / 13
+
84.62%
+
11 / 13
-
- 0.00% covered (danger) +
+ 50.00% covered (danger)
-
0.00%
-
0 / 2
- 12 +
50.00%
+
1 / 2
+ 3.03
0.00% covered (danger) @@ -104,37 +104,37 @@ -  __construct -
-
- 0.00% covered (danger) +  __construct +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  stats -
-
- 0.00% covered (danger) +  stats +
+
+ 83.33% covered (warning)
-
0.00%
-
0 / 12
+
83.33%
+
10 / 12
0.00% covered (danger) @@ -143,7 +143,7 @@
0.00%
0 / 1
- 6 + 2.02 @@ -169,31 +169,31 @@ 14{ 15    public function __construct( 16        private DashboardStatsService $dashboardStatsService - 17    ) {} + 17    ) {} 18 19    /** 20     * Get dashboard statistics 21     */ 22    public function stats(Request $request): JsonResponse 23    { - 24        $period = $request->get('period', 'today'); + 24        $period = $request->get('period', 'today'); 25         26        try { 27            // Get article stats from service - 28            $articleStats = $this->dashboardStatsService->getStats($period); + 28            $articleStats = $this->dashboardStatsService->getStats($period); 29             30            // Get system stats - 31            $systemStats = $this->dashboardStatsService->getSystemStats(); + 31            $systemStats = $this->dashboardStatsService->getSystemStats(); 32             33            // Get available periods - 34            $availablePeriods = $this->dashboardStatsService->getAvailablePeriods(); + 34            $availablePeriods = $this->dashboardStatsService->getAvailablePeriods(); 35             - 36            return $this->sendResponse([ - 37                'article_stats' => $articleStats, - 38                'system_stats' => $systemStats, - 39                'available_periods' => $availablePeriods, - 40                'current_period' => $period, - 41            ]); + 36            return $this->sendResponse([ + 37                'article_stats' => $articleStats, + 38                'system_stats' => $systemStats, + 39                'available_periods' => $availablePeriods, + 40                'current_period' => $period, + 41            ]); 42        } catch (\Exception $e) { 43            return $this->sendError('Failed to fetch dashboard stats: ' . $e->getMessage(), [], 500); 44        } @@ -209,7 +209,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/FeedsController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/FeedsController.php.html index 6660d0e..591c3ba 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/FeedsController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/FeedsController.php.html @@ -46,23 +46,23 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 76.00% covered (warning)
-
0.00%
-
0 / 50
+
76.00%
+
38 / 50
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 6
+
33.33%
+
2 / 6
CRAP
@@ -75,24 +75,24 @@ - FeedsController -
-
- 0.00% covered (danger) + FeedsController +
+
+ 76.00% covered (warning)
-
0.00%
-
0 / 50
+
76.00%
+
38 / 50
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 6
- 182 +
33.33%
+
2 / 6
+ 15.34
0.00% covered (danger) @@ -104,15 +104,37 @@ -  index -
-
- 0.00% covered (danger) +  index +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 7
+
100.00%
+
7 / 7
+
+
+ 100.00% covered (success) +
+
+ +
100.00%
+
1 / 1
+ 1 + + + + +  store +
+
+ 66.67% covered (warning) +
+
+ +
66.67%
+
8 / 12
0.00% covered (danger) @@ -121,20 +143,42 @@
0.00%
0 / 1
- 2 + 3.33 -  store -
-
- 0.00% covered (danger) +  show +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 12
+
100.00%
+
4 / 4
+
+
+ 100.00% covered (success) +
+
+ +
100.00%
+
1 / 1
+ 1 + + + + +  update +
+
+ 63.64% covered (warning) +
+
+ +
63.64%
+
7 / 11
0.00% covered (danger) @@ -143,20 +187,20 @@
0.00%
0 / 1
- 12 + 3.43 -  show -
-
- 0.00% covered (danger) +  destroy +
+
+ 71.43% covered (warning)
-
0.00%
-
0 / 4
+
71.43%
+
5 / 7
0.00% covered (danger) @@ -165,20 +209,20 @@
0.00%
0 / 1
- 2 + 2.09 -  update -
-
- 0.00% covered (danger) +  toggle +
+
+ 77.78% covered (warning)
-
0.00%
-
0 / 11
+
77.78%
+
7 / 9
0.00% covered (danger) @@ -187,51 +231,7 @@
0.00%
0 / 1
- 12 - - - - -  destroy -
-
- 0.00% covered (danger) -
-
- -
0.00%
-
0 / 7
-
-
- 0.00% covered (danger) -
-
- -
0.00%
-
0 / 1
- 6 - - - - -  toggle -
-
- 0.00% covered (danger) -
-
- -
0.00%
-
0 / 9
-
-
- 0.00% covered (danger) -
-
- -
0.00%
-
0 / 1
- 12 + 3.10 @@ -260,14 +260,14 @@ 17     */ 18    public function index(Request $request): JsonResponse 19    { - 20        $feeds = Feed::orderBy('is_active', 'desc') - 21            ->orderBy('name') - 22            ->get(); + 20        $feeds = Feed::orderBy('is_active', 'desc') + 21            ->orderBy('name') + 22            ->get(); 23 - 24        return $this->sendResponse( - 25            FeedResource::collection($feeds), - 26            'Feeds retrieved successfully.' - 27        ); + 24        return $this->sendResponse( + 25            FeedResource::collection($feeds), + 26            'Feeds retrieved successfully.' + 27        ); 28    } 29 30    /** @@ -276,16 +276,16 @@ 33    public function store(StoreFeedRequest $request): JsonResponse 34    { 35        try { - 36            $validated = $request->validated(); - 37            $validated['is_active'] = $validated['is_active'] ?? true; + 36            $validated = $request->validated(); + 37            $validated['is_active'] = $validated['is_active'] ?? true; 38 - 39            $feed = Feed::create($validated); + 39            $feed = Feed::create($validated); 40 - 41            return $this->sendResponse( - 42                new FeedResource($feed), - 43                'Feed created successfully!', - 44                201 - 45            ); + 41            return $this->sendResponse( + 42                new FeedResource($feed), + 43                'Feed created successfully!', + 44                201 + 45            ); 46        } catch (ValidationException $e) { 47            return $this->sendValidationError($e->errors()); 48        } catch (\Exception $e) { @@ -298,10 +298,10 @@ 55     */ 56    public function show(Feed $feed): JsonResponse 57    { - 58        return $this->sendResponse( - 59            new FeedResource($feed), - 60            'Feed retrieved successfully.' - 61        ); + 58        return $this->sendResponse( + 59            new FeedResource($feed), + 60            'Feed retrieved successfully.' + 61        ); 62    } 63 64    /** @@ -310,15 +310,15 @@ 67    public function update(UpdateFeedRequest $request, Feed $feed): JsonResponse 68    { 69        try { - 70            $validated = $request->validated(); - 71            $validated['is_active'] = $validated['is_active'] ?? $feed->is_active; + 70            $validated = $request->validated(); + 71            $validated['is_active'] = $validated['is_active'] ?? $feed->is_active; 72 - 73            $feed->update($validated); + 73            $feed->update($validated); 74 - 75            return $this->sendResponse( - 76                new FeedResource($feed->fresh()), - 77                'Feed updated successfully!' - 78            ); + 75            return $this->sendResponse( + 76                new FeedResource($feed->fresh()), + 77                'Feed updated successfully!' + 78            ); 79        } catch (ValidationException $e) { 80            return $this->sendValidationError($e->errors()); 81        } catch (\Exception $e) { @@ -332,12 +332,12 @@ 89    public function destroy(Feed $feed): JsonResponse 90    { 91        try { - 92            $feed->delete(); + 92            $feed->delete(); 93 - 94            return $this->sendResponse( - 95                null, - 96                'Feed deleted successfully!' - 97            ); + 94            return $this->sendResponse( + 95                null, + 96                'Feed deleted successfully!' + 97            ); 98        } catch (\Exception $e) { 99            return $this->sendError('Failed to delete feed: ' . $e->getMessage(), [], 500); 100        } @@ -349,15 +349,15 @@ 106    public function toggle(Feed $feed): JsonResponse 107    { 108        try { - 109            $newStatus = !$feed->is_active; - 110            $feed->update(['is_active' => $newStatus]); + 109            $newStatus = !$feed->is_active; + 110            $feed->update(['is_active' => $newStatus]); 111 - 112            $status = $newStatus ? 'activated' : 'deactivated'; + 112            $status = $newStatus ? 'activated' : 'deactivated'; 113 - 114            return $this->sendResponse( - 115                new FeedResource($feed->fresh()), - 116                "Feed {$status} successfully!" - 117            ); + 114            return $this->sendResponse( + 115                new FeedResource($feed->fresh()), + 116                "Feed {$status} successfully!" + 117            ); 118        } catch (\Exception $e) { 119            return $this->sendError('Failed to toggle feed status: ' . $e->getMessage(), [], 500); 120        } @@ -373,7 +373,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/LogsController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/LogsController.php.html index 92e0f15..c0ed600 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/LogsController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/LogsController.php.html @@ -184,7 +184,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/PlatformAccountsController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/PlatformAccountsController.php.html index 1aca0e9..19b6a33 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/PlatformAccountsController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/PlatformAccountsController.php.html @@ -403,7 +403,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/PlatformChannelsController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/PlatformChannelsController.php.html index 1003954..84615ac 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/PlatformChannelsController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/PlatformChannelsController.php.html @@ -384,7 +384,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/RoutingController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/RoutingController.php.html index 2609904..b0079de 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/RoutingController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/RoutingController.php.html @@ -416,7 +416,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/SettingsController.php.html b/backend/coverage-report/Http/Controllers/Api/V1/SettingsController.php.html index a86609e..656cbe7 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/SettingsController.php.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/SettingsController.php.html @@ -46,15 +46,15 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 85.19% covered (warning)
-
0.00%
-
0 / 27
+
85.19%
+
23 / 27
0.00% covered (danger) @@ -75,15 +75,15 @@ - SettingsController -
-
- 0.00% covered (danger) + SettingsController +
+
+ 85.19% covered (warning)
-
0.00%
-
0 / 27
+
85.19%
+
23 / 27
0.00% covered (danger) @@ -92,7 +92,7 @@
0.00%
0 / 2
- 56 + 7.16
0.00% covered (danger) @@ -104,15 +104,15 @@ -  index -
-
- 0.00% covered (danger) +  index +
+
+ 71.43% covered (warning)
-
0.00%
-
0 / 7
+
71.43%
+
5 / 7
0.00% covered (danger) @@ -121,20 +121,20 @@
0.00%
0 / 1
- 6 + 2.09 -  update -
-
- 0.00% covered (danger) +  update +
+
+ 90.00% covered (success)
-
0.00%
-
0 / 20
+
90.00%
+
18 / 20
0.00% covered (danger) @@ -143,7 +143,7 @@
0.00%
0 / 1
- 30 + 5.03 @@ -170,12 +170,12 @@ 15    public function index(): JsonResponse 16    { 17        try { - 18            $settings = [ - 19                'article_processing_enabled' => Setting::isArticleProcessingEnabled(), - 20                'publishing_approvals_enabled' => Setting::isPublishingApprovalsEnabled(), - 21            ]; + 18            $settings = [ + 19                'article_processing_enabled' => Setting::isArticleProcessingEnabled(), + 20                'publishing_approvals_enabled' => Setting::isPublishingApprovalsEnabled(), + 21            ]; 22 - 23            return $this->sendResponse($settings, 'Settings retrieved successfully.'); + 23            return $this->sendResponse($settings, 'Settings retrieved successfully.'); 24        } catch (\Exception $e) { 25            return $this->sendError('Failed to retrieve settings: ' . $e->getMessage(), [], 500); 26        } @@ -187,30 +187,30 @@ 32    public function update(Request $request): JsonResponse 33    { 34        try { - 35            $validated = $request->validate([ - 36                'article_processing_enabled' => 'boolean', - 37                'enable_publishing_approvals' => 'boolean', - 38            ]); + 35            $validated = $request->validate([ + 36                'article_processing_enabled' => 'boolean', + 37                'enable_publishing_approvals' => 'boolean', + 38            ]); 39 - 40            if (isset($validated['article_processing_enabled'])) { - 41                Setting::setArticleProcessingEnabled($validated['article_processing_enabled']); + 40            if (isset($validated['article_processing_enabled'])) { + 41                Setting::setArticleProcessingEnabled($validated['article_processing_enabled']); 42            } 43 - 44            if (isset($validated['enable_publishing_approvals'])) { - 45                Setting::setPublishingApprovalsEnabled($validated['enable_publishing_approvals']); + 44            if (isset($validated['enable_publishing_approvals'])) { + 45                Setting::setPublishingApprovalsEnabled($validated['enable_publishing_approvals']); 46            } 47 - 48            $updatedSettings = [ - 49                'article_processing_enabled' => Setting::isArticleProcessingEnabled(), - 50                'publishing_approvals_enabled' => Setting::isPublishingApprovalsEnabled(), - 51            ]; + 48            $updatedSettings = [ + 49                'article_processing_enabled' => Setting::isArticleProcessingEnabled(), + 50                'publishing_approvals_enabled' => Setting::isPublishingApprovalsEnabled(), + 51            ]; 52 - 53            return $this->sendResponse( - 54                $updatedSettings, - 55                'Settings updated successfully.' - 56            ); - 57        } catch (ValidationException $e) { - 58            return $this->sendValidationError($e->errors()); + 53            return $this->sendResponse( + 54                $updatedSettings, + 55                'Settings updated successfully.' + 56            ); + 57        } catch (ValidationException $e) { + 58            return $this->sendValidationError($e->errors()); 59        } catch (\Exception $e) { 60            return $this->sendError('Failed to update settings: ' . $e->getMessage(), [], 500); 61        } @@ -226,7 +226,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/V1/dashboard.html b/backend/coverage-report/Http/Controllers/Api/V1/dashboard.html index 353da95..bf963ed 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/dashboard.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/dashboard.html @@ -61,16 +61,16 @@

Insufficient Coverage

-
App\Http\Controllers\Api\V1\ArticlesController0% App\Http\Controllers\Api\V1\AuthController0% - App\Http\Controllers\Api\V1\BaseController0% - App\Http\Controllers\Api\V1\DashboardController0% - App\Http\Controllers\Api\V1\FeedsController0% App\Http\Controllers\Api\V1\LogsController0% App\Http\Controllers\Api\V1\PlatformAccountsController0% App\Http\Controllers\Api\V1\PlatformChannelsController0% App\Http\Controllers\Api\V1\RoutingController0% - App\Http\Controllers\Api\V1\SettingsController0% + App\Http\Controllers\Api\V1\FeedsController76% + App\Http\Controllers\Api\V1\DashboardController84% + App\Http\Controllers\Api\V1\SettingsController85% + App\Http\Controllers\Api\V1\BaseController87% + App\Http\Controllers\Api\V1\ArticlesController87% @@ -89,14 +89,14 @@

Project Risks

App\Http\Controllers\Api\V1\RoutingController306 App\Http\Controllers\Api\V1\PlatformAccountsController210 - App\Http\Controllers\Api\V1\FeedsController182 App\Http\Controllers\Api\V1\PlatformChannelsController182 App\Http\Controllers\Api\V1\AuthController132 - App\Http\Controllers\Api\V1\SettingsController56 - App\Http\Controllers\Api\V1\BaseController42 - App\Http\Controllers\Api\V1\ArticlesController30 - App\Http\Controllers\Api\V1\DashboardController12 + App\Http\Controllers\Api\V1\FeedsController15 App\Http\Controllers\Api\V1\LogsController12 + App\Http\Controllers\Api\V1\SettingsController7 + App\Http\Controllers\Api\V1\BaseController6 + App\Http\Controllers\Api\V1\ArticlesController5 + App\Http\Controllers\Api\V1\DashboardController3 @@ -134,26 +134,12 @@

Insufficient Coverage

- index0% - approve0% - reject0% login0% register0% logout0% me0% - sendResponse0% - sendError0% - sendValidationError0% sendNotFound0% sendUnauthorized0% - __construct0% - stats0% - index0% - store0% - show0% - update0% - destroy0% - toggle0% index0% index0% store0% @@ -173,8 +159,14 @@

Insufficient Coverage

update0% destroy0% toggle0% - index0% - update0% + update63% + store66% + approve71% + reject71% + destroy71% + index71% + toggle77% + stats83% @@ -192,32 +184,30 @@

Project Risks

login30 - update30 store20 update20 update20 toggle20 register12 - store12 - update12 - toggle12 index12 store12 update12 toggle12 store12 destroy12 - approve6 - reject6 logout6 - sendError6 - stats6 - destroy6 destroy6 setActive6 destroy6 show6 - index6 + update3 + store3 + toggle3 + approve2 + reject2 + destroy2 + index2 + stats2 @@ -227,7 +217,7 @@

Project Risks

@@ -246,7 +236,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([10,0,0,0,0,0,0,0,0,0,0,0], "Class Coverage")) + .datum(getCoverageDistributionData([5,0,0,0,0,0,0,0,1,4,0,0], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -264,7 +254,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([41,0,0,0,0,0,0,0,0,0,0,0], "Method Coverage")) + .datum(getCoverageDistributionData([25,0,0,0,0,0,0,2,5,1,1,7], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -314,7 +304,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[0,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[0,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[0,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[87.87878787878788,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[87.5,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[84.61538461538461,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[76,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[85.18518518518519,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -338,7 +328,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[0,1,"
App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[100,1,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[100,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[83.33333333333334,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[66.66666666666666,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[63.63636363636363,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[77.77777777777779,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[90,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Http/Controllers/Api/V1/index.html b/backend/coverage-report/Http/Controllers/Api/V1/index.html index f9b24ce..75a828b 100644 --- a/backend/coverage-report/Http/Controllers/Api/V1/index.html +++ b/backend/coverage-report/Http/Controllers/Api/V1/index.html @@ -48,21 +48,21 @@ Total
-
- 0.00% covered (danger) +
+ 26.81% covered (danger)
-
0.00%
-
0 / 429
+
26.81%
+
115 / 429
-
- 0.00% covered (danger) +
+ 17.07% covered (danger)
-
0.00%
-
0 / 41
+
17.07%
+
7 / 41
0.00% covered (danger) @@ -74,23 +74,23 @@ - ArticlesController.php -
-
- 0.00% covered (danger) + ArticlesController.php +
+
+ 87.88% covered (warning)
-
0.00%
-
0 / 33
+
87.88%
+
29 / 33
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
0.00% covered (danger) @@ -130,23 +130,23 @@ - BaseController.php -
-
- 0.00% covered (danger) + BaseController.php +
+
+ 87.50% covered (warning)
-
0.00%
-
0 / 16
-
-
- 0.00% covered (danger) +
87.50%
+
14 / 16
+
+
+ 60.00% covered (warning)
-
0.00%
-
0 / 5
+
60.00%
+
3 / 5
0.00% covered (danger) @@ -158,23 +158,23 @@ - DashboardController.php -
-
- 0.00% covered (danger) + DashboardController.php +
+
+ 84.62% covered (warning)
-
0.00%
-
0 / 13
+
84.62%
+
11 / 13
-
- 0.00% covered (danger) +
+ 50.00% covered (danger)
-
0.00%
-
0 / 2
+
50.00%
+
1 / 2
0.00% covered (danger) @@ -186,23 +186,23 @@ - FeedsController.php -
-
- 0.00% covered (danger) + FeedsController.php +
+
+ 76.00% covered (warning)
-
0.00%
-
0 / 50
+
76.00%
+
38 / 50
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 6
+
33.33%
+
2 / 6
0.00% covered (danger) @@ -326,15 +326,15 @@ - SettingsController.php -
-
- 0.00% covered (danger) + SettingsController.php +
+
+ 85.19% covered (warning)
-
0.00%
-
0 / 27
+
85.19%
+
23 / 27
0.00% covered (danger) @@ -366,7 +366,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Api/dashboard.html b/backend/coverage-report/Http/Controllers/Api/dashboard.html index 8b47705..c41629e 100644 --- a/backend/coverage-report/Http/Controllers/Api/dashboard.html +++ b/backend/coverage-report/Http/Controllers/Api/dashboard.html @@ -60,16 +60,16 @@

Insufficient Coverage

- App\Http\Controllers\Api\V1\ArticlesController0% App\Http\Controllers\Api\V1\AuthController0% - App\Http\Controllers\Api\V1\BaseController0% - App\Http\Controllers\Api\V1\DashboardController0% - App\Http\Controllers\Api\V1\FeedsController0% App\Http\Controllers\Api\V1\LogsController0% App\Http\Controllers\Api\V1\PlatformAccountsController0% App\Http\Controllers\Api\V1\PlatformChannelsController0% App\Http\Controllers\Api\V1\RoutingController0% - App\Http\Controllers\Api\V1\SettingsController0% + App\Http\Controllers\Api\V1\FeedsController76% + App\Http\Controllers\Api\V1\DashboardController84% + App\Http\Controllers\Api\V1\SettingsController85% + App\Http\Controllers\Api\V1\BaseController87% + App\Http\Controllers\Api\V1\ArticlesController87% @@ -88,14 +88,14 @@

Project Risks

App\Http\Controllers\Api\V1\RoutingController306 App\Http\Controllers\Api\V1\PlatformAccountsController210 - App\Http\Controllers\Api\V1\FeedsController182 App\Http\Controllers\Api\V1\PlatformChannelsController182 App\Http\Controllers\Api\V1\AuthController132 - App\Http\Controllers\Api\V1\SettingsController56 - App\Http\Controllers\Api\V1\BaseController42 - App\Http\Controllers\Api\V1\ArticlesController30 - App\Http\Controllers\Api\V1\DashboardController12 + App\Http\Controllers\Api\V1\FeedsController15 App\Http\Controllers\Api\V1\LogsController12 + App\Http\Controllers\Api\V1\SettingsController7 + App\Http\Controllers\Api\V1\BaseController6 + App\Http\Controllers\Api\V1\ArticlesController5 + App\Http\Controllers\Api\V1\DashboardController3 @@ -133,26 +133,12 @@

Insufficient Coverage

- index0% - approve0% - reject0% login0% register0% logout0% me0% - sendResponse0% - sendError0% - sendValidationError0% sendNotFound0% sendUnauthorized0% - __construct0% - stats0% - index0% - store0% - show0% - update0% - destroy0% - toggle0% index0% index0% store0% @@ -172,8 +158,14 @@

Insufficient Coverage

update0% destroy0% toggle0% - index0% - update0% + update63% + store66% + approve71% + reject71% + destroy71% + index71% + toggle77% + stats83% @@ -191,32 +183,30 @@

Project Risks

login30 - update30 store20 update20 update20 toggle20 register12 - store12 - update12 - toggle12 index12 store12 update12 toggle12 store12 destroy12 - approve6 - reject6 logout6 - sendError6 - stats6 - destroy6 destroy6 setActive6 destroy6 show6 - index6 + update3 + store3 + toggle3 + approve2 + reject2 + destroy2 + index2 + stats2 @@ -226,7 +216,7 @@

Project Risks

@@ -245,7 +235,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([10,0,0,0,0,0,0,0,0,0,0,0], "Class Coverage")) + .datum(getCoverageDistributionData([5,0,0,0,0,0,0,0,1,4,0,0], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -263,7 +253,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([41,0,0,0,0,0,0,0,0,0,0,0], "Method Coverage")) + .datum(getCoverageDistributionData([25,0,0,0,0,0,0,2,5,1,1,7], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -313,7 +303,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[0,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[0,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[0,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[87.87878787878788,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[87.5,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[84.61538461538461,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[76,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[85.18518518518519,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -337,7 +327,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[0,1,"
App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[100,1,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[100,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[83.33333333333334,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[66.66666666666666,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[63.63636363636363,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[77.77777777777779,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[90,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Http/Controllers/Api/index.html b/backend/coverage-report/Http/Controllers/Api/index.html index 2224aeb..d5a9acb 100644 --- a/backend/coverage-report/Http/Controllers/Api/index.html +++ b/backend/coverage-report/Http/Controllers/Api/index.html @@ -47,21 +47,21 @@ Total
-
- 0.00% covered (danger) +
+ 26.81% covered (danger)
-
0.00%
-
0 / 429
+
26.81%
+
115 / 429
-
- 0.00% covered (danger) +
+ 17.07% covered (danger)
-
0.00%
-
0 / 41
+
17.07%
+
7 / 41
0.00% covered (danger) @@ -75,21 +75,21 @@ V1
-
- 0.00% covered (danger) +
+ 26.81% covered (danger)
-
0.00%
-
0 / 429
+
26.81%
+
115 / 429
-
- 0.00% covered (danger) +
+ 17.07% covered (danger)
-
0.00%
-
0 / 41
+
17.07%
+
7 / 41
0.00% covered (danger) @@ -113,7 +113,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/ArticlesController.php.html b/backend/coverage-report/Http/Controllers/ArticlesController.php.html index 0303ecf..19b58e3 100644 --- a/backend/coverage-report/Http/Controllers/ArticlesController.php.html +++ b/backend/coverage-report/Http/Controllers/ArticlesController.php.html @@ -220,7 +220,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/Controller.php.html b/backend/coverage-report/Http/Controllers/Controller.php.html index 36a734c..d55ace2 100644 --- a/backend/coverage-report/Http/Controllers/Controller.php.html +++ b/backend/coverage-report/Http/Controllers/Controller.php.html @@ -95,7 +95,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/FeedsController.php.html b/backend/coverage-report/Http/Controllers/FeedsController.php.html index 4b498e1..813f2ad 100644 --- a/backend/coverage-report/Http/Controllers/FeedsController.php.html +++ b/backend/coverage-report/Http/Controllers/FeedsController.php.html @@ -374,7 +374,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/LogsController.php.html b/backend/coverage-report/Http/Controllers/LogsController.php.html index d8989bc..55c0e42 100644 --- a/backend/coverage-report/Http/Controllers/LogsController.php.html +++ b/backend/coverage-report/Http/Controllers/LogsController.php.html @@ -156,7 +156,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/OnboardingController.php.html b/backend/coverage-report/Http/Controllers/OnboardingController.php.html index 4046f6f..28fc728 100644 --- a/backend/coverage-report/Http/Controllers/OnboardingController.php.html +++ b/backend/coverage-report/Http/Controllers/OnboardingController.php.html @@ -429,7 +429,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/PlatformAccountsController.php.html b/backend/coverage-report/Http/Controllers/PlatformAccountsController.php.html index a68ace6..75efd56 100644 --- a/backend/coverage-report/Http/Controllers/PlatformAccountsController.php.html +++ b/backend/coverage-report/Http/Controllers/PlatformAccountsController.php.html @@ -377,7 +377,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/PlatformChannelsController.php.html b/backend/coverage-report/Http/Controllers/PlatformChannelsController.php.html index ebe2821..897a3d9 100644 --- a/backend/coverage-report/Http/Controllers/PlatformChannelsController.php.html +++ b/backend/coverage-report/Http/Controllers/PlatformChannelsController.php.html @@ -409,7 +409,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/RoutingController.php.html b/backend/coverage-report/Http/Controllers/RoutingController.php.html index 8db6dce..b611b86 100644 --- a/backend/coverage-report/Http/Controllers/RoutingController.php.html +++ b/backend/coverage-report/Http/Controllers/RoutingController.php.html @@ -466,7 +466,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/SettingsController.php.html b/backend/coverage-report/Http/Controllers/SettingsController.php.html index bc15cc7..69f4f99 100644 --- a/backend/coverage-report/Http/Controllers/SettingsController.php.html +++ b/backend/coverage-report/Http/Controllers/SettingsController.php.html @@ -200,7 +200,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Controllers/dashboard.html b/backend/coverage-report/Http/Controllers/dashboard.html index 13f36f2..571867a 100644 --- a/backend/coverage-report/Http/Controllers/dashboard.html +++ b/backend/coverage-report/Http/Controllers/dashboard.html @@ -59,16 +59,11 @@

Insufficient Coverage

-
App\Http\Controllers\Api\V1\ArticlesController0% App\Http\Controllers\Api\V1\AuthController0% - App\Http\Controllers\Api\V1\BaseController0% - App\Http\Controllers\Api\V1\DashboardController0% - App\Http\Controllers\Api\V1\FeedsController0% App\Http\Controllers\Api\V1\LogsController0% App\Http\Controllers\Api\V1\PlatformAccountsController0% App\Http\Controllers\Api\V1\PlatformChannelsController0% App\Http\Controllers\Api\V1\RoutingController0% - App\Http\Controllers\Api\V1\SettingsController0% App\Http\Controllers\ArticlesController0% App\Http\Controllers\FeedsController0% App\Http\Controllers\LogsController0% @@ -77,6 +72,11 @@

Insufficient Coverage

App\Http\Controllers\PlatformChannelsController0% App\Http\Controllers\RoutingController0% App\Http\Controllers\SettingsController0% + App\Http\Controllers\Api\V1\FeedsController76% + App\Http\Controllers\Api\V1\DashboardController84% + App\Http\Controllers\Api\V1\SettingsController85% + App\Http\Controllers\Api\V1\BaseController87% + App\Http\Controllers\Api\V1\ArticlesController87% @@ -97,18 +97,18 @@

Project Risks

App\Http\Controllers\Api\V1\RoutingController306 App\Http\Controllers\RoutingController240 App\Http\Controllers\Api\V1\PlatformAccountsController210 - App\Http\Controllers\Api\V1\FeedsController182 App\Http\Controllers\Api\V1\PlatformChannelsController182 App\Http\Controllers\Api\V1\AuthController132 App\Http\Controllers\PlatformAccountsController110 App\Http\Controllers\PlatformChannelsController110 App\Http\Controllers\FeedsController90 - App\Http\Controllers\Api\V1\SettingsController56 - App\Http\Controllers\Api\V1\BaseController42 - App\Http\Controllers\Api\V1\ArticlesController30 - App\Http\Controllers\Api\V1\DashboardController12 + App\Http\Controllers\Api\V1\FeedsController15 App\Http\Controllers\Api\V1\LogsController12 App\Http\Controllers\SettingsController12 + App\Http\Controllers\Api\V1\SettingsController7 + App\Http\Controllers\Api\V1\BaseController6 + App\Http\Controllers\Api\V1\ArticlesController5 + App\Http\Controllers\Api\V1\DashboardController3 @@ -146,26 +146,12 @@

Insufficient Coverage

- index0% - approve0% - reject0% login0% register0% logout0% me0% - sendResponse0% - sendError0% - sendValidationError0% sendNotFound0% sendUnauthorized0% - __construct0% - stats0% - index0% - store0% - show0% - update0% - destroy0% - toggle0% index0% index0% store0% @@ -185,8 +171,6 @@

Insufficient Coverage

update0% destroy0% toggle0% - index0% - update0% __invoke0% approve0% reject0% @@ -233,6 +217,14 @@

Insufficient Coverage

parseJsonFilters0% index0% update0% + update63% + store66% + approve71% + reject71% + destroy71% + index71% + toggle77% + stats83% @@ -250,7 +242,6 @@

Project Risks

login30 - update30 complete30 store20 update20 @@ -258,9 +249,6 @@

Project Risks

toggle20 channel20 register12 - store12 - update12 - toggle12 index12 store12 update12 @@ -273,17 +261,11 @@

Project Risks

store12 toggle12 parseJsonFilters12 - approve6 - reject6 logout6 - sendError6 - stats6 - destroy6 destroy6 setActive6 destroy6 show6 - index6 toggle6 index6 platform6 @@ -292,6 +274,14 @@

Project Risks

toggle6 edit6 update6 + update3 + store3 + toggle3 + approve2 + reject2 + destroy2 + index2 + stats2 @@ -301,7 +291,7 @@

Project Risks

@@ -320,7 +310,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([18,0,0,0,0,0,0,0,0,0,0,1], "Class Coverage")) + .datum(getCoverageDistributionData([13,0,0,0,0,0,0,0,1,4,0,1], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -338,7 +328,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([87,0,0,0,0,0,0,0,0,0,0,0], "Method Coverage")) + .datum(getCoverageDistributionData([71,0,0,0,0,0,0,2,5,1,1,7], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -388,7 +378,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[0,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[0,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[0,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"],[0,3,"App\\Http\\Controllers\\ArticlesController<\/a>"],[100,0,"App\\Http\\Controllers\\Controller<\/a>"],[0,9,"App\\Http\\Controllers\\FeedsController<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController<\/a>"],[0,22,"App\\Http\\Controllers\\OnboardingController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformAccountsController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformChannelsController<\/a>"],[0,15,"App\\Http\\Controllers\\RoutingController<\/a>"],[0,3,"App\\Http\\Controllers\\SettingsController<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[87.87878787878788,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[87.5,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[84.61538461538461,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[76,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[85.18518518518519,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"],[0,3,"App\\Http\\Controllers\\ArticlesController<\/a>"],[100,0,"App\\Http\\Controllers\\Controller<\/a>"],[0,9,"App\\Http\\Controllers\\FeedsController<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController<\/a>"],[0,22,"App\\Http\\Controllers\\OnboardingController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformAccountsController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformChannelsController<\/a>"],[0,15,"App\\Http\\Controllers\\RoutingController<\/a>"],[0,3,"App\\Http\\Controllers\\SettingsController<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -412,7 +402,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[0,1,"
App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::__invoke<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::approve<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::reject<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::create<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\FeedsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController::__invoke<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::index<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::platform<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::feed<\/a>"],[0,4,"App\\Http\\Controllers\\OnboardingController::channel<\/a>"],[0,5,"App\\Http\\Controllers\\OnboardingController::complete<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::needsOnboarding<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasPlatformAccount<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasFeed<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasChannel<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::create<\/a>"],[0,3,"App\\Http\\Controllers\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::edit<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformAccountsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::destroy<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::create<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::index<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::create<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\RoutingController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::update<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::parseJsonFilters<\/a>"],[0,1,"App\\Http\\Controllers\\SettingsController::index<\/a>"],[0,2,"App\\Http\\Controllers\\SettingsController::update<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[100,1,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[100,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[83.33333333333334,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[66.66666666666666,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[63.63636363636363,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[77.77777777777779,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[90,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::__invoke<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::approve<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::reject<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::create<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\FeedsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController::__invoke<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::index<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::platform<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::feed<\/a>"],[0,4,"App\\Http\\Controllers\\OnboardingController::channel<\/a>"],[0,5,"App\\Http\\Controllers\\OnboardingController::complete<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::needsOnboarding<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasPlatformAccount<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasFeed<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasChannel<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::create<\/a>"],[0,3,"App\\Http\\Controllers\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::edit<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformAccountsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::destroy<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::create<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::index<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::create<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\RoutingController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::update<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::parseJsonFilters<\/a>"],[0,1,"App\\Http\\Controllers\\SettingsController::index<\/a>"],[0,2,"App\\Http\\Controllers\\SettingsController::update<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Http/Controllers/index.html b/backend/coverage-report/Http/Controllers/index.html index 644c6be..705a2f2 100644 --- a/backend/coverage-report/Http/Controllers/index.html +++ b/backend/coverage-report/Http/Controllers/index.html @@ -46,21 +46,21 @@ Total
-
- 0.00% covered (danger) +
+ 16.24% covered (danger)
-
0.00%
-
0 / 708
+
16.24%
+
115 / 708
-
- 0.00% covered (danger) +
+ 8.05% covered (danger)
-
0.00%
-
0 / 87
+
8.05%
+
7 / 87
0.00% covered (danger) @@ -74,21 +74,21 @@ Api
-
- 0.00% covered (danger) +
+ 26.81% covered (danger)
-
0.00%
-
0 / 429
+
26.81%
+
115 / 429
-
- 0.00% covered (danger) +
+ 17.07% covered (danger)
-
0.00%
-
0 / 41
+
17.07%
+
7 / 41
0.00% covered (danger) @@ -349,7 +349,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Middleware/HandleAppearance.php.html b/backend/coverage-report/Http/Middleware/HandleAppearance.php.html index fb2bb7e..261a364 100644 --- a/backend/coverage-report/Http/Middleware/HandleAppearance.php.html +++ b/backend/coverage-report/Http/Middleware/HandleAppearance.php.html @@ -162,7 +162,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Middleware/HandleInertiaRequests.php.html b/backend/coverage-report/Http/Middleware/HandleInertiaRequests.php.html index 5da5f5c..ba62183 100644 --- a/backend/coverage-report/Http/Middleware/HandleInertiaRequests.php.html +++ b/backend/coverage-report/Http/Middleware/HandleInertiaRequests.php.html @@ -203,7 +203,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Middleware/dashboard.html b/backend/coverage-report/Http/Middleware/dashboard.html index 24e7228..41bcd7b 100644 --- a/backend/coverage-report/Http/Middleware/dashboard.html +++ b/backend/coverage-report/Http/Middleware/dashboard.html @@ -142,7 +142,7 @@

Project Risks

diff --git a/backend/coverage-report/Http/Middleware/index.html b/backend/coverage-report/Http/Middleware/index.html index 02b7ff5..f07f148 100644 --- a/backend/coverage-report/Http/Middleware/index.html +++ b/backend/coverage-report/Http/Middleware/index.html @@ -140,7 +140,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Requests/StoreFeedRequest.php.html b/backend/coverage-report/Http/Requests/StoreFeedRequest.php.html index 6091b81..923f98b 100644 --- a/backend/coverage-report/Http/Requests/StoreFeedRequest.php.html +++ b/backend/coverage-report/Http/Requests/StoreFeedRequest.php.html @@ -44,105 +44,105 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 9
-
-
- 0.00% covered (danger) +
100.00%
+
9 / 9
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 2
- CRAP -
-
- 0.00% covered (danger) +
100.00%
+
2 / 2
+ CRAP +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
- StoreFeedRequest -
-
- 0.00% covered (danger) + StoreFeedRequest +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 9
-
-
- 0.00% covered (danger) +
100.00%
+
9 / 9
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 2
- 6 -
-
- 0.00% covered (danger) +
100.00%
+
2 / 2
+ 2 +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
-  authorize -
-
- 0.00% covered (danger) +  authorize +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  rules -
-
- 0.00% covered (danger) +  rules +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 8
-
-
- 0.00% covered (danger) +
100.00%
+
8 / 8
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + @@ -161,7 +161,7 @@ 8{ 9    public function authorize(): bool 10    { - 11        return true; + 11        return true; 12    } 13 14    /** @@ -169,14 +169,14 @@ 16     */ 17    public function rules(): array 18    { - 19        return [ - 20            'name' => 'required|string|max:255', - 21            'url' => 'required|url|unique:feeds,url', - 22            'type' => 'required|in:website,rss', - 23            'language_id' => 'required|exists:languages,id', - 24            'description' => 'nullable|string', - 25            'is_active' => 'boolean' - 26        ]; + 19        return [ + 20            'name' => 'required|string|max:255', + 21            'url' => 'required|url|unique:feeds,url', + 22            'type' => 'required|in:website,rss', + 23            'language_id' => 'required|exists:languages,id', + 24            'description' => 'nullable|string', + 25            'is_active' => 'boolean' + 26        ]; 27    } 28} @@ -189,7 +189,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Requests/UpdateFeedRequest.php.html b/backend/coverage-report/Http/Requests/UpdateFeedRequest.php.html index f75b46f..094589d 100644 --- a/backend/coverage-report/Http/Requests/UpdateFeedRequest.php.html +++ b/backend/coverage-report/Http/Requests/UpdateFeedRequest.php.html @@ -44,105 +44,105 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 9
-
-
- 0.00% covered (danger) +
100.00%
+
9 / 9
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 2
- CRAP -
-
- 0.00% covered (danger) +
100.00%
+
2 / 2
+ CRAP +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
- UpdateFeedRequest -
-
- 0.00% covered (danger) + UpdateFeedRequest +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 9
-
-
- 0.00% covered (danger) +
100.00%
+
9 / 9
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 2
- 12 -
-
- 0.00% covered (danger) +
100.00%
+
2 / 2
+ 3 +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
-  authorize -
-
- 0.00% covered (danger) +  authorize +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  rules -
-
- 0.00% covered (danger) +  rules +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 8
-
-
- 0.00% covered (danger) +
100.00%
+
8 / 8
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 6 - +
100.00%
+
1 / 1
+ 2 + @@ -162,7 +162,7 @@ 9{ 10    public function authorize(): bool 11    { - 12        return true; + 12        return true; 13    } 14 15    /** @@ -170,14 +170,14 @@ 17     */ 18    public function rules(): array 19    { - 20        return [ - 21            'name' => 'required|string|max:255', - 22            'url' => 'required|url|unique:feeds,url,' . ($this->route('feed') instanceof Feed ? (string)$this->route('feed')->id : (string)$this->route('feed')), - 23            'type' => 'required|in:website,rss', - 24            'language_id' => 'required|exists:languages,id', - 25            'description' => 'nullable|string', - 26            'is_active' => 'boolean' - 27        ]; + 20        return [ + 21            'name' => 'required|string|max:255', + 22            'url' => 'required|url|unique:feeds,url,' . ($this->route('feed') instanceof Feed ? (string)$this->route('feed')->id : (string)$this->route('feed')), + 23            'type' => 'required|in:website,rss', + 24            'language_id' => 'required|exists:languages,id', + 25            'description' => 'nullable|string', + 26            'is_active' => 'boolean' + 27        ]; 28    } 29} @@ -190,7 +190,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Requests/dashboard.html b/backend/coverage-report/Http/Requests/dashboard.html index d10e83b..2574d43 100644 --- a/backend/coverage-report/Http/Requests/dashboard.html +++ b/backend/coverage-report/Http/Requests/dashboard.html @@ -59,8 +59,6 @@

Insufficient Coverage

-
App\Http\Requests\StoreFeedRequest0% - App\Http\Requests\UpdateFeedRequest0% @@ -77,7 +75,6 @@

Project Risks

- App\Http\Requests\UpdateFeedRequest12 @@ -115,10 +112,6 @@

Insufficient Coverage

- authorize0% - rules0% - authorize0% - rules0% @@ -135,7 +128,6 @@

Project Risks

- rules6 @@ -145,7 +137,7 @@

Project Risks

@@ -164,7 +156,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([2,0,0,0,0,0,0,0,0,0,0,0], "Class Coverage")) + .datum(getCoverageDistributionData([0,0,0,0,0,0,0,0,0,0,0,2], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -182,7 +174,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([4,0,0,0,0,0,0,0,0,0,0,0], "Method Coverage")) + .datum(getCoverageDistributionData([0,0,0,0,0,0,0,0,0,0,0,4], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -232,7 +224,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[0,2,"App\\Http\\Requests\\StoreFeedRequest<\/a>"],[0,3,"App\\Http\\Requests\\UpdateFeedRequest<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[100,2,"App\\Http\\Requests\\StoreFeedRequest<\/a>"],[100,3,"App\\Http\\Requests\\UpdateFeedRequest<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -256,7 +248,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[0,1,"
App\\Http\\Requests\\StoreFeedRequest::authorize<\/a>"],[0,1,"App\\Http\\Requests\\StoreFeedRequest::rules<\/a>"],[0,1,"App\\Http\\Requests\\UpdateFeedRequest::authorize<\/a>"],[0,2,"App\\Http\\Requests\\UpdateFeedRequest::rules<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[100,1,"App\\Http\\Requests\\StoreFeedRequest::authorize<\/a>"],[100,1,"App\\Http\\Requests\\StoreFeedRequest::rules<\/a>"],[100,1,"App\\Http\\Requests\\UpdateFeedRequest::authorize<\/a>"],[100,2,"App\\Http\\Requests\\UpdateFeedRequest::rules<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Http/Requests/index.html b/backend/coverage-report/Http/Requests/index.html index f019818..7550c3c 100644 --- a/backend/coverage-report/Http/Requests/index.html +++ b/backend/coverage-report/Http/Requests/index.html @@ -44,87 +44,87 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 18
-
-
- 0.00% covered (danger) +
100.00%
+
18 / 18
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 4
-
-
- 0.00% covered (danger) +
100.00%
+
4 / 4
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 2
+
100.00%
+
2 / 2
-
StoreFeedRequest.php -
-
- 0.00% covered (danger) + StoreFeedRequest.php +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 9
-
-
- 0.00% covered (danger) +
100.00%
+
9 / 9
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 2
-
-
- 0.00% covered (danger) +
100.00%
+
2 / 2
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
- UpdateFeedRequest.php -
-
- 0.00% covered (danger) + UpdateFeedRequest.php +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 9
-
-
- 0.00% covered (danger) +
100.00%
+
9 / 9
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 2
-
-
- 0.00% covered (danger) +
100.00%
+
2 / 2
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
@@ -140,7 +140,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Resources/ArticlePublicationResource.php.html b/backend/coverage-report/Http/Resources/ArticlePublicationResource.php.html index b780809..c92ce92 100644 --- a/backend/coverage-report/Http/Resources/ArticlePublicationResource.php.html +++ b/backend/coverage-report/Http/Resources/ArticlePublicationResource.php.html @@ -165,7 +165,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Resources/ArticleResource.php.html b/backend/coverage-report/Http/Resources/ArticleResource.php.html index a468e39..3a80739 100644 --- a/backend/coverage-report/Http/Resources/ArticleResource.php.html +++ b/backend/coverage-report/Http/Resources/ArticleResource.php.html @@ -44,83 +44,83 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 18
-
-
- 0.00% covered (danger) +
100.00%
+
18 / 18
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- CRAP -
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+ CRAP +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
- ArticleResource -
-
- 0.00% covered (danger) + ArticleResource +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 18
-
-
- 0.00% covered (danger) +
100.00%
+
18 / 18
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 -
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+ 1 +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
-  toArray -
-
- 0.00% covered (danger) +  toArray +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 18
-
-
- 0.00% covered (danger) +
100.00%
+
18 / 18
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + @@ -145,24 +145,24 @@ 14     */ 15    public function toArray(Request $request): array 16    { - 17        return [ - 18            'id' => $this->id, - 19            'feed_id' => $this->feed_id, - 20            'url' => $this->url, - 21            'title' => $this->title, - 22            'description' => $this->description, - 23            'is_valid' => $this->is_valid, - 24            'is_duplicate' => $this->is_duplicate, - 25            'approval_status' => $this->approval_status, - 26            'approved_at' => $this->approved_at?->toISOString(), - 27            'approved_by' => $this->approved_by, - 28            'fetched_at' => $this->fetched_at?->toISOString(), - 29            'validated_at' => $this->validated_at?->toISOString(), - 30            'created_at' => $this->created_at->toISOString(), - 31            'updated_at' => $this->updated_at->toISOString(), - 32            'feed' => new FeedResource($this->whenLoaded('feed')), - 33            'article_publication' => new ArticlePublicationResource($this->whenLoaded('articlePublication')), - 34        ]; + 17        return [ + 18            'id' => $this->id, + 19            'feed_id' => $this->feed_id, + 20            'url' => $this->url, + 21            'title' => $this->title, + 22            'description' => $this->description, + 23            'is_valid' => $this->is_valid, + 24            'is_duplicate' => $this->is_duplicate, + 25            'approval_status' => $this->approval_status, + 26            'approved_at' => $this->approved_at?->toISOString(), + 27            'approved_by' => $this->approved_by, + 28            'fetched_at' => $this->fetched_at?->toISOString(), + 29            'validated_at' => $this->validated_at?->toISOString(), + 30            'created_at' => $this->created_at->toISOString(), + 31            'updated_at' => $this->updated_at->toISOString(), + 32            'feed' => new FeedResource($this->whenLoaded('feed')), + 33            'article_publication' => new ArticlePublicationResource($this->whenLoaded('articlePublication')), + 34        ]; 35    } 36} @@ -175,7 +175,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Resources/FeedResource.php.html b/backend/coverage-report/Http/Resources/FeedResource.php.html index 5f44cd1..ea9a6a9 100644 --- a/backend/coverage-report/Http/Resources/FeedResource.php.html +++ b/backend/coverage-report/Http/Resources/FeedResource.php.html @@ -44,83 +44,83 @@ - Total -
-
- 0.00% covered (danger) + Total +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 13
-
-
- 0.00% covered (danger) +
100.00%
+
13 / 13
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- CRAP -
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+ CRAP +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
- FeedResource -
-
- 0.00% covered (danger) + FeedResource +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 13
-
-
- 0.00% covered (danger) +
100.00%
+
13 / 13
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 -
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+ 1 +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
-  toArray -
-
- 0.00% covered (danger) +  toArray +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 13
-
-
- 0.00% covered (danger) +
100.00%
+
13 / 13
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + @@ -145,19 +145,19 @@ 14     */ 15    public function toArray(Request $request): array 16    { - 17        return [ - 18            'id' => $this->id, - 19            'name' => $this->name, - 20            'url' => $this->url, - 21            'type' => $this->type, - 22            'is_active' => $this->is_active, - 23            'description' => $this->description, - 24            'created_at' => $this->created_at->toISOString(), - 25            'updated_at' => $this->updated_at->toISOString(), - 26            'articles_count' => $this->when($request->routeIs('api.feeds.*'), function () { - 27                return $this->articles()->count(); - 28            }), - 29        ]; + 17        return [ + 18            'id' => $this->id, + 19            'name' => $this->name, + 20            'url' => $this->url, + 21            'type' => $this->type, + 22            'is_active' => $this->is_active, + 23            'description' => $this->description, + 24            'created_at' => $this->created_at->toISOString(), + 25            'updated_at' => $this->updated_at->toISOString(), + 26            'articles_count' => $this->when($request->routeIs('api.feeds.*'), function () { + 27                return $this->articles()->count(); + 28            }), + 29        ]; 30    } 31} @@ -170,7 +170,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Resources/PlatformAccountResource.php.html b/backend/coverage-report/Http/Resources/PlatformAccountResource.php.html index 477feaa..0eba110 100644 --- a/backend/coverage-report/Http/Resources/PlatformAccountResource.php.html +++ b/backend/coverage-report/Http/Resources/PlatformAccountResource.php.html @@ -170,7 +170,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Resources/PlatformChannelResource.php.html b/backend/coverage-report/Http/Resources/PlatformChannelResource.php.html index 5094b91..40b9d0a 100644 --- a/backend/coverage-report/Http/Resources/PlatformChannelResource.php.html +++ b/backend/coverage-report/Http/Resources/PlatformChannelResource.php.html @@ -170,7 +170,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Resources/PlatformInstanceResource.php.html b/backend/coverage-report/Http/Resources/PlatformInstanceResource.php.html index f9d89da..0df1c19 100644 --- a/backend/coverage-report/Http/Resources/PlatformInstanceResource.php.html +++ b/backend/coverage-report/Http/Resources/PlatformInstanceResource.php.html @@ -166,7 +166,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Resources/RouteResource.php.html b/backend/coverage-report/Http/Resources/RouteResource.php.html index 6c60358..243fd66 100644 --- a/backend/coverage-report/Http/Resources/RouteResource.php.html +++ b/backend/coverage-report/Http/Resources/RouteResource.php.html @@ -168,7 +168,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/Resources/dashboard.html b/backend/coverage-report/Http/Resources/dashboard.html index c7482df..477f08c 100644 --- a/backend/coverage-report/Http/Resources/dashboard.html +++ b/backend/coverage-report/Http/Resources/dashboard.html @@ -60,8 +60,6 @@

Insufficient Coverage

App\Http\Resources\ArticlePublicationResource0% - App\Http\Resources\ArticleResource0% - App\Http\Resources\FeedResource0% App\Http\Resources\PlatformAccountResource0% App\Http\Resources\PlatformChannelResource0% App\Http\Resources\PlatformInstanceResource0% @@ -120,8 +118,6 @@

Insufficient Coverage

toArray0% - toArray0% - toArray0% toArray0% toArray0% toArray0% @@ -151,7 +147,7 @@

Project Risks

@@ -170,7 +166,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([7,0,0,0,0,0,0,0,0,0,0,0], "Class Coverage")) + .datum(getCoverageDistributionData([5,0,0,0,0,0,0,0,0,0,0,2], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -188,7 +184,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([7,0,0,0,0,0,0,0,0,0,0,0], "Method Coverage")) + .datum(getCoverageDistributionData([5,0,0,0,0,0,0,0,0,0,0,2], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -238,7 +234,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[0,1,"App\\Http\\Resources\\ArticlePublicationResource<\/a>"],[0,1,"App\\Http\\Resources\\ArticleResource<\/a>"],[0,1,"App\\Http\\Resources\\FeedResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[0,1,"App\\Http\\Resources\\ArticlePublicationResource<\/a>"],[100,1,"App\\Http\\Resources\\ArticleResource<\/a>"],[100,1,"App\\Http\\Resources\\FeedResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -262,7 +258,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[0,1,"
App\\Http\\Resources\\ArticlePublicationResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\ArticleResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\FeedResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource::toArray<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[0,1,"App\\Http\\Resources\\ArticlePublicationResource::toArray<\/a>"],[100,1,"App\\Http\\Resources\\ArticleResource::toArray<\/a>"],[100,1,"App\\Http\\Resources\\FeedResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource::toArray<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Http/Resources/index.html b/backend/coverage-report/Http/Resources/index.html index 14373bf..a8fb147 100644 --- a/backend/coverage-report/Http/Resources/index.html +++ b/backend/coverage-report/Http/Resources/index.html @@ -46,29 +46,29 @@ Total
-
- 0.00% covered (danger) +
+ 36.47% covered (danger)
-
0.00%
-
0 / 85
+
36.47%
+
31 / 85
-
- 0.00% covered (danger) +
+ 28.57% covered (danger)
-
0.00%
-
0 / 7
+
28.57%
+
2 / 7
-
- 0.00% covered (danger) +
+ 28.57% covered (danger)
-
0.00%
-
0 / 7
+
28.57%
+
2 / 7
@@ -100,59 +100,59 @@ -
ArticleResource.php -
-
- 0.00% covered (danger) + ArticleResource.php +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 18
-
-
- 0.00% covered (danger) +
100.00%
+
18 / 18
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
- FeedResource.php -
-
- 0.00% covered (danger) + FeedResource.php +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 13
-
-
- 0.00% covered (danger) +
100.00%
+
13 / 13
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
@@ -280,7 +280,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Http/dashboard.html b/backend/coverage-report/Http/dashboard.html index 3b866be..e48b613 100644 --- a/backend/coverage-report/Http/dashboard.html +++ b/backend/coverage-report/Http/dashboard.html @@ -58,16 +58,11 @@

Insufficient Coverage

- App\Http\Controllers\Api\V1\ArticlesController0% App\Http\Controllers\Api\V1\AuthController0% - App\Http\Controllers\Api\V1\BaseController0% - App\Http\Controllers\Api\V1\DashboardController0% - App\Http\Controllers\Api\V1\FeedsController0% App\Http\Controllers\Api\V1\LogsController0% App\Http\Controllers\Api\V1\PlatformAccountsController0% App\Http\Controllers\Api\V1\PlatformChannelsController0% App\Http\Controllers\Api\V1\RoutingController0% - App\Http\Controllers\Api\V1\SettingsController0% App\Http\Controllers\ArticlesController0% App\Http\Controllers\FeedsController0% App\Http\Controllers\LogsController0% @@ -78,15 +73,16 @@

Insufficient Coverage

App\Http\Controllers\SettingsController0% App\Http\Middleware\HandleAppearance0% App\Http\Middleware\HandleInertiaRequests0% - App\Http\Requests\StoreFeedRequest0% - App\Http\Requests\UpdateFeedRequest0% App\Http\Resources\ArticlePublicationResource0% - App\Http\Resources\ArticleResource0% - App\Http\Resources\FeedResource0% App\Http\Resources\PlatformAccountResource0% App\Http\Resources\PlatformChannelResource0% App\Http\Resources\PlatformInstanceResource0% App\Http\Resources\RouteResource0% + App\Http\Controllers\Api\V1\FeedsController76% + App\Http\Controllers\Api\V1\DashboardController84% + App\Http\Controllers\Api\V1\SettingsController85% + App\Http\Controllers\Api\V1\BaseController87% + App\Http\Controllers\Api\V1\ArticlesController87% @@ -107,19 +103,18 @@

Project Risks

App\Http\Controllers\Api\V1\RoutingController306 App\Http\Controllers\RoutingController240 App\Http\Controllers\Api\V1\PlatformAccountsController210 - App\Http\Controllers\Api\V1\FeedsController182 App\Http\Controllers\Api\V1\PlatformChannelsController182 App\Http\Controllers\Api\V1\AuthController132 App\Http\Controllers\PlatformAccountsController110 App\Http\Controllers\PlatformChannelsController110 App\Http\Controllers\FeedsController90 - App\Http\Controllers\Api\V1\SettingsController56 - App\Http\Controllers\Api\V1\BaseController42 - App\Http\Controllers\Api\V1\ArticlesController30 - App\Http\Controllers\Api\V1\DashboardController12 + App\Http\Controllers\Api\V1\FeedsController15 App\Http\Controllers\Api\V1\LogsController12 App\Http\Controllers\SettingsController12 - App\Http\Requests\UpdateFeedRequest12 + App\Http\Controllers\Api\V1\SettingsController7 + App\Http\Controllers\Api\V1\BaseController6 + App\Http\Controllers\Api\V1\ArticlesController5 + App\Http\Controllers\Api\V1\DashboardController3 @@ -157,26 +152,12 @@

Insufficient Coverage

- index0% - approve0% - reject0% login0% register0% logout0% me0% - sendResponse0% - sendError0% - sendValidationError0% sendNotFound0% sendUnauthorized0% - __construct0% - stats0% - index0% - store0% - show0% - update0% - destroy0% - toggle0% index0% index0% store0% @@ -196,8 +177,6 @@

Insufficient Coverage

update0% destroy0% toggle0% - index0% - update0% __invoke0% approve0% reject0% @@ -247,17 +226,19 @@

Insufficient Coverage

handle0% version0% share0% - authorize0% - rules0% - authorize0% - rules0% toArray0% - toArray0% - toArray0% toArray0% toArray0% toArray0% toArray0% + update63% + store66% + approve71% + reject71% + destroy71% + index71% + toggle77% + stats83% @@ -275,7 +256,6 @@

Project Risks

login30 - update30 complete30 store20 update20 @@ -283,9 +263,6 @@

Project Risks

toggle20 channel20 register12 - store12 - update12 - toggle12 index12 store12 update12 @@ -298,17 +275,11 @@

Project Risks

store12 toggle12 parseJsonFilters12 - approve6 - reject6 logout6 - sendError6 - stats6 - destroy6 destroy6 setActive6 destroy6 show6 - index6 toggle6 index6 platform6 @@ -317,7 +288,14 @@

Project Risks

toggle6 edit6 update6 - rules6 + update3 + store3 + toggle3 + approve2 + reject2 + destroy2 + index2 + stats2 @@ -327,7 +305,7 @@

Project Risks

@@ -346,7 +324,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([29,0,0,0,0,0,0,0,0,0,0,1], "Class Coverage")) + .datum(getCoverageDistributionData([20,0,0,0,0,0,0,0,1,4,0,5], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -364,7 +342,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([101,0,0,0,0,0,0,0,0,0,0,0], "Method Coverage")) + .datum(getCoverageDistributionData([79,0,0,0,0,0,0,2,5,1,1,13], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -414,7 +392,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[0,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[0,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[0,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"],[0,3,"App\\Http\\Controllers\\ArticlesController<\/a>"],[100,0,"App\\Http\\Controllers\\Controller<\/a>"],[0,9,"App\\Http\\Controllers\\FeedsController<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController<\/a>"],[0,22,"App\\Http\\Controllers\\OnboardingController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformAccountsController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformChannelsController<\/a>"],[0,15,"App\\Http\\Controllers\\RoutingController<\/a>"],[0,3,"App\\Http\\Controllers\\SettingsController<\/a>"],[0,1,"App\\Http\\Middleware\\HandleAppearance<\/a>"],[0,2,"App\\Http\\Middleware\\HandleInertiaRequests<\/a>"],[0,2,"App\\Http\\Requests\\StoreFeedRequest<\/a>"],[0,3,"App\\Http\\Requests\\UpdateFeedRequest<\/a>"],[0,1,"App\\Http\\Resources\\ArticlePublicationResource<\/a>"],[0,1,"App\\Http\\Resources\\ArticleResource<\/a>"],[0,1,"App\\Http\\Resources\\FeedResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[87.87878787878788,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[87.5,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[84.61538461538461,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[76,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[85.18518518518519,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"],[0,3,"App\\Http\\Controllers\\ArticlesController<\/a>"],[100,0,"App\\Http\\Controllers\\Controller<\/a>"],[0,9,"App\\Http\\Controllers\\FeedsController<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController<\/a>"],[0,22,"App\\Http\\Controllers\\OnboardingController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformAccountsController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformChannelsController<\/a>"],[0,15,"App\\Http\\Controllers\\RoutingController<\/a>"],[0,3,"App\\Http\\Controllers\\SettingsController<\/a>"],[0,1,"App\\Http\\Middleware\\HandleAppearance<\/a>"],[0,2,"App\\Http\\Middleware\\HandleInertiaRequests<\/a>"],[100,2,"App\\Http\\Requests\\StoreFeedRequest<\/a>"],[100,3,"App\\Http\\Requests\\UpdateFeedRequest<\/a>"],[0,1,"App\\Http\\Resources\\ArticlePublicationResource<\/a>"],[100,1,"App\\Http\\Resources\\ArticleResource<\/a>"],[100,1,"App\\Http\\Resources\\FeedResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -438,7 +416,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[0,1,"
App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::__invoke<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::approve<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::reject<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::create<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\FeedsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController::__invoke<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::index<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::platform<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::feed<\/a>"],[0,4,"App\\Http\\Controllers\\OnboardingController::channel<\/a>"],[0,5,"App\\Http\\Controllers\\OnboardingController::complete<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::needsOnboarding<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasPlatformAccount<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasFeed<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasChannel<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::create<\/a>"],[0,3,"App\\Http\\Controllers\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::edit<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformAccountsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::destroy<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::create<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::index<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::create<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\RoutingController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::update<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::parseJsonFilters<\/a>"],[0,1,"App\\Http\\Controllers\\SettingsController::index<\/a>"],[0,2,"App\\Http\\Controllers\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Middleware\\HandleAppearance::handle<\/a>"],[0,1,"App\\Http\\Middleware\\HandleInertiaRequests::version<\/a>"],[0,1,"App\\Http\\Middleware\\HandleInertiaRequests::share<\/a>"],[0,1,"App\\Http\\Requests\\StoreFeedRequest::authorize<\/a>"],[0,1,"App\\Http\\Requests\\StoreFeedRequest::rules<\/a>"],[0,1,"App\\Http\\Requests\\UpdateFeedRequest::authorize<\/a>"],[0,2,"App\\Http\\Requests\\UpdateFeedRequest::rules<\/a>"],[0,1,"App\\Http\\Resources\\ArticlePublicationResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\ArticleResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\FeedResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource::toArray<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[100,1,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[100,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[83.33333333333334,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[66.66666666666666,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[63.63636363636363,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[77.77777777777779,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[90,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::__invoke<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::approve<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::reject<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::create<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\FeedsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController::__invoke<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::index<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::platform<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::feed<\/a>"],[0,4,"App\\Http\\Controllers\\OnboardingController::channel<\/a>"],[0,5,"App\\Http\\Controllers\\OnboardingController::complete<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::needsOnboarding<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasPlatformAccount<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasFeed<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasChannel<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::create<\/a>"],[0,3,"App\\Http\\Controllers\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::edit<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformAccountsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::destroy<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::create<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::index<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::create<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\RoutingController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::update<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::parseJsonFilters<\/a>"],[0,1,"App\\Http\\Controllers\\SettingsController::index<\/a>"],[0,2,"App\\Http\\Controllers\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Middleware\\HandleAppearance::handle<\/a>"],[0,1,"App\\Http\\Middleware\\HandleInertiaRequests::version<\/a>"],[0,1,"App\\Http\\Middleware\\HandleInertiaRequests::share<\/a>"],[100,1,"App\\Http\\Requests\\StoreFeedRequest::authorize<\/a>"],[100,1,"App\\Http\\Requests\\StoreFeedRequest::rules<\/a>"],[100,1,"App\\Http\\Requests\\UpdateFeedRequest::authorize<\/a>"],[100,2,"App\\Http\\Requests\\UpdateFeedRequest::rules<\/a>"],[0,1,"App\\Http\\Resources\\ArticlePublicationResource::toArray<\/a>"],[100,1,"App\\Http\\Resources\\ArticleResource::toArray<\/a>"],[100,1,"App\\Http\\Resources\\FeedResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource::toArray<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Http/index.html b/backend/coverage-report/Http/index.html index 9c8abe9..447b1a4 100644 --- a/backend/coverage-report/Http/index.html +++ b/backend/coverage-report/Http/index.html @@ -45,49 +45,49 @@ Total
-
- 0.00% covered (danger) +
+ 20.07% covered (danger)
-
0.00%
-
0 / 817
+
20.07%
+
164 / 817
-
- 0.00% covered (danger) +
+ 12.87% covered (danger)
-
0.00%
-
0 / 101
+
12.87%
+
13 / 101
-
- 0.00% covered (danger) +
+ 13.79% covered (danger)
-
0.00%
-
0 / 29
+
13.79%
+
4 / 29
Controllers
-
- 0.00% covered (danger) +
+ 16.24% covered (danger)
-
0.00%
-
0 / 708
+
16.24%
+
115 / 708
-
- 0.00% covered (danger) +
+ 8.05% covered (danger)
-
0.00%
-
0 / 87
+
8.05%
+
7 / 87
0.00% covered (danger) @@ -127,59 +127,59 @@ - Requests -
-
- 0.00% covered (danger) + Requests +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 18
-
-
- 0.00% covered (danger) +
100.00%
+
18 / 18
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 4
-
-
- 0.00% covered (danger) +
100.00%
+
4 / 4
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 2
+
100.00%
+
2 / 2
Resources
-
- 0.00% covered (danger) +
+ 36.47% covered (danger)
-
0.00%
-
0 / 85
+
36.47%
+
31 / 85
-
- 0.00% covered (danger) +
+ 28.57% covered (danger)
-
0.00%
-
0 / 7
+
28.57%
+
2 / 7
-
- 0.00% covered (danger) +
+ 28.57% covered (danger)
-
0.00%
-
0 / 7
+
28.57%
+
2 / 7
@@ -195,7 +195,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Jobs/ArticleDiscoveryForFeedJob.php.html b/backend/coverage-report/Jobs/ArticleDiscoveryForFeedJob.php.html index 5b16840..a2d5d5c 100644 --- a/backend/coverage-report/Jobs/ArticleDiscoveryForFeedJob.php.html +++ b/backend/coverage-report/Jobs/ArticleDiscoveryForFeedJob.php.html @@ -243,7 +243,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Jobs/ArticleDiscoveryJob.php.html b/backend/coverage-report/Jobs/ArticleDiscoveryJob.php.html index b18b225..98c103a 100644 --- a/backend/coverage-report/Jobs/ArticleDiscoveryJob.php.html +++ b/backend/coverage-report/Jobs/ArticleDiscoveryJob.php.html @@ -193,7 +193,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Jobs/PublishToLemmyJob.php.html b/backend/coverage-report/Jobs/PublishToLemmyJob.php.html index c329c4a..13c4f6a 100644 --- a/backend/coverage-report/Jobs/PublishToLemmyJob.php.html +++ b/backend/coverage-report/Jobs/PublishToLemmyJob.php.html @@ -198,7 +198,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Jobs/SyncChannelPostsJob.php.html b/backend/coverage-report/Jobs/SyncChannelPostsJob.php.html index 720099f..ba1edb4 100644 --- a/backend/coverage-report/Jobs/SyncChannelPostsJob.php.html +++ b/backend/coverage-report/Jobs/SyncChannelPostsJob.php.html @@ -338,7 +338,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Jobs/dashboard.html b/backend/coverage-report/Jobs/dashboard.html index a408af9..4160c82 100644 --- a/backend/coverage-report/Jobs/dashboard.html +++ b/backend/coverage-report/Jobs/dashboard.html @@ -153,7 +153,7 @@

Project Risks

diff --git a/backend/coverage-report/Jobs/index.html b/backend/coverage-report/Jobs/index.html index 70d0e61..dbedb46 100644 --- a/backend/coverage-report/Jobs/index.html +++ b/backend/coverage-report/Jobs/index.html @@ -195,7 +195,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Listeners/LogExceptionToDatabase.php.html b/backend/coverage-report/Listeners/LogExceptionToDatabase.php.html index 370e177..6fd46ff 100644 --- a/backend/coverage-report/Listeners/LogExceptionToDatabase.php.html +++ b/backend/coverage-report/Listeners/LogExceptionToDatabase.php.html @@ -165,7 +165,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Listeners/PublishApprovedArticle.php.html b/backend/coverage-report/Listeners/PublishApprovedArticle.php.html index 92163bc..9e0898b 100644 --- a/backend/coverage-report/Listeners/PublishApprovedArticle.php.html +++ b/backend/coverage-report/Listeners/PublishApprovedArticle.php.html @@ -165,7 +165,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Listeners/PublishArticle.php.html b/backend/coverage-report/Listeners/PublishArticle.php.html index 5ff4db2..64a150c 100644 --- a/backend/coverage-report/Listeners/PublishArticle.php.html +++ b/backend/coverage-report/Listeners/PublishArticle.php.html @@ -199,7 +199,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Listeners/ValidateArticleListener.php.html b/backend/coverage-report/Listeners/ValidateArticleListener.php.html index 9088308..d52f2c5 100644 --- a/backend/coverage-report/Listeners/ValidateArticleListener.php.html +++ b/backend/coverage-report/Listeners/ValidateArticleListener.php.html @@ -187,7 +187,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Listeners/dashboard.html b/backend/coverage-report/Listeners/dashboard.html index 1f84b90..14b5fb1 100644 --- a/backend/coverage-report/Listeners/dashboard.html +++ b/backend/coverage-report/Listeners/dashboard.html @@ -146,7 +146,7 @@

Project Risks

diff --git a/backend/coverage-report/Listeners/index.html b/backend/coverage-report/Listeners/index.html index 5160775..15f069f 100644 --- a/backend/coverage-report/Listeners/index.html +++ b/backend/coverage-report/Listeners/index.html @@ -195,7 +195,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/LogLevelEnum.php.html b/backend/coverage-report/LogLevelEnum.php.html index d492b45..e37ef50 100644 --- a/backend/coverage-report/LogLevelEnum.php.html +++ b/backend/coverage-report/LogLevelEnum.php.html @@ -144,13 +144,13 @@ 15     */ 16    public static function toArray(): array 17    { - 18        return [ - 19            self::DEBUG->value, - 20            self::INFO->value, - 21            self::WARNING->value, - 22            self::ERROR->value, - 23            self::CRITICAL->value, - 24        ]; + 18        return [ + 19            self::DEBUG->value, + 20            self::INFO->value, + 21            self::WARNING->value, + 22            self::ERROR->value, + 23            self::CRITICAL->value, + 24        ]; 25    } 26} @@ -163,7 +163,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/Article.php.html b/backend/coverage-report/Models/Article.php.html index ae7007f..1a97095 100644 --- a/backend/coverage-report/Models/Article.php.html +++ b/backend/coverage-report/Models/Article.php.html @@ -43,61 +43,61 @@ - Total -
-
- 48.72% covered (danger) + Total +
+
+ 100.00% covered (success)
-
48.72%
-
19 / 39
-
-
- 45.45% covered (danger) +
100.00%
+
39 / 39
+
+
+ 100.00% covered (success)
-
45.45%
-
5 / 11
- CRAP -
-
- 0.00% covered (danger) +
100.00%
+
11 / 11
+ CRAP +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
- Article -
-
- 48.72% covered (danger) + Article +
+
+ 100.00% covered (success)
-
48.72%
-
19 / 39
-
-
- 45.45% covered (danger) +
100.00%
+
39 / 39
+
+
+ 100.00% covered (success)
-
45.45%
-
5 / 11
- 45.34 -
-
- 0.00% covered (danger) +
100.00%
+
11 / 11
+ 15 +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
@@ -123,25 +123,25 @@ -  isValid -
-
- 60.00% covered (warning) +  isValid +
+
+ 100.00% covered (success)
-
60.00%
-
3 / 5
-
-
- 0.00% covered (danger) +
100.00%
+
5 / 5
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 3.58 - +
100.00%
+
1 / 1
+ 3 + @@ -167,113 +167,113 @@ -  isPending -
-
- 0.00% covered (danger) +  isPending +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  isRejected -
-
- 0.00% covered (danger) +  isRejected +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  approve -
-
- 0.00% covered (danger) +  approve +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 6
-
-
- 0.00% covered (danger) +
100.00%
+
6 / 6
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  reject -
-
- 0.00% covered (danger) +  reject +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 5
-
-
- 0.00% covered (danger) +
100.00%
+
5 / 5
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  canBePublished -
-
- 0.00% covered (danger) +  canBePublished +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 5
-
-
- 0.00% covered (danger) +
100.00%
+
5 / 5
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 12 - +
100.00%
+
1 / 1
+ 3 + @@ -399,80 +399,80 @@ 49     */ 50    public function casts(): array 51    { - 52        return [ - 53            'is_valid' => 'boolean', - 54            'is_duplicate' => 'boolean', - 55            'approval_status' => 'string', - 56            'approved_at' => 'datetime', - 57            'fetched_at' => 'datetime', - 58            'validated_at' => 'datetime', - 59            'created_at' => 'datetime', - 60            'updated_at' => 'datetime', - 61        ]; + 52        return [ + 53            'is_valid' => 'boolean', + 54            'is_duplicate' => 'boolean', + 55            'approval_status' => 'string', + 56            'approved_at' => 'datetime', + 57            'fetched_at' => 'datetime', + 58            'validated_at' => 'datetime', + 59            'created_at' => 'datetime', + 60            'updated_at' => 'datetime', + 61        ]; 62    } 63 64    public function isValid(): bool 65    { - 66        if (is_null($this->validated_at)) { - 67            return false; + 66        if (is_null($this->validated_at)) { + 67            return false; 68        } 69 - 70        if (is_null($this->is_valid)) { - 71            return false; + 70        if (is_null($this->is_valid)) { + 71            return false; 72        } 73 - 74        return $this->is_valid; + 74        return $this->is_valid; 75    } 76 77    public function isApproved(): bool 78    { - 79        return $this->approval_status === 'approved'; + 79        return $this->approval_status === 'approved'; 80    } 81 82    public function isPending(): bool 83    { - 84        return $this->approval_status === 'pending'; + 84        return $this->approval_status === 'pending'; 85    } 86 87    public function isRejected(): bool 88    { - 89        return $this->approval_status === 'rejected'; + 89        return $this->approval_status === 'rejected'; 90    } 91 92    public function approve(string $approvedBy = null): void 93    { - 94        $this->update([ - 95            'approval_status' => 'approved', - 96            'approved_at' => now(), - 97            'approved_by' => $approvedBy, - 98        ]); + 94        $this->update([ + 95            'approval_status' => 'approved', + 96            'approved_at' => now(), + 97            'approved_by' => $approvedBy, + 98        ]); 99 100        // Fire event to trigger publishing - 101        event(new ArticleApproved($this)); + 101        event(new ArticleApproved($this)); 102    } 103 104    public function reject(string $rejectedBy = null): void 105    { - 106        $this->update([ - 107            'approval_status' => 'rejected', - 108            'approved_at' => now(), - 109            'approved_by' => $rejectedBy, - 110        ]); + 106        $this->update([ + 107            'approval_status' => 'rejected', + 108            'approved_at' => now(), + 109            'approved_by' => $rejectedBy, + 110        ]); 111    } 112 113    public function canBePublished(): bool 114    { - 115        if (!$this->isValid()) { - 116            return false; + 115        if (!$this->isValid()) { + 116            return false; 117        } 118 119        // If approval system is disabled, auto-approve valid articles - 120        if (!\App\Models\Setting::isPublishingApprovalsEnabled()) { - 121            return true; + 120        if (!\App\Models\Setting::isPublishingApprovalsEnabled()) { + 121            return true; 122        } 123 124        // If approval system is enabled, only approved articles can be published - 125        return $this->isApproved(); + 125        return $this->isApproved(); 126    } 127 128    /** @@ -480,7 +480,7 @@ 130     */ 131    public function articlePublication(): HasOne 132    { - 133        return $this->hasOne(ArticlePublication::class); + 133        return $this->hasOne(ArticlePublication::class); 134    } 135 136    /** @@ -488,14 +488,14 @@ 138     */ 139    public function feed(): BelongsTo 140    { - 141        return $this->belongsTo(Feed::class); + 141        return $this->belongsTo(Feed::class); 142    } 143 144    protected static function booted(): void 145    { - 146        static::created(function ($article) { - 147            event(new NewArticleFetched($article)); - 148        }); + 146        static::created(function ($article) { + 147            event(new NewArticleFetched($article)); + 148        }); 149    } 150} @@ -508,7 +508,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/ArticlePublication.php.html b/backend/coverage-report/Models/ArticlePublication.php.html index 1fd9d35..8499f97 100644 --- a/backend/coverage-report/Models/ArticlePublication.php.html +++ b/backend/coverage-report/Models/ArticlePublication.php.html @@ -182,7 +182,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/Feed.php.html b/backend/coverage-report/Models/Feed.php.html index 5c7f160..bedfcc7 100644 --- a/backend/coverage-report/Models/Feed.php.html +++ b/backend/coverage-report/Models/Feed.php.html @@ -347,7 +347,7 @@ 107     */ 108    public function articles(): HasMany 109    { - 110        return $this->hasMany(Article::class); + 110        return $this->hasMany(Article::class); 111    } 112 113    /** @@ -368,7 +368,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/Keyword.php.html b/backend/coverage-report/Models/Keyword.php.html index aa017eb..8e5f537 100644 --- a/backend/coverage-report/Models/Keyword.php.html +++ b/backend/coverage-report/Models/Keyword.php.html @@ -209,7 +209,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/Language.php.html b/backend/coverage-report/Models/Language.php.html index 4ad49cd..3d09e11 100644 --- a/backend/coverage-report/Models/Language.php.html +++ b/backend/coverage-report/Models/Language.php.html @@ -234,7 +234,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/Log.php.html b/backend/coverage-report/Models/Log.php.html index 09cf2a8..19071ef 100644 --- a/backend/coverage-report/Models/Log.php.html +++ b/backend/coverage-report/Models/Log.php.html @@ -86,7 +86,7 @@ 8use Illuminate\Support\Carbon; 9 10/** - 11 * @method static create(array<string, mixed> $array) + 11 * @method static create(array $array) 12 * @property LogLevelEnum $level 13 * @property string $message 14 * @property array<string, mixed> $context @@ -96,7 +96,7 @@ 18class Log extends Model 19{ 20    use HasFactory; - 21     + 21 22    protected $table = 'logs'; 23 24    protected $fillable = [ @@ -122,7 +122,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/PlatformAccount.php.html b/backend/coverage-report/Models/PlatformAccount.php.html index cda5852..d8f41a1 100644 --- a/backend/coverage-report/Models/PlatformAccount.php.html +++ b/backend/coverage-report/Models/PlatformAccount.php.html @@ -370,7 +370,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/PlatformChannel.php.html b/backend/coverage-report/Models/PlatformChannel.php.html index 0006fa8..8578d20 100644 --- a/backend/coverage-report/Models/PlatformChannel.php.html +++ b/backend/coverage-report/Models/PlatformChannel.php.html @@ -373,7 +373,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/PlatformChannelPost.php.html b/backend/coverage-report/Models/PlatformChannelPost.php.html index b5cbfa6..b6f644e 100644 --- a/backend/coverage-report/Models/PlatformChannelPost.php.html +++ b/backend/coverage-report/Models/PlatformChannelPost.php.html @@ -241,7 +241,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/PlatformInstance.php.html b/backend/coverage-report/Models/PlatformInstance.php.html index 69b599e..57c3799 100644 --- a/backend/coverage-report/Models/PlatformInstance.php.html +++ b/backend/coverage-report/Models/PlatformInstance.php.html @@ -245,7 +245,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/Route.php.html b/backend/coverage-report/Models/Route.php.html index f2ec00e..2df2c67 100644 --- a/backend/coverage-report/Models/Route.php.html +++ b/backend/coverage-report/Models/Route.php.html @@ -249,7 +249,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/Setting.php.html b/backend/coverage-report/Models/Setting.php.html index d9854c5..7b7a02d 100644 --- a/backend/coverage-report/Models/Setting.php.html +++ b/backend/coverage-report/Models/Setting.php.html @@ -43,61 +43,61 @@ - Total -
-
- 50.00% covered (danger) + Total +
+
+ 100.00% covered (success)
-
50.00%
-
5 / 10
-
-
- 37.50% covered (danger) +
100.00%
+
10 / 10
+
+
+ 100.00% covered (success)
-
37.50%
-
3 / 8
- CRAP -
-
- 0.00% covered (danger) +
100.00%
+
8 / 8
+ CRAP +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
- Setting -
-
- 50.00% covered (danger) + Setting +
+
+ 100.00% covered (success)
-
50.00%
-
5 / 10
-
-
- 37.50% covered (danger) +
100.00%
+
10 / 10
+
+
+ 100.00% covered (success)
-
37.50%
-
3 / 8
- 22.50 -
-
- 0.00% covered (danger) +
100.00%
+
8 / 8
+ 10 +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
@@ -123,25 +123,25 @@ -  set -
-
- 0.00% covered (danger) +  set +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + @@ -167,25 +167,25 @@ -  setBool -
-
- 0.00% covered (danger) +  setBool +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 6 - +
100.00%
+
1 / 1
+ 2 + @@ -211,69 +211,69 @@ -  setArticleProcessingEnabled -
-
- 0.00% covered (danger) +  setArticleProcessingEnabled +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  isPublishingApprovalsEnabled -
-
- 0.00% covered (danger) +  isPublishingApprovalsEnabled +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + -  setPublishingApprovalsEnabled -
-
- 0.00% covered (danger) +  setPublishingApprovalsEnabled +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + @@ -294,46 +294,46 @@ 10 11    public static function get(string $key, mixed $default = null): mixed 12    { - 13        $setting = static::where('key', $key)->first(); + 13        $setting = static::where('key', $key)->first(); 14         - 15        return $setting ? $setting->value : $default; + 15        return $setting ? $setting->value : $default; 16    } 17 18    public static function set(string $key, mixed $value): void 19    { - 20        static::updateOrCreate(['key' => $key], ['value' => $value]); + 20        static::updateOrCreate(['key' => $key], ['value' => $value]); 21    } 22 23    public static function getBool(string $key, bool $default = false): bool 24    { - 25        $value = static::get($key, $default); + 25        $value = static::get($key, $default); 26         - 27        return filter_var($value, FILTER_VALIDATE_BOOLEAN); + 27        return filter_var($value, FILTER_VALIDATE_BOOLEAN); 28    } 29 30    public static function setBool(string $key, bool $value): void 31    { - 32        static::set($key, $value ? '1' : '0'); + 32        static::set($key, $value ? '1' : '0'); 33    } 34 35    public static function isArticleProcessingEnabled(): bool 36    { - 37        return static::getBool('article_processing_enabled', true); + 37        return static::getBool('article_processing_enabled', true); 38    } 39 40    public static function setArticleProcessingEnabled(bool $enabled): void 41    { - 42        static::setBool('article_processing_enabled', $enabled); + 42        static::setBool('article_processing_enabled', $enabled); 43    } 44 45    public static function isPublishingApprovalsEnabled(): bool 46    { - 47        return static::getBool('enable_publishing_approvals', false); + 47        return static::getBool('enable_publishing_approvals', false); 48    } 49 50    public static function setPublishingApprovalsEnabled(bool $enabled): void 51    { - 52        static::setBool('enable_publishing_approvals', $enabled); + 52        static::setBool('enable_publishing_approvals', $enabled); 53    } 54} @@ -346,7 +346,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/User.php.html b/backend/coverage-report/Models/User.php.html index 082706a..371f039 100644 --- a/backend/coverage-report/Models/User.php.html +++ b/backend/coverage-report/Models/User.php.html @@ -187,7 +187,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Models/dashboard.html b/backend/coverage-report/Models/dashboard.html index e199d95..194c4da 100644 --- a/backend/coverage-report/Models/dashboard.html +++ b/backend/coverage-report/Models/dashboard.html @@ -64,9 +64,7 @@

Insufficient Coverage

App\Models\PlatformChannelPost0% App\Models\PlatformInstance0% App\Models\Feed8% - App\Models\Article48% App\Models\Route50% - App\Models\Setting50% App\Models\Language60% @@ -86,8 +84,6 @@

Project Risks

App\Models\Feed143 App\Models\PlatformAccount110 - App\Models\Article45 - App\Models\Setting22 @@ -125,11 +121,6 @@

Insufficient Coverage

- isPending0% - isRejected0% - approve0% - reject0% - canBePublished0% getTypeDisplayAttribute0% getStatusAttribute0% channels0% @@ -158,12 +149,6 @@

Insufficient Coverage

languages0% findByUrl0% keywords0% - set0% - setBool0% - setArticleProcessingEnabled0% - isPublishingApprovalsEnabled0% - setPublishingApprovalsEnabled0% - isValid60% @@ -182,11 +167,8 @@

Project Risks

getStatusAttribute30 getTypeDisplayAttribute20 - canBePublished12 password12 apiToken12 - setBool6 - isValid3 @@ -196,7 +178,7 @@

Project Risks

@@ -215,7 +197,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([5,1,0,0,0,1,2,1,0,0,0,3], "Class Coverage")) + .datum(getCoverageDistributionData([5,1,0,0,0,0,1,1,0,0,0,5], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -233,7 +215,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([38,0,0,0,0,0,0,1,0,0,0,15], "Method Coverage")) + .datum(getCoverageDistributionData([28,0,0,0,0,0,0,0,0,0,0,26], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -283,7 +265,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[48.717948717948715,15,"App\\Models\\Article<\/a>"],[100,1,"App\\Models\\ArticlePublication<\/a>"],[8.333333333333332,13,"App\\Models\\Feed<\/a>"],[0,2,"App\\Models\\Keyword<\/a>"],[60,3,"App\\Models\\Language<\/a>"],[100,0,"App\\Models\\Log<\/a>"],[0,10,"App\\Models\\PlatformAccount<\/a>"],[0,7,"App\\Models\\PlatformChannel<\/a>"],[0,3,"App\\Models\\PlatformChannelPost<\/a>"],[0,3,"App\\Models\\PlatformInstance<\/a>"],[50,3,"App\\Models\\Route<\/a>"],[50,10,"App\\Models\\Setting<\/a>"],[100,1,"App\\Models\\User<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[100,15,"App\\Models\\Article<\/a>"],[100,1,"App\\Models\\ArticlePublication<\/a>"],[8.333333333333332,13,"App\\Models\\Feed<\/a>"],[0,2,"App\\Models\\Keyword<\/a>"],[60,3,"App\\Models\\Language<\/a>"],[100,0,"App\\Models\\Log<\/a>"],[0,10,"App\\Models\\PlatformAccount<\/a>"],[0,7,"App\\Models\\PlatformChannel<\/a>"],[0,3,"App\\Models\\PlatformChannelPost<\/a>"],[0,3,"App\\Models\\PlatformInstance<\/a>"],[50,3,"App\\Models\\Route<\/a>"],[100,10,"App\\Models\\Setting<\/a>"],[100,1,"App\\Models\\User<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -307,7 +289,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[100,1,"
App\\Models\\Article::casts<\/a>"],[60,3,"App\\Models\\Article::isValid<\/a>"],[100,1,"App\\Models\\Article::isApproved<\/a>"],[0,1,"App\\Models\\Article::isPending<\/a>"],[0,1,"App\\Models\\Article::isRejected<\/a>"],[0,1,"App\\Models\\Article::approve<\/a>"],[0,1,"App\\Models\\Article::reject<\/a>"],[0,3,"App\\Models\\Article::canBePublished<\/a>"],[100,1,"App\\Models\\Article::articlePublication<\/a>"],[100,1,"App\\Models\\Article::feed<\/a>"],[100,1,"App\\Models\\Article::booted<\/a>"],[100,1,"App\\Models\\ArticlePublication::article<\/a>"],[0,4,"App\\Models\\Feed::getTypeDisplayAttribute<\/a>"],[0,5,"App\\Models\\Feed::getStatusAttribute<\/a>"],[0,1,"App\\Models\\Feed::channels<\/a>"],[0,1,"App\\Models\\Feed::activeChannels<\/a>"],[100,1,"App\\Models\\Feed::articles<\/a>"],[100,1,"App\\Models\\Feed::language<\/a>"],[0,1,"App\\Models\\Keyword::feed<\/a>"],[0,1,"App\\Models\\Keyword::platformChannel<\/a>"],[100,1,"App\\Models\\Language::platformInstances<\/a>"],[0,1,"App\\Models\\Language::platformChannels<\/a>"],[0,1,"App\\Models\\Language::feeds<\/a>"],[0,3,"App\\Models\\PlatformAccount::password<\/a>"],[0,3,"App\\Models\\PlatformAccount::apiToken<\/a>"],[0,1,"App\\Models\\PlatformAccount::getActive<\/a>"],[0,1,"App\\Models\\PlatformAccount::setAsActive<\/a>"],[0,1,"App\\Models\\PlatformAccount::channels<\/a>"],[0,1,"App\\Models\\PlatformAccount::activeChannels<\/a>"],[0,1,"App\\Models\\PlatformChannel::platformInstance<\/a>"],[0,1,"App\\Models\\PlatformChannel::platformAccounts<\/a>"],[0,1,"App\\Models\\PlatformChannel::activePlatformAccounts<\/a>"],[0,1,"App\\Models\\PlatformChannel::getFullNameAttribute<\/a>"],[0,1,"App\\Models\\PlatformChannel::feeds<\/a>"],[0,1,"App\\Models\\PlatformChannel::activeFeeds<\/a>"],[0,1,"App\\Models\\PlatformChannel::language<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::casts<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::urlExists<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::storePost<\/a>"],[0,1,"App\\Models\\PlatformInstance::channels<\/a>"],[0,1,"App\\Models\\PlatformInstance::languages<\/a>"],[0,1,"App\\Models\\PlatformInstance::findByUrl<\/a>"],[100,1,"App\\Models\\Route::feed<\/a>"],[100,1,"App\\Models\\Route::platformChannel<\/a>"],[0,1,"App\\Models\\Route::keywords<\/a>"],[100,2,"App\\Models\\Setting::get<\/a>"],[0,1,"App\\Models\\Setting::set<\/a>"],[100,1,"App\\Models\\Setting::getBool<\/a>"],[0,2,"App\\Models\\Setting::setBool<\/a>"],[100,1,"App\\Models\\Setting::isArticleProcessingEnabled<\/a>"],[0,1,"App\\Models\\Setting::setArticleProcessingEnabled<\/a>"],[0,1,"App\\Models\\Setting::isPublishingApprovalsEnabled<\/a>"],[0,1,"App\\Models\\Setting::setPublishingApprovalsEnabled<\/a>"],[100,1,"App\\Models\\User::casts<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[100,1,"App\\Models\\Article::casts<\/a>"],[100,3,"App\\Models\\Article::isValid<\/a>"],[100,1,"App\\Models\\Article::isApproved<\/a>"],[100,1,"App\\Models\\Article::isPending<\/a>"],[100,1,"App\\Models\\Article::isRejected<\/a>"],[100,1,"App\\Models\\Article::approve<\/a>"],[100,1,"App\\Models\\Article::reject<\/a>"],[100,3,"App\\Models\\Article::canBePublished<\/a>"],[100,1,"App\\Models\\Article::articlePublication<\/a>"],[100,1,"App\\Models\\Article::feed<\/a>"],[100,1,"App\\Models\\Article::booted<\/a>"],[100,1,"App\\Models\\ArticlePublication::article<\/a>"],[0,4,"App\\Models\\Feed::getTypeDisplayAttribute<\/a>"],[0,5,"App\\Models\\Feed::getStatusAttribute<\/a>"],[0,1,"App\\Models\\Feed::channels<\/a>"],[0,1,"App\\Models\\Feed::activeChannels<\/a>"],[100,1,"App\\Models\\Feed::articles<\/a>"],[100,1,"App\\Models\\Feed::language<\/a>"],[0,1,"App\\Models\\Keyword::feed<\/a>"],[0,1,"App\\Models\\Keyword::platformChannel<\/a>"],[100,1,"App\\Models\\Language::platformInstances<\/a>"],[0,1,"App\\Models\\Language::platformChannels<\/a>"],[0,1,"App\\Models\\Language::feeds<\/a>"],[0,3,"App\\Models\\PlatformAccount::password<\/a>"],[0,3,"App\\Models\\PlatformAccount::apiToken<\/a>"],[0,1,"App\\Models\\PlatformAccount::getActive<\/a>"],[0,1,"App\\Models\\PlatformAccount::setAsActive<\/a>"],[0,1,"App\\Models\\PlatformAccount::channels<\/a>"],[0,1,"App\\Models\\PlatformAccount::activeChannels<\/a>"],[0,1,"App\\Models\\PlatformChannel::platformInstance<\/a>"],[0,1,"App\\Models\\PlatformChannel::platformAccounts<\/a>"],[0,1,"App\\Models\\PlatformChannel::activePlatformAccounts<\/a>"],[0,1,"App\\Models\\PlatformChannel::getFullNameAttribute<\/a>"],[0,1,"App\\Models\\PlatformChannel::feeds<\/a>"],[0,1,"App\\Models\\PlatformChannel::activeFeeds<\/a>"],[0,1,"App\\Models\\PlatformChannel::language<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::casts<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::urlExists<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::storePost<\/a>"],[0,1,"App\\Models\\PlatformInstance::channels<\/a>"],[0,1,"App\\Models\\PlatformInstance::languages<\/a>"],[0,1,"App\\Models\\PlatformInstance::findByUrl<\/a>"],[100,1,"App\\Models\\Route::feed<\/a>"],[100,1,"App\\Models\\Route::platformChannel<\/a>"],[0,1,"App\\Models\\Route::keywords<\/a>"],[100,2,"App\\Models\\Setting::get<\/a>"],[100,1,"App\\Models\\Setting::set<\/a>"],[100,1,"App\\Models\\Setting::getBool<\/a>"],[100,2,"App\\Models\\Setting::setBool<\/a>"],[100,1,"App\\Models\\Setting::isArticleProcessingEnabled<\/a>"],[100,1,"App\\Models\\Setting::setArticleProcessingEnabled<\/a>"],[100,1,"App\\Models\\Setting::isPublishingApprovalsEnabled<\/a>"],[100,1,"App\\Models\\Setting::setPublishingApprovalsEnabled<\/a>"],[100,1,"App\\Models\\User::casts<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Models/index.html b/backend/coverage-report/Models/index.html index c0bab5c..e798fd9 100644 --- a/backend/coverage-report/Models/index.html +++ b/backend/coverage-report/Models/index.html @@ -45,57 +45,57 @@ Total
-
- 23.68% covered (danger) +
+ 40.13% covered (danger)
-
23.68%
-
36 / 152
+
40.13%
+
61 / 152
-
- 27.78% covered (danger) +
+ 48.15% covered (danger)
-
27.78%
-
15 / 54
+
48.15%
+
26 / 54
-
- 16.67% covered (danger) +
+ 33.33% covered (danger)
-
16.67%
-
2 / 12
+
33.33%
+
4 / 12
-
Article.php -
-
- 48.72% covered (danger) + Article.php +
+
+ 100.00% covered (success)
-
48.72%
-
19 / 39
-
-
- 45.45% covered (danger) +
100.00%
+
39 / 39
+
+
+ 100.00% covered (success)
-
45.45%
-
5 / 11
-
-
- 0.00% covered (danger) +
100.00%
+
11 / 11
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
@@ -364,31 +364,31 @@ - Setting.php -
-
- 50.00% covered (danger) + Setting.php +
+
+ 100.00% covered (success)
-
50.00%
-
5 / 10
-
-
- 37.50% covered (danger) +
100.00%
+
10 / 10
+
+
+ 100.00% covered (success)
-
37.50%
-
3 / 8
-
-
- 0.00% covered (danger) +
100.00%
+
8 / 8
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
@@ -432,7 +432,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Modules/Lemmy/LemmyRequest.php.html b/backend/coverage-report/Modules/Lemmy/LemmyRequest.php.html index f19b0d8..374289a 100644 --- a/backend/coverage-report/Modules/Lemmy/LemmyRequest.php.html +++ b/backend/coverage-report/Modules/Lemmy/LemmyRequest.php.html @@ -261,7 +261,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Modules/Lemmy/Services/LemmyApiService.php.html b/backend/coverage-report/Modules/Lemmy/Services/LemmyApiService.php.html index af17901..6cda237 100644 --- a/backend/coverage-report/Modules/Lemmy/Services/LemmyApiService.php.html +++ b/backend/coverage-report/Modules/Lemmy/Services/LemmyApiService.php.html @@ -424,7 +424,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Modules/Lemmy/Services/LemmyPublisher.php.html b/backend/coverage-report/Modules/Lemmy/Services/LemmyPublisher.php.html index e7af1c4..f4ba343 100644 --- a/backend/coverage-report/Modules/Lemmy/Services/LemmyPublisher.php.html +++ b/backend/coverage-report/Modules/Lemmy/Services/LemmyPublisher.php.html @@ -209,7 +209,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Modules/Lemmy/Services/dashboard.html b/backend/coverage-report/Modules/Lemmy/Services/dashboard.html index 2dde052..4d3274f 100644 --- a/backend/coverage-report/Modules/Lemmy/Services/dashboard.html +++ b/backend/coverage-report/Modules/Lemmy/Services/dashboard.html @@ -154,7 +154,7 @@

Project Risks

diff --git a/backend/coverage-report/Modules/Lemmy/Services/index.html b/backend/coverage-report/Modules/Lemmy/Services/index.html index a1573f5..c79b70e 100644 --- a/backend/coverage-report/Modules/Lemmy/Services/index.html +++ b/backend/coverage-report/Modules/Lemmy/Services/index.html @@ -141,7 +141,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Modules/Lemmy/dashboard.html b/backend/coverage-report/Modules/Lemmy/dashboard.html index 4386e1b..a1e4419 100644 --- a/backend/coverage-report/Modules/Lemmy/dashboard.html +++ b/backend/coverage-report/Modules/Lemmy/dashboard.html @@ -161,7 +161,7 @@

Project Risks

diff --git a/backend/coverage-report/Modules/Lemmy/index.html b/backend/coverage-report/Modules/Lemmy/index.html index 027b140..4392be7 100644 --- a/backend/coverage-report/Modules/Lemmy/index.html +++ b/backend/coverage-report/Modules/Lemmy/index.html @@ -140,7 +140,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Modules/dashboard.html b/backend/coverage-report/Modules/dashboard.html index de28421..4535c46 100644 --- a/backend/coverage-report/Modules/dashboard.html +++ b/backend/coverage-report/Modules/dashboard.html @@ -160,7 +160,7 @@

Project Risks

diff --git a/backend/coverage-report/Modules/index.html b/backend/coverage-report/Modules/index.html index 5f487b7..7781b5d 100644 --- a/backend/coverage-report/Modules/index.html +++ b/backend/coverage-report/Modules/index.html @@ -111,7 +111,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Providers/AppServiceProvider.php.html b/backend/coverage-report/Providers/AppServiceProvider.php.html index b147cb2..727e57c 100644 --- a/backend/coverage-report/Providers/AppServiceProvider.php.html +++ b/backend/coverage-report/Providers/AppServiceProvider.php.html @@ -190,41 +190,41 @@ 16{ 17    public function register(): void 18    { - 19    } + 19    } 20 21    public function boot(): void 22    { - 23        Event::listen( - 24            ExceptionOccurred::class, - 25            LogExceptionToDatabase::class, - 26        ); + 23        Event::listen( + 24            ExceptionOccurred::class, + 25            LogExceptionToDatabase::class, + 26        ); 27 - 28        Event::listen( - 29            \App\Events\NewArticleFetched::class, - 30            \App\Listeners\ValidateArticleListener::class, - 31        ); + 28        Event::listen( + 29            \App\Events\NewArticleFetched::class, + 30            \App\Listeners\ValidateArticleListener::class, + 31        ); 32 - 33        Event::listen( - 34            \App\Events\ArticleApproved::class, - 35            \App\Listeners\PublishApprovedArticle::class, - 36        ); + 33        Event::listen( + 34            \App\Events\ArticleApproved::class, + 35            \App\Listeners\PublishApprovedArticle::class, + 36        ); 37 - 38        Event::listen( - 39            \App\Events\ArticleReadyToPublish::class, - 40            \App\Listeners\PublishArticle::class, - 41        ); + 38        Event::listen( + 39            \App\Events\ArticleReadyToPublish::class, + 40            \App\Listeners\PublishArticle::class, + 41        ); 42 - 43        Event::listen( - 44            \App\Events\ExceptionLogged::class, - 45            \App\Listeners\LogExceptionToDatabase::class, - 46        ); + 43        Event::listen( + 44            \App\Events\ExceptionLogged::class, + 45            \App\Listeners\LogExceptionToDatabase::class, + 46        ); 47 - 48        app()->make(ExceptionHandler::class) - 49            ->reportable(function (Throwable $e) { + 48        app()->make(ExceptionHandler::class) + 49            ->reportable(function (Throwable $e) { 50                $level = $this->mapExceptionToLogLevel($e); 51 52                ExceptionOccurred::dispatch($e, $level, $e->getMessage(), []); - 53            }); + 53            }); 54    } 55 56    private function mapExceptionToLogLevel(Throwable $exception): LogLevelEnum @@ -246,7 +246,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Providers/HorizonServiceProvider.php.html b/backend/coverage-report/Providers/HorizonServiceProvider.php.html index 6e366a6..bf424d8 100644 --- a/backend/coverage-report/Providers/HorizonServiceProvider.php.html +++ b/backend/coverage-report/Providers/HorizonServiceProvider.php.html @@ -165,7 +165,7 @@ 13     */ 14    public function boot(): void 15    { - 16        parent::boot(); + 16        parent::boot(); 17 18        // Horizon::routeSmsNotificationsTo('15556667777'); 19        // Horizon::routeMailNotificationsTo('example@example.com'); @@ -179,9 +179,9 @@ 27     */ 28    protected function gate(): void 29    { - 30        Gate::define('viewHorizon', function ($user = null) { + 30        Gate::define('viewHorizon', function ($user = null) { 31            return true; - 32        }); + 32        }); 33    } 34} @@ -194,7 +194,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Providers/dashboard.html b/backend/coverage-report/Providers/dashboard.html index c5f6677..7e80d48 100644 --- a/backend/coverage-report/Providers/dashboard.html +++ b/backend/coverage-report/Providers/dashboard.html @@ -142,7 +142,7 @@

Project Risks

diff --git a/backend/coverage-report/Providers/index.html b/backend/coverage-report/Providers/index.html index 161531e..02ee178 100644 --- a/backend/coverage-report/Providers/index.html +++ b/backend/coverage-report/Providers/index.html @@ -139,7 +139,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Article/ArticleFetcher.php.html b/backend/coverage-report/Services/Article/ArticleFetcher.php.html index 148ac09..fc592b7 100644 --- a/backend/coverage-report/Services/Article/ArticleFetcher.php.html +++ b/backend/coverage-report/Services/Article/ArticleFetcher.php.html @@ -46,13 +46,13 @@ Total
-
- 43.18% covered (danger) +
+ 45.45% covered (danger)
-
43.18%
-
19 / 44
+
45.45%
+
20 / 44
20.00% covered (danger) @@ -75,13 +75,13 @@ ArticleFetcher
-
- 43.18% covered (danger) +
+ 45.45% covered (danger)
-
43.18%
-
19 / 44
+
45.45%
+
20 / 44
20.00% covered (danger) @@ -90,7 +90,7 @@
20.00%
1 / 5
- 33.19 + 30.64
0.00% covered (danger) @@ -170,13 +170,13 @@  fetchArticleData
-
- 77.78% covered (warning) +
+ 88.89% covered (warning)
-
77.78%
-
7 / 9
+
88.89%
+
8 / 9
0.00% covered (danger) @@ -185,7 +185,7 @@
0.00%
0 / 1
- 2.04 + 2.01 @@ -303,7 +303,7 @@ 84    { 85        try { 86            $html = HttpFetcher::fetchHtml($article->url); - 87            $parser = ArticleParserFactory::getParser($article->url); + 87            $parser = ArticleParserFactory::getParser($article->url); 88 89            return $parser->extractData($html); 90        } catch (Exception $e) { @@ -340,7 +340,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Article/ValidationService.php.html b/backend/coverage-report/Services/Article/ValidationService.php.html index 09cc7ef..660c8d1 100644 --- a/backend/coverage-report/Services/Article/ValidationService.php.html +++ b/backend/coverage-report/Services/Article/ValidationService.php.html @@ -214,7 +214,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Article/dashboard.html b/backend/coverage-report/Services/Article/dashboard.html index 314e58c..d5c22d0 100644 --- a/backend/coverage-report/Services/Article/dashboard.html +++ b/backend/coverage-report/Services/Article/dashboard.html @@ -59,7 +59,7 @@

Insufficient Coverage

-
App\Services\Article\ArticleFetcher43% + App\Services\Article\ArticleFetcher45% App\Services\Article\ValidationService48% @@ -77,7 +77,7 @@

Project Risks

- App\Services\Article\ArticleFetcher33 + App\Services\Article\ArticleFetcher30 App\Services\Article\ValidationService8 @@ -121,7 +121,7 @@

Insufficient Coverage

getArticlesFromWebsiteFeed38% getArticlesFromFeed44% validate66% - fetchArticleData77% + fetchArticleData88% @@ -153,7 +153,7 @@

Project Risks

@@ -190,7 +190,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([2,0,0,0,1,1,0,1,1,0,0,1], "Method Coverage")) + .datum(getCoverageDistributionData([2,0,0,0,1,1,0,1,0,1,0,1], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -240,7 +240,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[43.18181818181818,11,"App\\Services\\Article\\ArticleFetcher<\/a>"],[48,5,"App\\Services\\Article\\ValidationService<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[45.45454545454545,11,"App\\Services\\Article\\ArticleFetcher<\/a>"],[48,5,"App\\Services\\Article\\ValidationService<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -264,7 +264,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[44.44444444444444,3,"
App\\Services\\Article\\ArticleFetcher::getArticlesFromFeed<\/a>"],[100,1,"App\\Services\\Article\\ArticleFetcher::getArticlesFromRssFeed<\/a>"],[38.88888888888889,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromWebsiteFeed<\/a>"],[77.77777777777779,2,"App\\Services\\Article\\ArticleFetcher::fetchArticleData<\/a>"],[0,2,"App\\Services\\Article\\ArticleFetcher::saveArticle<\/a>"],[66.66666666666666,2,"App\\Services\\Article\\ValidationService::validate<\/a>"],[0,3,"App\\Services\\Article\\ValidationService::validateByKeywords<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[44.44444444444444,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromFeed<\/a>"],[100,1,"App\\Services\\Article\\ArticleFetcher::getArticlesFromRssFeed<\/a>"],[38.88888888888889,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromWebsiteFeed<\/a>"],[88.88888888888889,2,"App\\Services\\Article\\ArticleFetcher::fetchArticleData<\/a>"],[0,2,"App\\Services\\Article\\ArticleFetcher::saveArticle<\/a>"],[66.66666666666666,2,"App\\Services\\Article\\ValidationService::validate<\/a>"],[0,3,"App\\Services\\Article\\ValidationService::validateByKeywords<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Services/Article/index.html b/backend/coverage-report/Services/Article/index.html index 76da11c..3ab0cec 100644 --- a/backend/coverage-report/Services/Article/index.html +++ b/backend/coverage-report/Services/Article/index.html @@ -46,13 +46,13 @@ Total
-
- 44.93% covered (danger) +
+ 46.38% covered (danger)
-
44.93%
-
31 / 69
+
46.38%
+
32 / 69
14.29% covered (danger) @@ -74,13 +74,13 @@ ArticleFetcher.php
-
- 43.18% covered (danger) +
+ 45.45% covered (danger)
-
43.18%
-
19 / 44
+
45.45%
+
20 / 44
20.00% covered (danger) @@ -140,7 +140,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Auth/LemmyAuthService.php.html b/backend/coverage-report/Services/Auth/LemmyAuthService.php.html index 2a61eab..d12fbc4 100644 --- a/backend/coverage-report/Services/Auth/LemmyAuthService.php.html +++ b/backend/coverage-report/Services/Auth/LemmyAuthService.php.html @@ -180,7 +180,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Auth/dashboard.html b/backend/coverage-report/Services/Auth/dashboard.html index a508d64..85de265 100644 --- a/backend/coverage-report/Services/Auth/dashboard.html +++ b/backend/coverage-report/Services/Auth/dashboard.html @@ -141,7 +141,7 @@

Project Risks

diff --git a/backend/coverage-report/Services/Auth/index.html b/backend/coverage-report/Services/Auth/index.html index 75438b6..20dbcce 100644 --- a/backend/coverage-report/Services/Auth/index.html +++ b/backend/coverage-report/Services/Auth/index.html @@ -112,7 +112,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/DashboardStatsService.php.html b/backend/coverage-report/Services/DashboardStatsService.php.html index 1bcc7c1..05064b0 100644 --- a/backend/coverage-report/Services/DashboardStatsService.php.html +++ b/backend/coverage-report/Services/DashboardStatsService.php.html @@ -45,59 +45,59 @@ Total
-
- 95.00% covered (success) +
+ 100.00% covered (success)
-
95.00%
-
38 / 40
-
-
- 75.00% covered (warning) +
100.00%
+
40 / 40
+
+
+ 100.00% covered (success)
-
75.00%
-
3 / 4
- CRAP -
-
- 0.00% covered (danger) +
100.00%
+
4 / 4
+ CRAP +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
DashboardStatsService
-
- 95.00% covered (success) +
+ 100.00% covered (success)
-
95.00%
-
38 / 40
-
-
- 75.00% covered (warning) +
100.00%
+
40 / 40
+
+
+ 100.00% covered (success)
-
75.00%
-
3 / 4
- 13 -
-
- 0.00% covered (danger) +
100.00%
+
4 / 4
+ 13 +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
@@ -145,25 +145,25 @@ -  getDateRange -
-
- 77.78% covered (warning) +  getDateRange +
+
+ 100.00% covered (success)
-
77.78%
-
7 / 9
-
-
- 0.00% covered (danger) +
100.00%
+
9 / 9
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 7.54 - +
100.00%
+
1 / 1
+ 7 + @@ -209,31 +209,31 @@ 13     */ 14    public function getStats(string $period = 'today'): array 15    { - 16        $dateRange = $this->getDateRange($period); + 16        $dateRange = $this->getDateRange($period); 17         18        // Get articles fetched for the period - 19        $articlesFetchedQuery = Article::query(); - 20        if ($dateRange) { - 21            $articlesFetchedQuery->whereBetween('created_at', $dateRange); + 19        $articlesFetchedQuery = Article::query(); + 20        if ($dateRange) { + 21            $articlesFetchedQuery->whereBetween('created_at', $dateRange); 22        } - 23        $articlesFetched = $articlesFetchedQuery->count(); + 23        $articlesFetched = $articlesFetchedQuery->count(); 24 25        // Get articles published for the period - 26        $articlesPublishedQuery = ArticlePublication::query() - 27            ->whereNotNull('published_at'); - 28        if ($dateRange) { - 29            $articlesPublishedQuery->whereBetween('published_at', $dateRange); + 26        $articlesPublishedQuery = ArticlePublication::query() + 27            ->whereNotNull('published_at'); + 28        if ($dateRange) { + 29            $articlesPublishedQuery->whereBetween('published_at', $dateRange); 30        } - 31        $articlesPublished = $articlesPublishedQuery->count(); + 31        $articlesPublished = $articlesPublishedQuery->count(); 32 33        // Calculate published percentage - 34        $publishedPercentage = $articlesFetched > 0 ? round(($articlesPublished / $articlesFetched) * 100, 1) : 0.0; + 34        $publishedPercentage = $articlesFetched > 0 ? round(($articlesPublished / $articlesFetched) * 100, 1) : 0.0; 35 - 36        return [ - 37            'articles_fetched' => $articlesFetched, - 38            'articles_published' => $articlesPublished, - 39            'published_percentage' => $publishedPercentage, - 40        ]; + 36        return [ + 37            'articles_fetched' => $articlesFetched, + 38            'articles_published' => $articlesPublished, + 39            'published_percentage' => $publishedPercentage, + 40        ]; 41    } 42 43    /** @@ -241,13 +241,13 @@ 45     */ 46    public function getAvailablePeriods(): array 47    { - 48        return [ - 49            'today' => 'Today', - 50            'week' => 'This Week', - 51            'month' => 'This Month', - 52            'year' => 'This Year', - 53            'all' => 'All Time', - 54        ]; + 48        return [ + 49            'today' => 'Today', + 50            'week' => 'This Week', + 51            'month' => 'This Month', + 52            'year' => 'This Year', + 53            'all' => 'All Time', + 54        ]; 55    } 56 57    /** @@ -255,16 +255,16 @@ 59     */ 60    private function getDateRange(string $period): ?array 61    { - 62        $now = Carbon::now(); + 62        $now = Carbon::now(); 63         - 64        return match ($period) { - 65            'today' => [$now->copy()->startOfDay(), $now->copy()->endOfDay()], - 66            'week' => [$now->copy()->startOfWeek(), $now->copy()->endOfWeek()], - 67            'month' => [$now->copy()->startOfMonth(), $now->copy()->endOfMonth()], - 68            'year' => [$now->copy()->startOfYear(), $now->copy()->endOfYear()], - 69            'all' => null, // No date filtering for all-time stats - 70            default => [$now->copy()->startOfDay(), $now->copy()->endOfDay()], - 71        }; + 64        return match ($period) { + 65            'today' => [$now->copy()->startOfDay(), $now->copy()->endOfDay()], + 66            'week' => [$now->copy()->startOfWeek(), $now->copy()->endOfWeek()], + 67            'month' => [$now->copy()->startOfMonth(), $now->copy()->endOfMonth()], + 68            'year' => [$now->copy()->startOfYear(), $now->copy()->endOfYear()], + 69            'all' => null, // No date filtering for all-time stats + 70            default => [$now->copy()->startOfDay(), $now->copy()->endOfDay()], + 71        }; 72    } 73 74    /** @@ -272,14 +272,14 @@ 76     */ 77    public function getSystemStats(): array 78    { - 79        return [ - 80            'total_feeds' => \App\Models\Feed::count(), - 81            'active_feeds' => \App\Models\Feed::where('is_active', true)->count(), - 82            'total_channels' => \App\Models\PlatformChannel::count(), - 83            'active_channels' => \App\Models\PlatformChannel::where('is_active', true)->count(), - 84            'total_routes' => \App\Models\Route::count(), - 85            'active_routes' => \App\Models\Route::where('is_active', true)->count(), - 86        ]; + 79        return [ + 80            'total_feeds' => \App\Models\Feed::count(), + 81            'active_feeds' => \App\Models\Feed::where('is_active', true)->count(), + 82            'total_channels' => \App\Models\PlatformChannel::count(), + 83            'active_channels' => \App\Models\PlatformChannel::where('is_active', true)->count(), + 84            'total_routes' => \App\Models\Route::count(), + 85            'active_routes' => \App\Models\Route::where('is_active', true)->count(), + 86        ]; 87    } 88} @@ -292,7 +292,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Factories/ArticleParserFactory.php.html b/backend/coverage-report/Services/Factories/ArticleParserFactory.php.html index db612a1..520b5b6 100644 --- a/backend/coverage-report/Services/Factories/ArticleParserFactory.php.html +++ b/backend/coverage-report/Services/Factories/ArticleParserFactory.php.html @@ -46,13 +46,13 @@ Total
-
- 0.00% covered (danger) +
+ 36.36% covered (danger)
-
0.00%
-
0 / 11
+
36.36%
+
4 / 11
0.00% covered (danger) @@ -75,13 +75,13 @@ ArticleParserFactory
-
- 0.00% covered (danger) +
+ 36.36% covered (danger)
-
0.00%
-
0 / 11
+
36.36%
+
4 / 11
0.00% covered (danger) @@ -90,7 +90,7 @@
0.00%
0 / 3
- 42 + 15.28
0.00% covered (danger) @@ -102,15 +102,15 @@ -  getParser -
-
- 0.00% covered (danger) +  getParser +
+
+ 80.00% covered (warning)
-
0.00%
-
0 / 5
+
80.00%
+
4 / 5
0.00% covered (danger) @@ -119,7 +119,7 @@
0.00%
0 / 1
- 12 + 3.07 @@ -194,15 +194,15 @@ 19 20    public static function getParser(string $url): ArticleParserInterface 21    { - 22        foreach (self::$parsers as $parserClass) { - 23            $parser = new $parserClass(); + 22        foreach (self::$parsers as $parserClass) { + 23            $parser = new $parserClass(); 24             - 25            if ($parser->canParse($url)) { + 25            if ($parser->canParse($url)) { 26                return $parser; 27            } 28        } 29 - 30        throw new Exception("No parser found for URL: {$url}"); + 30        throw new Exception("No parser found for URL: {$url}"); 31    } 32 33    /** @@ -236,7 +236,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Factories/HomepageParserFactory.php.html b/backend/coverage-report/Services/Factories/HomepageParserFactory.php.html index a3d9a70..4e69c55 100644 --- a/backend/coverage-report/Services/Factories/HomepageParserFactory.php.html +++ b/backend/coverage-report/Services/Factories/HomepageParserFactory.php.html @@ -206,7 +206,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Factories/dashboard.html b/backend/coverage-report/Services/Factories/dashboard.html index adab66e..41b5ec1 100644 --- a/backend/coverage-report/Services/Factories/dashboard.html +++ b/backend/coverage-report/Services/Factories/dashboard.html @@ -59,7 +59,7 @@

Insufficient Coverage

-
App\Services\Factories\ArticleParserFactory0% + App\Services\Factories\ArticleParserFactory36% App\Services\Factories\HomepageParserFactory87% @@ -77,7 +77,7 @@

Project Risks

- App\Services\Factories\ArticleParserFactory42 + App\Services\Factories\ArticleParserFactory15 App\Services\Factories\HomepageParserFactory5 @@ -116,9 +116,9 @@

Insufficient Coverage

- getParser0% getSupportedSources0% registerParser0% + getParser80% getParser80% @@ -136,8 +136,8 @@

Project Risks

- getParser12 registerParser6 + getParser3 getParser3 @@ -148,7 +148,7 @@

Project Risks

@@ -167,7 +167,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([1,0,0,0,0,0,0,0,0,1,0,0], "Class Coverage")) + .datum(getCoverageDistributionData([0,0,0,0,1,0,0,0,0,1,0,0], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -185,7 +185,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([3,0,0,0,0,0,0,0,0,1,0,1], "Method Coverage")) + .datum(getCoverageDistributionData([2,0,0,0,0,0,0,0,0,2,0,1], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -235,7 +235,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[0,6,"App\\Services\\Factories\\ArticleParserFactory<\/a>"],[87.5,5,"App\\Services\\Factories\\HomepageParserFactory<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[36.36363636363637,6,"App\\Services\\Factories\\ArticleParserFactory<\/a>"],[87.5,5,"App\\Services\\Factories\\HomepageParserFactory<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -259,7 +259,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[0,3,"
App\\Services\\Factories\\ArticleParserFactory::getParser<\/a>"],[0,1,"App\\Services\\Factories\\ArticleParserFactory::getSupportedSources<\/a>"],[0,2,"App\\Services\\Factories\\ArticleParserFactory::registerParser<\/a>"],[80,3,"App\\Services\\Factories\\HomepageParserFactory::getParser<\/a>"],[100,2,"App\\Services\\Factories\\HomepageParserFactory::getParserForFeed<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[80,3,"App\\Services\\Factories\\ArticleParserFactory::getParser<\/a>"],[0,1,"App\\Services\\Factories\\ArticleParserFactory::getSupportedSources<\/a>"],[0,2,"App\\Services\\Factories\\ArticleParserFactory::registerParser<\/a>"],[80,3,"App\\Services\\Factories\\HomepageParserFactory::getParser<\/a>"],[100,2,"App\\Services\\Factories\\HomepageParserFactory::getParserForFeed<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Services/Factories/index.html b/backend/coverage-report/Services/Factories/index.html index 888e9df..8f96529 100644 --- a/backend/coverage-report/Services/Factories/index.html +++ b/backend/coverage-report/Services/Factories/index.html @@ -44,15 +44,15 @@ - Total -
-
- 36.84% covered (danger) + Total +
+
+ 57.89% covered (warning)
-
36.84%
-
7 / 19
+
57.89%
+
11 / 19
20.00% covered (danger) @@ -74,13 +74,13 @@ ArticleParserFactory.php
-
- 0.00% covered (danger) +
+ 36.36% covered (danger)
-
0.00%
-
0 / 11
+
36.36%
+
4 / 11
0.00% covered (danger) @@ -140,7 +140,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Http/HttpFetcher.php.html b/backend/coverage-report/Services/Http/HttpFetcher.php.html index 30354c2..99a7ab6 100644 --- a/backend/coverage-report/Services/Http/HttpFetcher.php.html +++ b/backend/coverage-report/Services/Http/HttpFetcher.php.html @@ -46,21 +46,21 @@ Total
-
- 20.45% covered (danger) +
+ 22.73% covered (danger)
-
20.45%
-
9 / 44
+
22.73%
+
10 / 44
-
- 0.00% covered (danger) +
+ 50.00% covered (danger)
-
0.00%
-
0 / 2
+
50.00%
+
1 / 2
CRAP
@@ -75,22 +75,22 @@ HttpFetcher
-
- 20.45% covered (danger) +
+ 22.73% covered (danger)
-
20.45%
-
9 / 44
+
22.73%
+
10 / 44
-
- 0.00% covered (danger) +
+ 50.00% covered (danger)
-
0.00%
-
0 / 2
- 49.77 +
50.00%
+
1 / 2
+ 46.37
0.00% covered (danger) @@ -104,23 +104,23 @@  fetchHtml
-
- 90.00% covered (success) +
+ 100.00% covered (success)
-
90.00%
-
9 / 10
-
-
- 0.00% covered (danger) +
100.00%
+
10 / 10
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 3.01 - +
100.00%
+
1 / 1
+ 3 + @@ -166,16 +166,16 @@ 13            $response = Http::get($url); 14             15            if (!$response->successful()) { - 16                throw new Exception("Failed to fetch URL: {$url} - Status: {$response->status()}"); + 16                throw new Exception("Failed to fetch URL: {$url} - Status: {$response->status()}"); 17            } 18             - 19            return $response->body(); - 20        } catch (Exception $e) { - 21            logger()->error('HTTP fetch failed', [ - 22                'url' => $url, - 23                'error' => $e->getMessage() - 24            ]); - 25            throw $e; + 19            return $response->body(); + 20        } catch (Exception $e) { + 21            logger()->error('HTTP fetch failed', [ + 22                'url' => $url, + 23                'error' => $e->getMessage() + 24            ]); + 25            throw $e; 26        } 27    } 28 @@ -242,7 +242,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Http/dashboard.html b/backend/coverage-report/Services/Http/dashboard.html index f7ea93d..99c26e6 100644 --- a/backend/coverage-report/Services/Http/dashboard.html +++ b/backend/coverage-report/Services/Http/dashboard.html @@ -59,7 +59,7 @@

Insufficient Coverage

-
App\Services\Http\HttpFetcher20% + App\Services\Http\HttpFetcher22% @@ -76,7 +76,7 @@

Project Risks

- App\Services\Http\HttpFetcher49 + App\Services\Http\HttpFetcher46 @@ -141,7 +141,7 @@

Project Risks

@@ -178,7 +178,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([1,0,0,0,0,0,0,0,0,0,1,0], "Method Coverage")) + .datum(getCoverageDistributionData([1,0,0,0,0,0,0,0,0,0,0,1], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -228,7 +228,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[20.454545454545457,9,"App\\Services\\Http\\HttpFetcher<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[22.727272727272727,9,"App\\Services\\Http\\HttpFetcher<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -252,7 +252,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[90,3,"
App\\Services\\Http\\HttpFetcher::fetchHtml<\/a>"],[0,6,"App\\Services\\Http\\HttpFetcher::fetchMultipleUrls<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[100,3,"App\\Services\\Http\\HttpFetcher::fetchHtml<\/a>"],[0,6,"App\\Services\\Http\\HttpFetcher::fetchMultipleUrls<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Services/Http/index.html b/backend/coverage-report/Services/Http/index.html index 6de0529..b44b98f 100644 --- a/backend/coverage-report/Services/Http/index.html +++ b/backend/coverage-report/Services/Http/index.html @@ -46,21 +46,21 @@ Total
-
- 20.45% covered (danger) +
+ 22.73% covered (danger)
-
20.45%
-
9 / 44
+
22.73%
+
10 / 44
-
- 0.00% covered (danger) +
+ 50.00% covered (danger)
-
0.00%
-
0 / 2
+
50.00%
+
1 / 2
0.00% covered (danger) @@ -74,21 +74,21 @@ HttpFetcher.php
-
- 20.45% covered (danger) +
+ 22.73% covered (danger)
-
20.45%
-
9 / 44
+
22.73%
+
10 / 44
-
- 0.00% covered (danger) +
+ 50.00% covered (danger)
-
0.00%
-
0 / 2
+
50.00%
+
1 / 2
0.00% covered (danger) @@ -112,7 +112,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Log/LogSaver.php.html b/backend/coverage-report/Services/Log/LogSaver.php.html index 574759e..aeea092 100644 --- a/backend/coverage-report/Services/Log/LogSaver.php.html +++ b/backend/coverage-report/Services/Log/LogSaver.php.html @@ -292,7 +292,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Log/dashboard.html b/backend/coverage-report/Services/Log/dashboard.html index 4190c93..ee6938e 100644 --- a/backend/coverage-report/Services/Log/dashboard.html +++ b/backend/coverage-report/Services/Log/dashboard.html @@ -142,7 +142,7 @@

Project Risks

diff --git a/backend/coverage-report/Services/Log/index.html b/backend/coverage-report/Services/Log/index.html index b6206b7..76655d4 100644 --- a/backend/coverage-report/Services/Log/index.html +++ b/backend/coverage-report/Services/Log/index.html @@ -112,7 +112,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/OnboardingRedirectService.php.html b/backend/coverage-report/Services/OnboardingRedirectService.php.html index 350066c..1b67da4 100644 --- a/backend/coverage-report/Services/OnboardingRedirectService.php.html +++ b/backend/coverage-report/Services/OnboardingRedirectService.php.html @@ -158,7 +158,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Parsers/BelgaArticlePageParser.php.html b/backend/coverage-report/Services/Parsers/BelgaArticlePageParser.php.html index ed414ac..0987457 100644 --- a/backend/coverage-report/Services/Parsers/BelgaArticlePageParser.php.html +++ b/backend/coverage-report/Services/Parsers/BelgaArticlePageParser.php.html @@ -337,7 +337,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Parsers/BelgaArticleParser.php.html b/backend/coverage-report/Services/Parsers/BelgaArticleParser.php.html index b0ec908..1dd317d 100644 --- a/backend/coverage-report/Services/Parsers/BelgaArticleParser.php.html +++ b/backend/coverage-report/Services/Parsers/BelgaArticleParser.php.html @@ -46,21 +46,21 @@ Total
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
CRAP
@@ -75,22 +75,22 @@ BelgaArticleParser
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
- 12 +
33.33%
+
1 / 3
+ 5.67
0.00% covered (danger) @@ -102,25 +102,25 @@ -  canParse -
-
- 0.00% covered (danger) +  canParse +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + @@ -183,7 +183,7 @@ 8{ 9    public function canParse(string $url): bool 10    { - 11        return str_contains($url, 'belganewsagency.eu'); + 11        return str_contains($url, 'belganewsagency.eu'); 12    } 13 14    public function extractData(string $html): array @@ -206,7 +206,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Parsers/BelgaHomepageParser.php.html b/backend/coverage-report/Services/Parsers/BelgaHomepageParser.php.html index 32ef460..714d9cb 100644 --- a/backend/coverage-report/Services/Parsers/BelgaHomepageParser.php.html +++ b/backend/coverage-report/Services/Parsers/BelgaHomepageParser.php.html @@ -159,7 +159,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Parsers/BelgaHomepageParserAdapter.php.html b/backend/coverage-report/Services/Parsers/BelgaHomepageParserAdapter.php.html index 3c99a47..59f0b04 100644 --- a/backend/coverage-report/Services/Parsers/BelgaHomepageParserAdapter.php.html +++ b/backend/coverage-report/Services/Parsers/BelgaHomepageParserAdapter.php.html @@ -233,7 +233,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Parsers/VrtArticlePageParser.php.html b/backend/coverage-report/Services/Parsers/VrtArticlePageParser.php.html index 6b6f94e..f766017 100644 --- a/backend/coverage-report/Services/Parsers/VrtArticlePageParser.php.html +++ b/backend/coverage-report/Services/Parsers/VrtArticlePageParser.php.html @@ -319,7 +319,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Parsers/VrtArticleParser.php.html b/backend/coverage-report/Services/Parsers/VrtArticleParser.php.html index 841127f..209a8c8 100644 --- a/backend/coverage-report/Services/Parsers/VrtArticleParser.php.html +++ b/backend/coverage-report/Services/Parsers/VrtArticleParser.php.html @@ -46,21 +46,21 @@ Total
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
CRAP
@@ -75,22 +75,22 @@ VrtArticleParser
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
- 12 +
33.33%
+
1 / 3
+ 5.67
0.00% covered (danger) @@ -102,25 +102,25 @@ -  canParse -
-
- 0.00% covered (danger) +  canParse +
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
-
-
- 0.00% covered (danger) +
100.00%
+
1 / 1
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
- 2 - +
100.00%
+
1 / 1
+ 1 + @@ -183,7 +183,7 @@ 8{ 9    public function canParse(string $url): bool 10    { - 11        return str_contains($url, 'vrt.be'); + 11        return str_contains($url, 'vrt.be'); 12    } 13 14    public function extractData(string $html): array @@ -206,7 +206,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Parsers/VrtHomepageParser.php.html b/backend/coverage-report/Services/Parsers/VrtHomepageParser.php.html index 288660a..b782f73 100644 --- a/backend/coverage-report/Services/Parsers/VrtHomepageParser.php.html +++ b/backend/coverage-report/Services/Parsers/VrtHomepageParser.php.html @@ -161,7 +161,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Parsers/VrtHomepageParserAdapter.php.html b/backend/coverage-report/Services/Parsers/VrtHomepageParserAdapter.php.html index 3c2daa4..5c21b89 100644 --- a/backend/coverage-report/Services/Parsers/VrtHomepageParserAdapter.php.html +++ b/backend/coverage-report/Services/Parsers/VrtHomepageParserAdapter.php.html @@ -233,7 +233,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Parsers/dashboard.html b/backend/coverage-report/Services/Parsers/dashboard.html index c177732..ce8138f 100644 --- a/backend/coverage-report/Services/Parsers/dashboard.html +++ b/backend/coverage-report/Services/Parsers/dashboard.html @@ -60,13 +60,13 @@

Insufficient Coverage

App\Services\Parsers\BelgaArticlePageParser0% - App\Services\Parsers\BelgaArticleParser0% App\Services\Parsers\BelgaHomepageParser0% App\Services\Parsers\VrtArticlePageParser0% - App\Services\Parsers\VrtArticleParser0% App\Services\Parsers\VrtHomepageParser0% App\Services\Parsers\BelgaHomepageParserAdapter25% App\Services\Parsers\VrtHomepageParserAdapter25% + App\Services\Parsers\BelgaArticleParser33% + App\Services\Parsers\VrtArticleParser33% @@ -127,7 +127,6 @@

Insufficient Coverage

extractFullArticle0% extractThumbnail0% extractData0% - canParse0% extractData0% getSourceName0% extractArticleUrls0% @@ -139,7 +138,6 @@

Insufficient Coverage

extractFullArticle0% extractThumbnail0% extractData0% - canParse0% extractData0% getSourceName0% extractArticleUrls0% @@ -179,7 +177,7 @@

Project Risks

@@ -198,7 +196,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([6,0,0,2,0,0,0,0,0,0,0,0], "Class Coverage")) + .datum(getCoverageDistributionData([4,0,0,2,2,0,0,0,0,0,0,0], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -216,7 +214,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([24,0,0,0,0,0,0,0,0,0,0,2], "Method Coverage")) + .datum(getCoverageDistributionData([22,0,0,0,0,0,0,0,0,0,0,4], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -266,7 +264,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[0,17,"App\\Services\\Parsers\\BelgaArticlePageParser<\/a>"],[0,3,"App\\Services\\Parsers\\BelgaArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\BelgaHomepageParserAdapter<\/a>"],[0,14,"App\\Services\\Parsers\\VrtArticlePageParser<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\VrtHomepageParserAdapter<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[0,17,"App\\Services\\Parsers\\BelgaArticlePageParser<\/a>"],[33.33333333333333,3,"App\\Services\\Parsers\\BelgaArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\BelgaHomepageParserAdapter<\/a>"],[0,14,"App\\Services\\Parsers\\VrtArticlePageParser<\/a>"],[33.33333333333333,3,"App\\Services\\Parsers\\VrtArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\VrtHomepageParserAdapter<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -290,7 +288,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[0,5,"
App\\Services\\Parsers\\BelgaArticlePageParser::extractTitle<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractDescription<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\BelgaArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticlePageParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getSourceName<\/a>"],[0,4,"App\\Services\\Parsers\\VrtArticlePageParser::extractTitle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractDescription<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticlePageParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getSourceName<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[0,5,"App\\Services\\Parsers\\BelgaArticlePageParser::extractTitle<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractDescription<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\BelgaArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticlePageParser::extractData<\/a>"],[100,1,"App\\Services\\Parsers\\BelgaArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getSourceName<\/a>"],[0,4,"App\\Services\\Parsers\\VrtArticlePageParser::extractTitle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractDescription<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticlePageParser::extractData<\/a>"],[100,1,"App\\Services\\Parsers\\VrtArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getSourceName<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Services/Parsers/index.html b/backend/coverage-report/Services/Parsers/index.html index 5651fd9..d97e043 100644 --- a/backend/coverage-report/Services/Parsers/index.html +++ b/backend/coverage-report/Services/Parsers/index.html @@ -46,21 +46,21 @@ Total
-
- 1.96% covered (danger) +
+ 3.92% covered (danger)
-
1.96%
-
2 / 102
+
3.92%
+
4 / 102
-
- 7.69% covered (danger) +
+ 15.38% covered (danger)
-
7.69%
-
2 / 26
+
15.38%
+
4 / 26
0.00% covered (danger) @@ -102,21 +102,21 @@ BelgaArticleParser.php
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
0.00% covered (danger) @@ -214,21 +214,21 @@ VrtArticleParser.php
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
-
- 0.00% covered (danger) +
+ 33.33% covered (danger)
-
0.00%
-
0 / 3
+
33.33%
+
1 / 3
0.00% covered (danger) @@ -308,7 +308,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Publishing/ArticlePublishingService.php.html b/backend/coverage-report/Services/Publishing/ArticlePublishingService.php.html index 03ce098..5ec393a 100644 --- a/backend/coverage-report/Services/Publishing/ArticlePublishingService.php.html +++ b/backend/coverage-report/Services/Publishing/ArticlePublishingService.php.html @@ -246,7 +246,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/Publishing/dashboard.html b/backend/coverage-report/Services/Publishing/dashboard.html index ce6cc8c..31197ec 100644 --- a/backend/coverage-report/Services/Publishing/dashboard.html +++ b/backend/coverage-report/Services/Publishing/dashboard.html @@ -143,7 +143,7 @@

Project Risks

diff --git a/backend/coverage-report/Services/Publishing/index.html b/backend/coverage-report/Services/Publishing/index.html index e0b7323..f805620 100644 --- a/backend/coverage-report/Services/Publishing/index.html +++ b/backend/coverage-report/Services/Publishing/index.html @@ -112,7 +112,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/RoutingValidationService.php.html b/backend/coverage-report/Services/RoutingValidationService.php.html index 20fa8a3..352e2a0 100644 --- a/backend/coverage-report/Services/RoutingValidationService.php.html +++ b/backend/coverage-report/Services/RoutingValidationService.php.html @@ -170,7 +170,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/SystemStatusService.php.html b/backend/coverage-report/Services/SystemStatusService.php.html index 1710e66..e047639 100644 --- a/backend/coverage-report/Services/SystemStatusService.php.html +++ b/backend/coverage-report/Services/SystemStatusService.php.html @@ -212,7 +212,7 @@

Legend

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/Services/dashboard.html b/backend/coverage-report/Services/dashboard.html index 311d814..fc2184d 100644 --- a/backend/coverage-report/Services/dashboard.html +++ b/backend/coverage-report/Services/dashboard.html @@ -59,21 +59,21 @@

Insufficient Coverage

App\Services\Auth\LemmyAuthService0% - App\Services\Factories\ArticleParserFactory0% App\Services\OnboardingRedirectService0% App\Services\Parsers\BelgaArticlePageParser0% - App\Services\Parsers\BelgaArticleParser0% App\Services\Parsers\BelgaHomepageParser0% App\Services\Parsers\VrtArticlePageParser0% - App\Services\Parsers\VrtArticleParser0% App\Services\Parsers\VrtHomepageParser0% App\Services\Publishing\ArticlePublishingService0% App\Services\RoutingValidationService0% App\Services\SystemStatusService0% - App\Services\Http\HttpFetcher20% + App\Services\Http\HttpFetcher22% App\Services\Parsers\BelgaHomepageParserAdapter25% App\Services\Parsers\VrtHomepageParserAdapter25% - App\Services\Article\ArticleFetcher43% + App\Services\Parsers\BelgaArticleParser33% + App\Services\Parsers\VrtArticleParser33% + App\Services\Factories\ArticleParserFactory36% + App\Services\Article\ArticleFetcher45% App\Services\Article\ValidationService48% App\Services\Log\LogSaver58% App\Services\Factories\HomepageParserFactory87% @@ -96,12 +96,12 @@

Project Risks

App\Services\Parsers\BelgaArticlePageParser306 App\Services\Parsers\VrtArticlePageParser210 App\Services\SystemStatusService72 - App\Services\Http\HttpFetcher49 + App\Services\Http\HttpFetcher46 App\Services\Auth\LemmyAuthService42 - App\Services\Factories\ArticleParserFactory42 - App\Services\Article\ArticleFetcher33 + App\Services\Article\ArticleFetcher30 App\Services\Publishing\ArticlePublishingService30 App\Services\RoutingValidationService30 + App\Services\Factories\ArticleParserFactory15 App\Services\Article\ValidationService8 App\Services\Log\LogSaver8 App\Services\OnboardingRedirectService6 @@ -146,7 +146,6 @@

Insufficient Coverage

saveArticle0% validateByKeywords0% getToken0% - getParser0% getSupportedSources0% registerParser0% fetchMultipleUrls0% @@ -157,7 +156,6 @@

Insufficient Coverage

extractFullArticle0% extractThumbnail0% extractData0% - canParse0% extractData0% getSourceName0% extractArticleUrls0% @@ -169,7 +167,6 @@

Insufficient Coverage

extractFullArticle0% extractThumbnail0% extractData0% - canParse0% extractData0% getSourceName0% extractArticleUrls0% @@ -185,9 +182,9 @@

Insufficient Coverage

getArticlesFromFeed44% log53% validate66% - fetchArticleData77% - getDateRange77% + getParser80% getParser80% + fetchArticleData88% @@ -213,19 +210,18 @@

Project Risks

extractFullArticle20 extractTitle20 validateByKeywords12 - getParser12 extractThumbnail12 extractDescription12 extractFullArticle12 extractThumbnail12 publishToRoutedChannels12 - getDateRange7 saveArticle6 registerParser6 handleRedirect6 publishToChannel6 getArticlesFromWebsiteFeed5 getArticlesFromFeed4 + getParser3 getParser3 log2 validate2 @@ -239,7 +235,7 @@

Project Risks

@@ -258,7 +254,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([12,0,0,3,0,2,1,0,0,1,1,0], "Class Coverage")) + .datum(getCoverageDistributionData([9,0,0,3,3,2,1,0,0,1,0,1], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -276,7 +272,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([38,0,0,0,1,1,1,1,2,1,1,10], "Method Coverage")) + .datum(getCoverageDistributionData([35,0,0,0,1,1,1,1,0,3,0,14], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -326,7 +322,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[43.18181818181818,11,"App\\Services\\Article\\ArticleFetcher<\/a>"],[48,5,"App\\Services\\Article\\ValidationService<\/a>"],[0,6,"App\\Services\\Auth\\LemmyAuthService<\/a>"],[95,13,"App\\Services\\DashboardStatsService<\/a>"],[0,6,"App\\Services\\Factories\\ArticleParserFactory<\/a>"],[87.5,5,"App\\Services\\Factories\\HomepageParserFactory<\/a>"],[20.454545454545457,9,"App\\Services\\Http\\HttpFetcher<\/a>"],[58.82352941176471,6,"App\\Services\\Log\\LogSaver<\/a>"],[0,2,"App\\Services\\OnboardingRedirectService<\/a>"],[0,17,"App\\Services\\Parsers\\BelgaArticlePageParser<\/a>"],[0,3,"App\\Services\\Parsers\\BelgaArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\BelgaHomepageParserAdapter<\/a>"],[0,14,"App\\Services\\Parsers\\VrtArticlePageParser<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\VrtHomepageParserAdapter<\/a>"],[0,5,"App\\Services\\Publishing\\ArticlePublishingService<\/a>"],[0,5,"App\\Services\\RoutingValidationService<\/a>"],[0,8,"App\\Services\\SystemStatusService<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[45.45454545454545,11,"App\\Services\\Article\\ArticleFetcher<\/a>"],[48,5,"App\\Services\\Article\\ValidationService<\/a>"],[0,6,"App\\Services\\Auth\\LemmyAuthService<\/a>"],[100,13,"App\\Services\\DashboardStatsService<\/a>"],[36.36363636363637,6,"App\\Services\\Factories\\ArticleParserFactory<\/a>"],[87.5,5,"App\\Services\\Factories\\HomepageParserFactory<\/a>"],[22.727272727272727,9,"App\\Services\\Http\\HttpFetcher<\/a>"],[58.82352941176471,6,"App\\Services\\Log\\LogSaver<\/a>"],[0,2,"App\\Services\\OnboardingRedirectService<\/a>"],[0,17,"App\\Services\\Parsers\\BelgaArticlePageParser<\/a>"],[33.33333333333333,3,"App\\Services\\Parsers\\BelgaArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\BelgaHomepageParserAdapter<\/a>"],[0,14,"App\\Services\\Parsers\\VrtArticlePageParser<\/a>"],[33.33333333333333,3,"App\\Services\\Parsers\\VrtArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\VrtHomepageParserAdapter<\/a>"],[0,5,"App\\Services\\Publishing\\ArticlePublishingService<\/a>"],[0,5,"App\\Services\\RoutingValidationService<\/a>"],[0,8,"App\\Services\\SystemStatusService<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -350,7 +346,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[44.44444444444444,3,"
App\\Services\\Article\\ArticleFetcher::getArticlesFromFeed<\/a>"],[100,1,"App\\Services\\Article\\ArticleFetcher::getArticlesFromRssFeed<\/a>"],[38.88888888888889,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromWebsiteFeed<\/a>"],[77.77777777777779,2,"App\\Services\\Article\\ArticleFetcher::fetchArticleData<\/a>"],[0,2,"App\\Services\\Article\\ArticleFetcher::saveArticle<\/a>"],[66.66666666666666,2,"App\\Services\\Article\\ValidationService::validate<\/a>"],[0,3,"App\\Services\\Article\\ValidationService::validateByKeywords<\/a>"],[0,6,"App\\Services\\Auth\\LemmyAuthService::getToken<\/a>"],[100,4,"App\\Services\\DashboardStatsService::getStats<\/a>"],[100,1,"App\\Services\\DashboardStatsService::getAvailablePeriods<\/a>"],[77.77777777777779,7,"App\\Services\\DashboardStatsService::getDateRange<\/a>"],[100,1,"App\\Services\\DashboardStatsService::getSystemStats<\/a>"],[0,3,"App\\Services\\Factories\\ArticleParserFactory::getParser<\/a>"],[0,1,"App\\Services\\Factories\\ArticleParserFactory::getSupportedSources<\/a>"],[0,2,"App\\Services\\Factories\\ArticleParserFactory::registerParser<\/a>"],[80,3,"App\\Services\\Factories\\HomepageParserFactory::getParser<\/a>"],[100,2,"App\\Services\\Factories\\HomepageParserFactory::getParserForFeed<\/a>"],[90,3,"App\\Services\\Http\\HttpFetcher::fetchHtml<\/a>"],[0,6,"App\\Services\\Http\\HttpFetcher::fetchMultipleUrls<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::info<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::error<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::warning<\/a>"],[0,1,"App\\Services\\Log\\LogSaver::debug<\/a>"],[53.84615384615385,2,"App\\Services\\Log\\LogSaver::log<\/a>"],[0,2,"App\\Services\\OnboardingRedirectService::handleRedirect<\/a>"],[0,5,"App\\Services\\Parsers\\BelgaArticlePageParser::extractTitle<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractDescription<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\BelgaArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticlePageParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getSourceName<\/a>"],[0,4,"App\\Services\\Parsers\\VrtArticlePageParser::extractTitle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractDescription<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticlePageParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getSourceName<\/a>"],[0,3,"App\\Services\\Publishing\\ArticlePublishingService::publishToRoutedChannels<\/a>"],[0,2,"App\\Services\\Publishing\\ArticlePublishingService::publishToChannel<\/a>"],[0,5,"App\\Services\\RoutingValidationService::validateLanguageCompatibility<\/a>"],[0,7,"App\\Services\\SystemStatusService::getSystemStatus<\/a>"],[0,1,"App\\Services\\SystemStatusService::canProcessArticles<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[44.44444444444444,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromFeed<\/a>"],[100,1,"App\\Services\\Article\\ArticleFetcher::getArticlesFromRssFeed<\/a>"],[38.88888888888889,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromWebsiteFeed<\/a>"],[88.88888888888889,2,"App\\Services\\Article\\ArticleFetcher::fetchArticleData<\/a>"],[0,2,"App\\Services\\Article\\ArticleFetcher::saveArticle<\/a>"],[66.66666666666666,2,"App\\Services\\Article\\ValidationService::validate<\/a>"],[0,3,"App\\Services\\Article\\ValidationService::validateByKeywords<\/a>"],[0,6,"App\\Services\\Auth\\LemmyAuthService::getToken<\/a>"],[100,4,"App\\Services\\DashboardStatsService::getStats<\/a>"],[100,1,"App\\Services\\DashboardStatsService::getAvailablePeriods<\/a>"],[100,7,"App\\Services\\DashboardStatsService::getDateRange<\/a>"],[100,1,"App\\Services\\DashboardStatsService::getSystemStats<\/a>"],[80,3,"App\\Services\\Factories\\ArticleParserFactory::getParser<\/a>"],[0,1,"App\\Services\\Factories\\ArticleParserFactory::getSupportedSources<\/a>"],[0,2,"App\\Services\\Factories\\ArticleParserFactory::registerParser<\/a>"],[80,3,"App\\Services\\Factories\\HomepageParserFactory::getParser<\/a>"],[100,2,"App\\Services\\Factories\\HomepageParserFactory::getParserForFeed<\/a>"],[100,3,"App\\Services\\Http\\HttpFetcher::fetchHtml<\/a>"],[0,6,"App\\Services\\Http\\HttpFetcher::fetchMultipleUrls<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::info<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::error<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::warning<\/a>"],[0,1,"App\\Services\\Log\\LogSaver::debug<\/a>"],[53.84615384615385,2,"App\\Services\\Log\\LogSaver::log<\/a>"],[0,2,"App\\Services\\OnboardingRedirectService::handleRedirect<\/a>"],[0,5,"App\\Services\\Parsers\\BelgaArticlePageParser::extractTitle<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractDescription<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\BelgaArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticlePageParser::extractData<\/a>"],[100,1,"App\\Services\\Parsers\\BelgaArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getSourceName<\/a>"],[0,4,"App\\Services\\Parsers\\VrtArticlePageParser::extractTitle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractDescription<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticlePageParser::extractData<\/a>"],[100,1,"App\\Services\\Parsers\\VrtArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getSourceName<\/a>"],[0,3,"App\\Services\\Publishing\\ArticlePublishingService::publishToRoutedChannels<\/a>"],[0,2,"App\\Services\\Publishing\\ArticlePublishingService::publishToChannel<\/a>"],[0,5,"App\\Services\\RoutingValidationService::validateLanguageCompatibility<\/a>"],[0,7,"App\\Services\\SystemStatusService::getSystemStatus<\/a>"],[0,1,"App\\Services\\SystemStatusService::canProcessArticles<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/Services/index.html b/backend/coverage-report/Services/index.html index 967f54b..b2fcf4a 100644 --- a/backend/coverage-report/Services/index.html +++ b/backend/coverage-report/Services/index.html @@ -45,41 +45,41 @@ Total
-
- 26.15% covered (danger) +
+ 28.84% covered (danger)
-
26.15%
-
97 / 371
+
28.84%
+
107 / 371
-
- 17.86% covered (danger) +
+ 25.00% covered (danger)
-
17.86%
-
10 / 56
+
25.00%
+
14 / 56
-
- 0.00% covered (danger) +
+ 5.00% covered (danger)
-
0.00%
-
0 / 20
+
5.00%
+
1 / 20
Article
-
- 44.93% covered (danger) +
+ 46.38% covered (danger)
-
44.93%
-
31 / 69
+
46.38%
+
32 / 69
14.29% covered (danger) @@ -127,15 +127,15 @@ - Factories -
-
- 36.84% covered (danger) + Factories +
+
+ 57.89% covered (warning)
-
36.84%
-
7 / 19
+
57.89%
+
11 / 19
20.00% covered (danger) @@ -157,21 +157,21 @@ Http
-
- 20.45% covered (danger) +
+ 22.73% covered (danger)
-
20.45%
-
9 / 44
+
22.73%
+
10 / 44
-
- 0.00% covered (danger) +
+ 50.00% covered (danger)
-
0.00%
-
0 / 2
+
50.00%
+
1 / 2
0.00% covered (danger) @@ -213,21 +213,21 @@ Parsers
-
- 1.96% covered (danger) +
+ 3.92% covered (danger)
-
1.96%
-
2 / 102
+
3.92%
+
4 / 102
-
- 7.69% covered (danger) +
+ 15.38% covered (danger)
-
7.69%
-
2 / 26
+
15.38%
+
4 / 26
0.00% covered (danger) @@ -269,29 +269,29 @@ DashboardStatsService.php
-
- 95.00% covered (success) +
+ 100.00% covered (success)
-
95.00%
-
38 / 40
-
-
- 75.00% covered (warning) +
100.00%
+
40 / 40
+
+
+ 100.00% covered (success)
-
75.00%
-
3 / 4
-
-
- 0.00% covered (danger) +
100.00%
+
4 / 4
+
+
+ 100.00% covered (success)
-
0.00%
-
0 / 1
+
100.00%
+
1 / 1
@@ -391,7 +391,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.

diff --git a/backend/coverage-report/dashboard.html b/backend/coverage-report/dashboard.html index 6353395..9c3e94a 100644 --- a/backend/coverage-report/dashboard.html +++ b/backend/coverage-report/dashboard.html @@ -61,16 +61,11 @@

Insufficient Coverage

App\Exceptions\PlatformAuthException0% App\Exceptions\PublishException0% App\Exceptions\RoutingMismatchException0% - App\Http\Controllers\Api\V1\ArticlesController0% App\Http\Controllers\Api\V1\AuthController0% - App\Http\Controllers\Api\V1\BaseController0% - App\Http\Controllers\Api\V1\DashboardController0% - App\Http\Controllers\Api\V1\FeedsController0% App\Http\Controllers\Api\V1\LogsController0% App\Http\Controllers\Api\V1\PlatformAccountsController0% App\Http\Controllers\Api\V1\PlatformChannelsController0% App\Http\Controllers\Api\V1\RoutingController0% - App\Http\Controllers\Api\V1\SettingsController0% App\Http\Controllers\ArticlesController0% App\Http\Controllers\FeedsController0% App\Http\Controllers\LogsController0% @@ -81,11 +76,7 @@

Insufficient Coverage

App\Http\Controllers\SettingsController0% App\Http\Middleware\HandleAppearance0% App\Http\Middleware\HandleInertiaRequests0% - App\Http\Requests\StoreFeedRequest0% - App\Http\Requests\UpdateFeedRequest0% App\Http\Resources\ArticlePublicationResource0% - App\Http\Resources\ArticleResource0% - App\Http\Resources\FeedResource0% App\Http\Resources\PlatformAccountResource0% App\Http\Resources\PlatformChannelResource0% App\Http\Resources\PlatformInstanceResource0% @@ -100,13 +91,10 @@

Insufficient Coverage

App\Modules\Lemmy\Services\LemmyApiService0% App\Modules\Lemmy\Services\LemmyPublisher0% App\Services\Auth\LemmyAuthService0% - App\Services\Factories\ArticleParserFactory0% App\Services\OnboardingRedirectService0% App\Services\Parsers\BelgaArticlePageParser0% - App\Services\Parsers\BelgaArticleParser0% App\Services\Parsers\BelgaHomepageParser0% App\Services\Parsers\VrtArticlePageParser0% - App\Services\Parsers\VrtArticleParser0% App\Services\Parsers\VrtHomepageParser0% App\Services\Publishing\ArticlePublishingService0% App\Services\RoutingValidationService0% @@ -114,23 +102,29 @@

Insufficient Coverage

App\Jobs\SyncChannelPostsJob2% App\Models\Feed8% App\Jobs\PublishToLemmyJob16% - App\Services\Http\HttpFetcher20% + App\Services\Http\HttpFetcher22% App\Services\Parsers\BelgaHomepageParserAdapter25% App\Services\Parsers\VrtHomepageParserAdapter25% - App\Services\Article\ArticleFetcher43% + App\Services\Parsers\BelgaArticleParser33% + App\Services\Parsers\VrtArticleParser33% + App\Services\Factories\ArticleParserFactory36% + App\Services\Article\ArticleFetcher45% App\Services\Article\ValidationService48% - App\Models\Article48% App\Models\Route50% - App\Models\Setting50% App\Listeners\ValidateArticleListener53% App\Services\Log\LogSaver58% App\Models\Language60% App\Jobs\ArticleDiscoveryJob71% App\Console\Commands\FetchNewArticlesCommand75% App\Providers\HorizonServiceProvider75% + App\Http\Controllers\Api\V1\FeedsController76% App\Listeners\PublishApprovedArticle80% App\Providers\AppServiceProvider82% + App\Http\Controllers\Api\V1\DashboardController84% + App\Http\Controllers\Api\V1\SettingsController85% + App\Http\Controllers\Api\V1\BaseController87% App\Services\Factories\HomepageParserFactory87% + App\Http\Controllers\Api\V1\ArticlesController87% @@ -154,7 +148,6 @@

Project Risks

App\Http\Controllers\RoutingController240 App\Http\Controllers\Api\V1\PlatformAccountsController210 App\Services\Parsers\VrtArticlePageParser210 - App\Http\Controllers\Api\V1\FeedsController182 App\Http\Controllers\Api\V1\PlatformChannelsController182 App\Jobs\SyncChannelPostsJob170 App\Models\Feed143 @@ -164,34 +157,32 @@

Project Risks

App\Models\PlatformAccount110 App\Http\Controllers\FeedsController90 App\Services\SystemStatusService72 - App\Http\Controllers\Api\V1\SettingsController56 - App\Services\Http\HttpFetcher49 - App\Models\Article45 - App\Http\Controllers\Api\V1\BaseController42 + App\Services\Http\HttpFetcher46 App\Modules\Lemmy\LemmyRequest42 App\Services\Auth\LemmyAuthService42 - App\Services\Factories\ArticleParserFactory42 - App\Services\Article\ArticleFetcher33 + App\Services\Article\ArticleFetcher30 App\Exceptions\PublishException30 - App\Http\Controllers\Api\V1\ArticlesController30 App\Services\Publishing\ArticlePublishingService30 App\Services\RoutingValidationService30 - App\Models\Setting22 + App\Http\Controllers\Api\V1\FeedsController15 + App\Services\Factories\ArticleParserFactory15 App\Console\Commands\SyncChannelPostsCommand12 - App\Http\Controllers\Api\V1\DashboardController12 App\Http\Controllers\Api\V1\LogsController12 App\Http\Controllers\SettingsController12 - App\Http\Requests\UpdateFeedRequest12 App\Listeners\ValidateArticleListener11 App\Services\Article\ValidationService8 App\Services\Log\LogSaver8 App\Jobs\PublishToLemmyJob8 + App\Http\Controllers\Api\V1\SettingsController7 App\Providers\AppServiceProvider6 + App\Http\Controllers\Api\V1\BaseController6 App\Services\OnboardingRedirectService6 App\Services\Factories\HomepageParserFactory5 + App\Http\Controllers\Api\V1\ArticlesController5 App\Listeners\PublishApprovedArticle4 App\Jobs\ArticleDiscoveryJob3 App\Console\Commands\FetchNewArticlesCommand3 + App\Http\Controllers\Api\V1\DashboardController3 @@ -237,26 +228,12 @@

Insufficient Coverage

getArticle0% getPlatform0% __construct0% - index0% - approve0% - reject0% login0% register0% logout0% me0% - sendResponse0% - sendError0% - sendValidationError0% sendNotFound0% sendUnauthorized0% - __construct0% - stats0% - index0% - store0% - show0% - update0% - destroy0% - toggle0% index0% index0% store0% @@ -276,8 +253,6 @@

Insufficient Coverage

update0% destroy0% toggle0% - index0% - update0% __invoke0% approve0% reject0% @@ -327,13 +302,7 @@

Insufficient Coverage

handle0% version0% share0% - authorize0% - rules0% - authorize0% - rules0% toArray0% - toArray0% - toArray0% toArray0% toArray0% toArray0% @@ -344,11 +313,6 @@

Insufficient Coverage

syncLemmyChannelPosts0% getAuthToken0% handle0% - isPending0% - isRejected0% - approve0% - reject0% - canBePublished0% getTypeDisplayAttribute0% getStatusAttribute0% channels0% @@ -377,11 +341,6 @@

Insufficient Coverage

languages0% findByUrl0% keywords0% - set0% - setBool0% - setArticleProcessingEnabled0% - isPublishingApprovalsEnabled0% - setPublishingApprovalsEnabled0% __construct0% get0% post0% @@ -398,7 +357,6 @@

Insufficient Coverage

saveArticle0% validateByKeywords0% getToken0% - getParser0% getSupportedSources0% registerParser0% fetchMultipleUrls0% @@ -409,7 +367,6 @@

Insufficient Coverage

extractFullArticle0% extractThumbnail0% extractData0% - canParse0% extractData0% getSourceName0% extractArticleUrls0% @@ -421,7 +378,6 @@

Insufficient Coverage

extractFullArticle0% extractThumbnail0% extractData0% - canParse0% extractData0% getSourceName0% extractArticleUrls0% @@ -437,15 +393,22 @@

Insufficient Coverage

getArticlesFromFeed44% handle53% log53% - isValid60% + update63% + store66% handle66% gate66% validate66% + approve71% + reject71% + destroy71% + index71% handle75% - fetchArticleData77% - getDateRange77% + toggle77% handle80% + getParser80% getParser80% + stats83% + fetchArticleData88% @@ -467,7 +430,6 @@

Project Risks

getToken42 fetchMultipleUrls42 login30 - update30 complete30 getAuthToken30 getStatusAttribute30 @@ -487,9 +449,6 @@

Project Risks

extractTitle20 __construct12 register12 - store12 - update12 - toggle12 index12 store12 update12 @@ -502,33 +461,24 @@

Project Risks

store12 toggle12 parseJsonFilters12 - canBePublished12 password12 apiToken12 login12 getCommunityId12 getLanguages12 validateByKeywords12 - getParser12 extractThumbnail12 extractDescription12 extractFullArticle12 extractThumbnail12 publishToRoutedChannels12 handle11 - getDateRange7 handle6 - approve6 - reject6 logout6 - sendError6 - stats6 - destroy6 destroy6 setActive6 destroy6 show6 - index6 toggle6 index6 platform6 @@ -537,10 +487,8 @@

Project Risks

toggle6 edit6 update6 - rules6 handle6 handle6 - setBool6 get6 post6 saveArticle6 @@ -550,12 +498,20 @@

Project Risks

getArticlesFromWebsiteFeed5 getArticlesFromFeed4 handle4 - isValid3 + update3 + store3 handle3 + toggle3 + getParser3 getParser3 log2 handle2 validate2 + approve2 + reject2 + destroy2 + index2 + stats2 fetchArticleData2 @@ -566,7 +522,7 @@

Project Risks

@@ -585,7 +541,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#classCoverageDistribution svg') - .datum(getCoverageDistributionData([54,2,1,3,0,3,4,1,3,3,1,14], "Class Coverage")) + .datum(getCoverageDistributionData([42,2,1,3,3,2,3,1,4,7,0,21], "Class Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -603,7 +559,7 @@

Project Risks

.yAxis.tickFormat(d3.format('d')); d3.select('#methodCoverageDistribution svg') - .datum(getCoverageDistributionData([204,0,0,0,1,1,2,4,3,2,2,41], "Method Coverage")) + .datum(getCoverageDistributionData([169,0,0,0,1,1,2,5,6,5,2,69], "Method Coverage")) .transition().duration(500).call(chart); nv.utils.windowResize(chart.update); @@ -653,7 +609,7 @@

Project Risks

chart.yAxis.axisLabel('Cyclomatic Complexity'); d3.select('#classComplexity svg') - .datum(getComplexityData([[75,3,"App\\Console\\Commands\\FetchNewArticlesCommand<\/a>"],[0,3,"App\\Console\\Commands\\SyncChannelPostsCommand<\/a>"],[100,1,"App\\Events\\ArticleApproved<\/a>"],[100,1,"App\\Events\\ArticleReadyToPublish<\/a>"],[100,1,"App\\Events\\ExceptionLogged<\/a>"],[100,1,"App\\Events\\ExceptionOccurred<\/a>"],[100,1,"App\\Events\\NewArticleFetched<\/a>"],[100,0,"App\\Exceptions\\ChannelException<\/a>"],[0,2,"App\\Exceptions\\PlatformAuthException<\/a>"],[0,5,"App\\Exceptions\\PublishException<\/a>"],[100,0,"App\\Exceptions\\RoutingException<\/a>"],[0,1,"App\\Exceptions\\RoutingMismatchException<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[0,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[0,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"],[0,3,"App\\Http\\Controllers\\ArticlesController<\/a>"],[100,0,"App\\Http\\Controllers\\Controller<\/a>"],[0,9,"App\\Http\\Controllers\\FeedsController<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController<\/a>"],[0,22,"App\\Http\\Controllers\\OnboardingController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformAccountsController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformChannelsController<\/a>"],[0,15,"App\\Http\\Controllers\\RoutingController<\/a>"],[0,3,"App\\Http\\Controllers\\SettingsController<\/a>"],[0,1,"App\\Http\\Middleware\\HandleAppearance<\/a>"],[0,2,"App\\Http\\Middleware\\HandleInertiaRequests<\/a>"],[0,2,"App\\Http\\Requests\\StoreFeedRequest<\/a>"],[0,3,"App\\Http\\Requests\\UpdateFeedRequest<\/a>"],[0,1,"App\\Http\\Resources\\ArticlePublicationResource<\/a>"],[0,1,"App\\Http\\Resources\\ArticleResource<\/a>"],[0,1,"App\\Http\\Resources\\FeedResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource<\/a>"],[100,3,"App\\Jobs\\ArticleDiscoveryForFeedJob<\/a>"],[71.42857142857143,3,"App\\Jobs\\ArticleDiscoveryJob<\/a>"],[16.666666666666664,3,"App\\Jobs\\PublishToLemmyJob<\/a>"],[2.380952380952381,13,"App\\Jobs\\SyncChannelPostsJob<\/a>"],[0,1,"App\\Listeners\\LogExceptionToDatabase<\/a>"],[80,4,"App\\Listeners\\PublishApprovedArticle<\/a>"],[100,3,"App\\Listeners\\PublishArticle<\/a>"],[53.84615384615385,7,"App\\Listeners\\ValidateArticleListener<\/a>"],[48.717948717948715,15,"App\\Models\\Article<\/a>"],[100,1,"App\\Models\\ArticlePublication<\/a>"],[8.333333333333332,13,"App\\Models\\Feed<\/a>"],[0,2,"App\\Models\\Keyword<\/a>"],[60,3,"App\\Models\\Language<\/a>"],[100,0,"App\\Models\\Log<\/a>"],[0,10,"App\\Models\\PlatformAccount<\/a>"],[0,7,"App\\Models\\PlatformChannel<\/a>"],[0,3,"App\\Models\\PlatformChannelPost<\/a>"],[0,3,"App\\Models\\PlatformInstance<\/a>"],[50,3,"App\\Models\\Route<\/a>"],[50,10,"App\\Models\\Setting<\/a>"],[100,1,"App\\Models\\User<\/a>"],[0,6,"App\\Modules\\Lemmy\\LemmyRequest<\/a>"],[0,21,"App\\Modules\\Lemmy\\Services\\LemmyApiService<\/a>"],[0,2,"App\\Modules\\Lemmy\\Services\\LemmyPublisher<\/a>"],[82.75862068965517,6,"App\\Providers\\AppServiceProvider<\/a>"],[75,2,"App\\Providers\\HorizonServiceProvider<\/a>"],[43.18181818181818,11,"App\\Services\\Article\\ArticleFetcher<\/a>"],[48,5,"App\\Services\\Article\\ValidationService<\/a>"],[0,6,"App\\Services\\Auth\\LemmyAuthService<\/a>"],[95,13,"App\\Services\\DashboardStatsService<\/a>"],[0,6,"App\\Services\\Factories\\ArticleParserFactory<\/a>"],[87.5,5,"App\\Services\\Factories\\HomepageParserFactory<\/a>"],[20.454545454545457,9,"App\\Services\\Http\\HttpFetcher<\/a>"],[58.82352941176471,6,"App\\Services\\Log\\LogSaver<\/a>"],[0,2,"App\\Services\\OnboardingRedirectService<\/a>"],[0,17,"App\\Services\\Parsers\\BelgaArticlePageParser<\/a>"],[0,3,"App\\Services\\Parsers\\BelgaArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\BelgaHomepageParserAdapter<\/a>"],[0,14,"App\\Services\\Parsers\\VrtArticlePageParser<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\VrtHomepageParserAdapter<\/a>"],[0,5,"App\\Services\\Publishing\\ArticlePublishingService<\/a>"],[0,5,"App\\Services\\RoutingValidationService<\/a>"],[0,8,"App\\Services\\SystemStatusService<\/a>"],[100,1,"App\\LogLevelEnum<\/a>"]], 'Class Complexity')) + .datum(getComplexityData([[75,3,"App\\Console\\Commands\\FetchNewArticlesCommand<\/a>"],[0,3,"App\\Console\\Commands\\SyncChannelPostsCommand<\/a>"],[100,1,"App\\Events\\ArticleApproved<\/a>"],[100,1,"App\\Events\\ArticleReadyToPublish<\/a>"],[100,1,"App\\Events\\ExceptionLogged<\/a>"],[100,1,"App\\Events\\ExceptionOccurred<\/a>"],[100,1,"App\\Events\\NewArticleFetched<\/a>"],[100,0,"App\\Exceptions\\ChannelException<\/a>"],[0,2,"App\\Exceptions\\PlatformAuthException<\/a>"],[0,5,"App\\Exceptions\\PublishException<\/a>"],[100,0,"App\\Exceptions\\RoutingException<\/a>"],[0,1,"App\\Exceptions\\RoutingMismatchException<\/a>"],[87.87878787878788,5,"App\\Http\\Controllers\\Api\\V1\\ArticlesController<\/a>"],[0,11,"App\\Http\\Controllers\\Api\\V1\\AuthController<\/a>"],[87.5,6,"App\\Http\\Controllers\\Api\\V1\\BaseController<\/a>"],[84.61538461538461,3,"App\\Http\\Controllers\\Api\\V1\\DashboardController<\/a>"],[76,13,"App\\Http\\Controllers\\Api\\V1\\FeedsController<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController<\/a>"],[0,14,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController<\/a>"],[0,13,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController<\/a>"],[0,17,"App\\Http\\Controllers\\Api\\V1\\RoutingController<\/a>"],[85.18518518518519,7,"App\\Http\\Controllers\\Api\\V1\\SettingsController<\/a>"],[0,3,"App\\Http\\Controllers\\ArticlesController<\/a>"],[100,0,"App\\Http\\Controllers\\Controller<\/a>"],[0,9,"App\\Http\\Controllers\\FeedsController<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController<\/a>"],[0,22,"App\\Http\\Controllers\\OnboardingController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformAccountsController<\/a>"],[0,10,"App\\Http\\Controllers\\PlatformChannelsController<\/a>"],[0,15,"App\\Http\\Controllers\\RoutingController<\/a>"],[0,3,"App\\Http\\Controllers\\SettingsController<\/a>"],[0,1,"App\\Http\\Middleware\\HandleAppearance<\/a>"],[0,2,"App\\Http\\Middleware\\HandleInertiaRequests<\/a>"],[100,2,"App\\Http\\Requests\\StoreFeedRequest<\/a>"],[100,3,"App\\Http\\Requests\\UpdateFeedRequest<\/a>"],[0,1,"App\\Http\\Resources\\ArticlePublicationResource<\/a>"],[100,1,"App\\Http\\Resources\\ArticleResource<\/a>"],[100,1,"App\\Http\\Resources\\FeedResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource<\/a>"],[100,3,"App\\Jobs\\ArticleDiscoveryForFeedJob<\/a>"],[71.42857142857143,3,"App\\Jobs\\ArticleDiscoveryJob<\/a>"],[16.666666666666664,3,"App\\Jobs\\PublishToLemmyJob<\/a>"],[2.380952380952381,13,"App\\Jobs\\SyncChannelPostsJob<\/a>"],[0,1,"App\\Listeners\\LogExceptionToDatabase<\/a>"],[80,4,"App\\Listeners\\PublishApprovedArticle<\/a>"],[100,3,"App\\Listeners\\PublishArticle<\/a>"],[53.84615384615385,7,"App\\Listeners\\ValidateArticleListener<\/a>"],[100,15,"App\\Models\\Article<\/a>"],[100,1,"App\\Models\\ArticlePublication<\/a>"],[8.333333333333332,13,"App\\Models\\Feed<\/a>"],[0,2,"App\\Models\\Keyword<\/a>"],[60,3,"App\\Models\\Language<\/a>"],[100,0,"App\\Models\\Log<\/a>"],[0,10,"App\\Models\\PlatformAccount<\/a>"],[0,7,"App\\Models\\PlatformChannel<\/a>"],[0,3,"App\\Models\\PlatformChannelPost<\/a>"],[0,3,"App\\Models\\PlatformInstance<\/a>"],[50,3,"App\\Models\\Route<\/a>"],[100,10,"App\\Models\\Setting<\/a>"],[100,1,"App\\Models\\User<\/a>"],[0,6,"App\\Modules\\Lemmy\\LemmyRequest<\/a>"],[0,21,"App\\Modules\\Lemmy\\Services\\LemmyApiService<\/a>"],[0,2,"App\\Modules\\Lemmy\\Services\\LemmyPublisher<\/a>"],[82.75862068965517,6,"App\\Providers\\AppServiceProvider<\/a>"],[75,2,"App\\Providers\\HorizonServiceProvider<\/a>"],[45.45454545454545,11,"App\\Services\\Article\\ArticleFetcher<\/a>"],[48,5,"App\\Services\\Article\\ValidationService<\/a>"],[0,6,"App\\Services\\Auth\\LemmyAuthService<\/a>"],[100,13,"App\\Services\\DashboardStatsService<\/a>"],[36.36363636363637,6,"App\\Services\\Factories\\ArticleParserFactory<\/a>"],[87.5,5,"App\\Services\\Factories\\HomepageParserFactory<\/a>"],[22.727272727272727,9,"App\\Services\\Http\\HttpFetcher<\/a>"],[58.82352941176471,6,"App\\Services\\Log\\LogSaver<\/a>"],[0,2,"App\\Services\\OnboardingRedirectService<\/a>"],[0,17,"App\\Services\\Parsers\\BelgaArticlePageParser<\/a>"],[33.33333333333333,3,"App\\Services\\Parsers\\BelgaArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\BelgaHomepageParserAdapter<\/a>"],[0,14,"App\\Services\\Parsers\\VrtArticlePageParser<\/a>"],[33.33333333333333,3,"App\\Services\\Parsers\\VrtArticleParser<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser<\/a>"],[25,4,"App\\Services\\Parsers\\VrtHomepageParserAdapter<\/a>"],[0,5,"App\\Services\\Publishing\\ArticlePublishingService<\/a>"],[0,5,"App\\Services\\RoutingValidationService<\/a>"],[0,8,"App\\Services\\SystemStatusService<\/a>"],[100,1,"App\\LogLevelEnum<\/a>"]], 'Class Complexity')) .transition() .duration(500) .call(chart); @@ -677,7 +633,7 @@

Project Risks

chart.yAxis.axisLabel('Method Complexity'); d3.select('#methodComplexity svg') - .datum(getComplexityData([[75,3,"
App\\Console\\Commands\\FetchNewArticlesCommand::handle<\/a>"],[0,2,"App\\Console\\Commands\\SyncChannelPostsCommand::handle<\/a>"],[0,1,"App\\Console\\Commands\\SyncChannelPostsCommand::syncLemmy<\/a>"],[100,1,"App\\Events\\ArticleApproved::__construct<\/a>"],[100,1,"App\\Events\\ArticleReadyToPublish::__construct<\/a>"],[100,1,"App\\Events\\ExceptionLogged::__construct<\/a>"],[100,1,"App\\Events\\ExceptionOccurred::__construct<\/a>"],[100,1,"App\\Events\\NewArticleFetched::__construct<\/a>"],[0,1,"App\\Exceptions\\PlatformAuthException::__construct<\/a>"],[0,1,"App\\Exceptions\\PlatformAuthException::getPlatform<\/a>"],[0,3,"App\\Exceptions\\PublishException::__construct<\/a>"],[0,1,"App\\Exceptions\\PublishException::getArticle<\/a>"],[0,1,"App\\Exceptions\\PublishException::getPlatform<\/a>"],[0,1,"App\\Exceptions\\RoutingMismatchException::__construct<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::__invoke<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::approve<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::reject<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::create<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\FeedsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController::__invoke<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::index<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::platform<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::feed<\/a>"],[0,4,"App\\Http\\Controllers\\OnboardingController::channel<\/a>"],[0,5,"App\\Http\\Controllers\\OnboardingController::complete<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::needsOnboarding<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasPlatformAccount<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasFeed<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasChannel<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::create<\/a>"],[0,3,"App\\Http\\Controllers\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::edit<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformAccountsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::destroy<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::create<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::index<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::create<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\RoutingController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::update<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::parseJsonFilters<\/a>"],[0,1,"App\\Http\\Controllers\\SettingsController::index<\/a>"],[0,2,"App\\Http\\Controllers\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Middleware\\HandleAppearance::handle<\/a>"],[0,1,"App\\Http\\Middleware\\HandleInertiaRequests::version<\/a>"],[0,1,"App\\Http\\Middleware\\HandleInertiaRequests::share<\/a>"],[0,1,"App\\Http\\Requests\\StoreFeedRequest::authorize<\/a>"],[0,1,"App\\Http\\Requests\\StoreFeedRequest::rules<\/a>"],[0,1,"App\\Http\\Requests\\UpdateFeedRequest::authorize<\/a>"],[0,2,"App\\Http\\Requests\\UpdateFeedRequest::rules<\/a>"],[0,1,"App\\Http\\Resources\\ArticlePublicationResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\ArticleResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\FeedResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource::toArray<\/a>"],[100,1,"App\\Jobs\\ArticleDiscoveryForFeedJob::__construct<\/a>"],[100,1,"App\\Jobs\\ArticleDiscoveryForFeedJob::handle<\/a>"],[100,1,"App\\Jobs\\ArticleDiscoveryForFeedJob::dispatchForAllActiveFeeds<\/a>"],[100,1,"App\\Jobs\\ArticleDiscoveryJob::__construct<\/a>"],[66.66666666666666,2,"App\\Jobs\\ArticleDiscoveryJob::handle<\/a>"],[100,1,"App\\Jobs\\PublishToLemmyJob::__construct<\/a>"],[0,2,"App\\Jobs\\PublishToLemmyJob::handle<\/a>"],[100,1,"App\\Jobs\\SyncChannelPostsJob::__construct<\/a>"],[0,1,"App\\Jobs\\SyncChannelPostsJob::dispatchForAllActiveChannels<\/a>"],[0,2,"App\\Jobs\\SyncChannelPostsJob::handle<\/a>"],[0,4,"App\\Jobs\\SyncChannelPostsJob::syncLemmyChannelPosts<\/a>"],[0,5,"App\\Jobs\\SyncChannelPostsJob::getAuthToken<\/a>"],[0,1,"App\\Listeners\\LogExceptionToDatabase::handle<\/a>"],[80,4,"App\\Listeners\\PublishApprovedArticle::handle<\/a>"],[100,1,"App\\Listeners\\PublishArticle::__construct<\/a>"],[100,2,"App\\Listeners\\PublishArticle::handle<\/a>"],[53.84615384615385,7,"App\\Listeners\\ValidateArticleListener::handle<\/a>"],[100,1,"App\\Models\\Article::casts<\/a>"],[60,3,"App\\Models\\Article::isValid<\/a>"],[100,1,"App\\Models\\Article::isApproved<\/a>"],[0,1,"App\\Models\\Article::isPending<\/a>"],[0,1,"App\\Models\\Article::isRejected<\/a>"],[0,1,"App\\Models\\Article::approve<\/a>"],[0,1,"App\\Models\\Article::reject<\/a>"],[0,3,"App\\Models\\Article::canBePublished<\/a>"],[100,1,"App\\Models\\Article::articlePublication<\/a>"],[100,1,"App\\Models\\Article::feed<\/a>"],[100,1,"App\\Models\\Article::booted<\/a>"],[100,1,"App\\Models\\ArticlePublication::article<\/a>"],[0,4,"App\\Models\\Feed::getTypeDisplayAttribute<\/a>"],[0,5,"App\\Models\\Feed::getStatusAttribute<\/a>"],[0,1,"App\\Models\\Feed::channels<\/a>"],[0,1,"App\\Models\\Feed::activeChannels<\/a>"],[100,1,"App\\Models\\Feed::articles<\/a>"],[100,1,"App\\Models\\Feed::language<\/a>"],[0,1,"App\\Models\\Keyword::feed<\/a>"],[0,1,"App\\Models\\Keyword::platformChannel<\/a>"],[100,1,"App\\Models\\Language::platformInstances<\/a>"],[0,1,"App\\Models\\Language::platformChannels<\/a>"],[0,1,"App\\Models\\Language::feeds<\/a>"],[0,3,"App\\Models\\PlatformAccount::password<\/a>"],[0,3,"App\\Models\\PlatformAccount::apiToken<\/a>"],[0,1,"App\\Models\\PlatformAccount::getActive<\/a>"],[0,1,"App\\Models\\PlatformAccount::setAsActive<\/a>"],[0,1,"App\\Models\\PlatformAccount::channels<\/a>"],[0,1,"App\\Models\\PlatformAccount::activeChannels<\/a>"],[0,1,"App\\Models\\PlatformChannel::platformInstance<\/a>"],[0,1,"App\\Models\\PlatformChannel::platformAccounts<\/a>"],[0,1,"App\\Models\\PlatformChannel::activePlatformAccounts<\/a>"],[0,1,"App\\Models\\PlatformChannel::getFullNameAttribute<\/a>"],[0,1,"App\\Models\\PlatformChannel::feeds<\/a>"],[0,1,"App\\Models\\PlatformChannel::activeFeeds<\/a>"],[0,1,"App\\Models\\PlatformChannel::language<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::casts<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::urlExists<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::storePost<\/a>"],[0,1,"App\\Models\\PlatformInstance::channels<\/a>"],[0,1,"App\\Models\\PlatformInstance::languages<\/a>"],[0,1,"App\\Models\\PlatformInstance::findByUrl<\/a>"],[100,1,"App\\Models\\Route::feed<\/a>"],[100,1,"App\\Models\\Route::platformChannel<\/a>"],[0,1,"App\\Models\\Route::keywords<\/a>"],[100,2,"App\\Models\\Setting::get<\/a>"],[0,1,"App\\Models\\Setting::set<\/a>"],[100,1,"App\\Models\\Setting::getBool<\/a>"],[0,2,"App\\Models\\Setting::setBool<\/a>"],[100,1,"App\\Models\\Setting::isArticleProcessingEnabled<\/a>"],[0,1,"App\\Models\\Setting::setArticleProcessingEnabled<\/a>"],[0,1,"App\\Models\\Setting::isPublishingApprovalsEnabled<\/a>"],[0,1,"App\\Models\\Setting::setPublishingApprovalsEnabled<\/a>"],[100,1,"App\\Models\\User::casts<\/a>"],[0,1,"App\\Modules\\Lemmy\\LemmyRequest::__construct<\/a>"],[0,2,"App\\Modules\\Lemmy\\LemmyRequest::get<\/a>"],[0,2,"App\\Modules\\Lemmy\\LemmyRequest::post<\/a>"],[0,1,"App\\Modules\\Lemmy\\LemmyRequest::withToken<\/a>"],[0,1,"App\\Modules\\Lemmy\\Services\\LemmyApiService::__construct<\/a>"],[0,3,"App\\Modules\\Lemmy\\Services\\LemmyApiService::login<\/a>"],[0,3,"App\\Modules\\Lemmy\\Services\\LemmyApiService::getCommunityId<\/a>"],[0,5,"App\\Modules\\Lemmy\\Services\\LemmyApiService::syncChannelPosts<\/a>"],[0,6,"App\\Modules\\Lemmy\\Services\\LemmyApiService::createPost<\/a>"],[0,3,"App\\Modules\\Lemmy\\Services\\LemmyApiService::getLanguages<\/a>"],[0,1,"App\\Modules\\Lemmy\\Services\\LemmyPublisher::__construct<\/a>"],[0,1,"App\\Modules\\Lemmy\\Services\\LemmyPublisher::publishToChannel<\/a>"],[100,1,"App\\Providers\\AppServiceProvider::register<\/a>"],[92,1,"App\\Providers\\AppServiceProvider::boot<\/a>"],[0,4,"App\\Providers\\AppServiceProvider::mapExceptionToLogLevel<\/a>"],[100,1,"App\\Providers\\HorizonServiceProvider::boot<\/a>"],[66.66666666666666,1,"App\\Providers\\HorizonServiceProvider::gate<\/a>"],[44.44444444444444,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromFeed<\/a>"],[100,1,"App\\Services\\Article\\ArticleFetcher::getArticlesFromRssFeed<\/a>"],[38.88888888888889,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromWebsiteFeed<\/a>"],[77.77777777777779,2,"App\\Services\\Article\\ArticleFetcher::fetchArticleData<\/a>"],[0,2,"App\\Services\\Article\\ArticleFetcher::saveArticle<\/a>"],[66.66666666666666,2,"App\\Services\\Article\\ValidationService::validate<\/a>"],[0,3,"App\\Services\\Article\\ValidationService::validateByKeywords<\/a>"],[0,6,"App\\Services\\Auth\\LemmyAuthService::getToken<\/a>"],[100,4,"App\\Services\\DashboardStatsService::getStats<\/a>"],[100,1,"App\\Services\\DashboardStatsService::getAvailablePeriods<\/a>"],[77.77777777777779,7,"App\\Services\\DashboardStatsService::getDateRange<\/a>"],[100,1,"App\\Services\\DashboardStatsService::getSystemStats<\/a>"],[0,3,"App\\Services\\Factories\\ArticleParserFactory::getParser<\/a>"],[0,1,"App\\Services\\Factories\\ArticleParserFactory::getSupportedSources<\/a>"],[0,2,"App\\Services\\Factories\\ArticleParserFactory::registerParser<\/a>"],[80,3,"App\\Services\\Factories\\HomepageParserFactory::getParser<\/a>"],[100,2,"App\\Services\\Factories\\HomepageParserFactory::getParserForFeed<\/a>"],[90,3,"App\\Services\\Http\\HttpFetcher::fetchHtml<\/a>"],[0,6,"App\\Services\\Http\\HttpFetcher::fetchMultipleUrls<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::info<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::error<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::warning<\/a>"],[0,1,"App\\Services\\Log\\LogSaver::debug<\/a>"],[53.84615384615385,2,"App\\Services\\Log\\LogSaver::log<\/a>"],[0,2,"App\\Services\\OnboardingRedirectService::handleRedirect<\/a>"],[0,5,"App\\Services\\Parsers\\BelgaArticlePageParser::extractTitle<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractDescription<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\BelgaArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticlePageParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getSourceName<\/a>"],[0,4,"App\\Services\\Parsers\\VrtArticlePageParser::extractTitle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractDescription<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticlePageParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getSourceName<\/a>"],[0,3,"App\\Services\\Publishing\\ArticlePublishingService::publishToRoutedChannels<\/a>"],[0,2,"App\\Services\\Publishing\\ArticlePublishingService::publishToChannel<\/a>"],[0,5,"App\\Services\\RoutingValidationService::validateLanguageCompatibility<\/a>"],[0,7,"App\\Services\\SystemStatusService::getSystemStatus<\/a>"],[0,1,"App\\Services\\SystemStatusService::canProcessArticles<\/a>"],[100,1,"App\\LogLevelEnum::toArray<\/a>"]], 'Method Complexity')) + .datum(getComplexityData([[75,3,"App\\Console\\Commands\\FetchNewArticlesCommand::handle<\/a>"],[0,2,"App\\Console\\Commands\\SyncChannelPostsCommand::handle<\/a>"],[0,1,"App\\Console\\Commands\\SyncChannelPostsCommand::syncLemmy<\/a>"],[100,1,"App\\Events\\ArticleApproved::__construct<\/a>"],[100,1,"App\\Events\\ArticleReadyToPublish::__construct<\/a>"],[100,1,"App\\Events\\ExceptionLogged::__construct<\/a>"],[100,1,"App\\Events\\ExceptionOccurred::__construct<\/a>"],[100,1,"App\\Events\\NewArticleFetched::__construct<\/a>"],[0,1,"App\\Exceptions\\PlatformAuthException::__construct<\/a>"],[0,1,"App\\Exceptions\\PlatformAuthException::getPlatform<\/a>"],[0,3,"App\\Exceptions\\PublishException::__construct<\/a>"],[0,1,"App\\Exceptions\\PublishException::getArticle<\/a>"],[0,1,"App\\Exceptions\\PublishException::getPlatform<\/a>"],[0,1,"App\\Exceptions\\RoutingMismatchException::__construct<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::index<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::approve<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\ArticlesController::reject<\/a>"],[0,5,"App\\Http\\Controllers\\Api\\V1\\AuthController::login<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\AuthController::register<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\AuthController::logout<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\AuthController::me<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendResponse<\/a>"],[100,2,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendError<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendValidationError<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendNotFound<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\BaseController::sendUnauthorized<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\DashboardController::__construct<\/a>"],[83.33333333333334,2,"App\\Http\\Controllers\\Api\\V1\\DashboardController::stats<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::index<\/a>"],[66.66666666666666,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::store<\/a>"],[100,1,"App\\Http\\Controllers\\Api\\V1\\FeedsController::show<\/a>"],[63.63636363636363,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::update<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\FeedsController::destroy<\/a>"],[77.77777777777779,3,"App\\Http\\Controllers\\Api\\V1\\FeedsController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\LogsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::index<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::show<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::update<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\Api\\V1\\RoutingController::index<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\Api\\V1\\RoutingController::show<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::update<\/a>"],[0,3,"App\\Http\\Controllers\\Api\\V1\\RoutingController::destroy<\/a>"],[0,4,"App\\Http\\Controllers\\Api\\V1\\RoutingController::toggle<\/a>"],[71.42857142857143,2,"App\\Http\\Controllers\\Api\\V1\\SettingsController::index<\/a>"],[90,5,"App\\Http\\Controllers\\Api\\V1\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::__invoke<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::approve<\/a>"],[0,1,"App\\Http\\Controllers\\ArticlesController::reject<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::create<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\FeedsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\FeedsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\LogsController::__invoke<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::index<\/a>"],[0,2,"App\\Http\\Controllers\\OnboardingController::platform<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::feed<\/a>"],[0,4,"App\\Http\\Controllers\\OnboardingController::channel<\/a>"],[0,5,"App\\Http\\Controllers\\OnboardingController::complete<\/a>"],[0,3,"App\\Http\\Controllers\\OnboardingController::needsOnboarding<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasPlatformAccount<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasFeed<\/a>"],[0,1,"App\\Http\\Controllers\\OnboardingController::hasChannel<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::create<\/a>"],[0,3,"App\\Http\\Controllers\\PlatformAccountsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::edit<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformAccountsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::destroy<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformAccountsController::setActive<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::index<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::create<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::store<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::show<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::update<\/a>"],[0,1,"App\\Http\\Controllers\\PlatformChannelsController::destroy<\/a>"],[0,2,"App\\Http\\Controllers\\PlatformChannelsController::toggle<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::index<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::create<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::store<\/a>"],[0,2,"App\\Http\\Controllers\\RoutingController::edit<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::update<\/a>"],[0,1,"App\\Http\\Controllers\\RoutingController::destroy<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::toggle<\/a>"],[0,3,"App\\Http\\Controllers\\RoutingController::parseJsonFilters<\/a>"],[0,1,"App\\Http\\Controllers\\SettingsController::index<\/a>"],[0,2,"App\\Http\\Controllers\\SettingsController::update<\/a>"],[0,1,"App\\Http\\Middleware\\HandleAppearance::handle<\/a>"],[0,1,"App\\Http\\Middleware\\HandleInertiaRequests::version<\/a>"],[0,1,"App\\Http\\Middleware\\HandleInertiaRequests::share<\/a>"],[100,1,"App\\Http\\Requests\\StoreFeedRequest::authorize<\/a>"],[100,1,"App\\Http\\Requests\\StoreFeedRequest::rules<\/a>"],[100,1,"App\\Http\\Requests\\UpdateFeedRequest::authorize<\/a>"],[100,2,"App\\Http\\Requests\\UpdateFeedRequest::rules<\/a>"],[0,1,"App\\Http\\Resources\\ArticlePublicationResource::toArray<\/a>"],[100,1,"App\\Http\\Resources\\ArticleResource::toArray<\/a>"],[100,1,"App\\Http\\Resources\\FeedResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformAccountResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformChannelResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\PlatformInstanceResource::toArray<\/a>"],[0,1,"App\\Http\\Resources\\RouteResource::toArray<\/a>"],[100,1,"App\\Jobs\\ArticleDiscoveryForFeedJob::__construct<\/a>"],[100,1,"App\\Jobs\\ArticleDiscoveryForFeedJob::handle<\/a>"],[100,1,"App\\Jobs\\ArticleDiscoveryForFeedJob::dispatchForAllActiveFeeds<\/a>"],[100,1,"App\\Jobs\\ArticleDiscoveryJob::__construct<\/a>"],[66.66666666666666,2,"App\\Jobs\\ArticleDiscoveryJob::handle<\/a>"],[100,1,"App\\Jobs\\PublishToLemmyJob::__construct<\/a>"],[0,2,"App\\Jobs\\PublishToLemmyJob::handle<\/a>"],[100,1,"App\\Jobs\\SyncChannelPostsJob::__construct<\/a>"],[0,1,"App\\Jobs\\SyncChannelPostsJob::dispatchForAllActiveChannels<\/a>"],[0,2,"App\\Jobs\\SyncChannelPostsJob::handle<\/a>"],[0,4,"App\\Jobs\\SyncChannelPostsJob::syncLemmyChannelPosts<\/a>"],[0,5,"App\\Jobs\\SyncChannelPostsJob::getAuthToken<\/a>"],[0,1,"App\\Listeners\\LogExceptionToDatabase::handle<\/a>"],[80,4,"App\\Listeners\\PublishApprovedArticle::handle<\/a>"],[100,1,"App\\Listeners\\PublishArticle::__construct<\/a>"],[100,2,"App\\Listeners\\PublishArticle::handle<\/a>"],[53.84615384615385,7,"App\\Listeners\\ValidateArticleListener::handle<\/a>"],[100,1,"App\\Models\\Article::casts<\/a>"],[100,3,"App\\Models\\Article::isValid<\/a>"],[100,1,"App\\Models\\Article::isApproved<\/a>"],[100,1,"App\\Models\\Article::isPending<\/a>"],[100,1,"App\\Models\\Article::isRejected<\/a>"],[100,1,"App\\Models\\Article::approve<\/a>"],[100,1,"App\\Models\\Article::reject<\/a>"],[100,3,"App\\Models\\Article::canBePublished<\/a>"],[100,1,"App\\Models\\Article::articlePublication<\/a>"],[100,1,"App\\Models\\Article::feed<\/a>"],[100,1,"App\\Models\\Article::booted<\/a>"],[100,1,"App\\Models\\ArticlePublication::article<\/a>"],[0,4,"App\\Models\\Feed::getTypeDisplayAttribute<\/a>"],[0,5,"App\\Models\\Feed::getStatusAttribute<\/a>"],[0,1,"App\\Models\\Feed::channels<\/a>"],[0,1,"App\\Models\\Feed::activeChannels<\/a>"],[100,1,"App\\Models\\Feed::articles<\/a>"],[100,1,"App\\Models\\Feed::language<\/a>"],[0,1,"App\\Models\\Keyword::feed<\/a>"],[0,1,"App\\Models\\Keyword::platformChannel<\/a>"],[100,1,"App\\Models\\Language::platformInstances<\/a>"],[0,1,"App\\Models\\Language::platformChannels<\/a>"],[0,1,"App\\Models\\Language::feeds<\/a>"],[0,3,"App\\Models\\PlatformAccount::password<\/a>"],[0,3,"App\\Models\\PlatformAccount::apiToken<\/a>"],[0,1,"App\\Models\\PlatformAccount::getActive<\/a>"],[0,1,"App\\Models\\PlatformAccount::setAsActive<\/a>"],[0,1,"App\\Models\\PlatformAccount::channels<\/a>"],[0,1,"App\\Models\\PlatformAccount::activeChannels<\/a>"],[0,1,"App\\Models\\PlatformChannel::platformInstance<\/a>"],[0,1,"App\\Models\\PlatformChannel::platformAccounts<\/a>"],[0,1,"App\\Models\\PlatformChannel::activePlatformAccounts<\/a>"],[0,1,"App\\Models\\PlatformChannel::getFullNameAttribute<\/a>"],[0,1,"App\\Models\\PlatformChannel::feeds<\/a>"],[0,1,"App\\Models\\PlatformChannel::activeFeeds<\/a>"],[0,1,"App\\Models\\PlatformChannel::language<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::casts<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::urlExists<\/a>"],[0,1,"App\\Models\\PlatformChannelPost::storePost<\/a>"],[0,1,"App\\Models\\PlatformInstance::channels<\/a>"],[0,1,"App\\Models\\PlatformInstance::languages<\/a>"],[0,1,"App\\Models\\PlatformInstance::findByUrl<\/a>"],[100,1,"App\\Models\\Route::feed<\/a>"],[100,1,"App\\Models\\Route::platformChannel<\/a>"],[0,1,"App\\Models\\Route::keywords<\/a>"],[100,2,"App\\Models\\Setting::get<\/a>"],[100,1,"App\\Models\\Setting::set<\/a>"],[100,1,"App\\Models\\Setting::getBool<\/a>"],[100,2,"App\\Models\\Setting::setBool<\/a>"],[100,1,"App\\Models\\Setting::isArticleProcessingEnabled<\/a>"],[100,1,"App\\Models\\Setting::setArticleProcessingEnabled<\/a>"],[100,1,"App\\Models\\Setting::isPublishingApprovalsEnabled<\/a>"],[100,1,"App\\Models\\Setting::setPublishingApprovalsEnabled<\/a>"],[100,1,"App\\Models\\User::casts<\/a>"],[0,1,"App\\Modules\\Lemmy\\LemmyRequest::__construct<\/a>"],[0,2,"App\\Modules\\Lemmy\\LemmyRequest::get<\/a>"],[0,2,"App\\Modules\\Lemmy\\LemmyRequest::post<\/a>"],[0,1,"App\\Modules\\Lemmy\\LemmyRequest::withToken<\/a>"],[0,1,"App\\Modules\\Lemmy\\Services\\LemmyApiService::__construct<\/a>"],[0,3,"App\\Modules\\Lemmy\\Services\\LemmyApiService::login<\/a>"],[0,3,"App\\Modules\\Lemmy\\Services\\LemmyApiService::getCommunityId<\/a>"],[0,5,"App\\Modules\\Lemmy\\Services\\LemmyApiService::syncChannelPosts<\/a>"],[0,6,"App\\Modules\\Lemmy\\Services\\LemmyApiService::createPost<\/a>"],[0,3,"App\\Modules\\Lemmy\\Services\\LemmyApiService::getLanguages<\/a>"],[0,1,"App\\Modules\\Lemmy\\Services\\LemmyPublisher::__construct<\/a>"],[0,1,"App\\Modules\\Lemmy\\Services\\LemmyPublisher::publishToChannel<\/a>"],[100,1,"App\\Providers\\AppServiceProvider::register<\/a>"],[92,1,"App\\Providers\\AppServiceProvider::boot<\/a>"],[0,4,"App\\Providers\\AppServiceProvider::mapExceptionToLogLevel<\/a>"],[100,1,"App\\Providers\\HorizonServiceProvider::boot<\/a>"],[66.66666666666666,1,"App\\Providers\\HorizonServiceProvider::gate<\/a>"],[44.44444444444444,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromFeed<\/a>"],[100,1,"App\\Services\\Article\\ArticleFetcher::getArticlesFromRssFeed<\/a>"],[38.88888888888889,3,"App\\Services\\Article\\ArticleFetcher::getArticlesFromWebsiteFeed<\/a>"],[88.88888888888889,2,"App\\Services\\Article\\ArticleFetcher::fetchArticleData<\/a>"],[0,2,"App\\Services\\Article\\ArticleFetcher::saveArticle<\/a>"],[66.66666666666666,2,"App\\Services\\Article\\ValidationService::validate<\/a>"],[0,3,"App\\Services\\Article\\ValidationService::validateByKeywords<\/a>"],[0,6,"App\\Services\\Auth\\LemmyAuthService::getToken<\/a>"],[100,4,"App\\Services\\DashboardStatsService::getStats<\/a>"],[100,1,"App\\Services\\DashboardStatsService::getAvailablePeriods<\/a>"],[100,7,"App\\Services\\DashboardStatsService::getDateRange<\/a>"],[100,1,"App\\Services\\DashboardStatsService::getSystemStats<\/a>"],[80,3,"App\\Services\\Factories\\ArticleParserFactory::getParser<\/a>"],[0,1,"App\\Services\\Factories\\ArticleParserFactory::getSupportedSources<\/a>"],[0,2,"App\\Services\\Factories\\ArticleParserFactory::registerParser<\/a>"],[80,3,"App\\Services\\Factories\\HomepageParserFactory::getParser<\/a>"],[100,2,"App\\Services\\Factories\\HomepageParserFactory::getParserForFeed<\/a>"],[100,3,"App\\Services\\Http\\HttpFetcher::fetchHtml<\/a>"],[0,6,"App\\Services\\Http\\HttpFetcher::fetchMultipleUrls<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::info<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::error<\/a>"],[100,1,"App\\Services\\Log\\LogSaver::warning<\/a>"],[0,1,"App\\Services\\Log\\LogSaver::debug<\/a>"],[53.84615384615385,2,"App\\Services\\Log\\LogSaver::log<\/a>"],[0,2,"App\\Services\\OnboardingRedirectService::handleRedirect<\/a>"],[0,5,"App\\Services\\Parsers\\BelgaArticlePageParser::extractTitle<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractDescription<\/a>"],[0,4,"App\\Services\\Parsers\\BelgaArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\BelgaArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticlePageParser::extractData<\/a>"],[100,1,"App\\Services\\Parsers\\BelgaArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\BelgaHomepageParserAdapter::getSourceName<\/a>"],[0,4,"App\\Services\\Parsers\\VrtArticlePageParser::extractTitle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractDescription<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractFullArticle<\/a>"],[0,3,"App\\Services\\Parsers\\VrtArticlePageParser::extractThumbnail<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticlePageParser::extractData<\/a>"],[100,1,"App\\Services\\Parsers\\VrtArticleParser::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::extractData<\/a>"],[0,1,"App\\Services\\Parsers\\VrtArticleParser::getSourceName<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParser::extractArticleUrls<\/a>"],[100,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::canParse<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::extractArticleUrls<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getHomepageUrl<\/a>"],[0,1,"App\\Services\\Parsers\\VrtHomepageParserAdapter::getSourceName<\/a>"],[0,3,"App\\Services\\Publishing\\ArticlePublishingService::publishToRoutedChannels<\/a>"],[0,2,"App\\Services\\Publishing\\ArticlePublishingService::publishToChannel<\/a>"],[0,5,"App\\Services\\RoutingValidationService::validateLanguageCompatibility<\/a>"],[0,7,"App\\Services\\SystemStatusService::getSystemStatus<\/a>"],[0,1,"App\\Services\\SystemStatusService::canProcessArticles<\/a>"],[100,1,"App\\LogLevelEnum::toArray<\/a>"]], 'Method Complexity')) .transition() .duration(500) .call(chart); diff --git a/backend/coverage-report/index.html b/backend/coverage-report/index.html index 46207a5..83f8ae5 100644 --- a/backend/coverage-report/index.html +++ b/backend/coverage-report/index.html @@ -44,29 +44,29 @@ Total
-
- 14.12% covered (danger) +
+ 26.08% covered (danger)
-
14.12%
-
235 / 1664
+
26.08%
+
434 / 1664
-
- 15.77% covered (danger) +
+ 26.54% covered (danger)
-
15.77%
-
41 / 260
+
26.54%
+
69 / 260
-
- 11.76% covered (danger) +
+ 20.00% covered (danger)
-
11.76%
-
10 / 85
+
20.00%
+
17 / 85
@@ -182,29 +182,29 @@
Http
-
- 0.00% covered (danger) +
+ 20.07% covered (danger)
-
0.00%
-
0 / 817
+
20.07%
+
164 / 817
-
- 0.00% covered (danger) +
+ 12.87% covered (danger)
-
0.00%
-
0 / 101
+
12.87%
+
13 / 101
-
- 0.00% covered (danger) +
+ 13.79% covered (danger)
-
0.00%
-
0 / 29
+
13.79%
+
4 / 29
@@ -266,29 +266,29 @@ Models
-
- 23.68% covered (danger) +
+ 40.13% covered (danger)
-
23.68%
-
36 / 152
+
40.13%
+
61 / 152
-
- 27.78% covered (danger) +
+ 48.15% covered (danger)
-
27.78%
-
15 / 54
+
48.15%
+
26 / 54
-
- 16.67% covered (danger) +
+ 33.33% covered (danger)
-
16.67%
-
2 / 12
+
33.33%
+
4 / 12
@@ -350,29 +350,29 @@ Services
-
- 26.15% covered (danger) +
+ 28.84% covered (danger)
-
26.15%
-
97 / 371
+
28.84%
+
107 / 371
-
- 17.86% covered (danger) +
+ 25.00% covered (danger)
-
17.86%
-
10 / 56
+
25.00%
+
14 / 56
-
- 0.00% covered (danger) +
+ 5.00% covered (danger)
-
0.00%
-
0 / 20
+
5.00%
+
1 / 20
@@ -416,7 +416,7 @@

Legend

High: 90% to 100%

- Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 18:47:16 UTC 2025. + Generated by php-code-coverage 11.0.10 using PHP 8.4.10 and PHPUnit 11.5.28 at Sun Aug 3 19:15:34 UTC 2025.