fedi-feed-router/tests/Traits/CreatesFetchActions.php

53 lines
1.6 KiB
PHP
Raw Permalink Normal View History

2025-08-15 02:50:42 +02:00
<?php
namespace Tests\Traits;
use App\Actions\FetchArticleDataAction;
use App\Actions\FetchFeedArticlesAction;
use App\Actions\FetchRssArticlesAction;
use App\Actions\FetchWebsiteArticlesAction;
use App\Actions\SaveArticleAction;
2025-08-15 02:50:42 +02:00
use App\Services\Log\LogSaver;
use Mockery;
use Mockery\MockInterface;
2025-08-15 02:50:42 +02:00
trait CreatesFetchActions
2025-08-15 02:50:42 +02:00
{
protected function createFeedFetcher(?LogSaver $logSaver = null): FetchFeedArticlesAction
2025-08-15 02:50:42 +02:00
{
$logSaver ??= $this->mockLogSaver();
$saveArticle = new SaveArticleAction($logSaver);
2025-08-15 02:50:42 +02:00
return new FetchFeedArticlesAction(
$logSaver,
new FetchRssArticlesAction($logSaver, $saveArticle),
new FetchWebsiteArticlesAction($logSaver, $saveArticle),
);
2025-08-15 02:50:42 +02:00
}
protected function createArticleDataFetcher(?LogSaver $logSaver = null): FetchArticleDataAction
{
return new FetchArticleDataAction($logSaver ?? $this->mockLogSaver());
}
/** @return array{FetchFeedArticlesAction, MockInterface} */
protected function createFeedFetcherWithMockedLogSaver(): array
{
$logSaver = $this->mockLogSaver();
return [$this->createFeedFetcher($logSaver), $logSaver];
}
/** @return LogSaver&MockInterface */
private function mockLogSaver(): MockInterface
2025-08-15 02:50:42 +02:00
{
$logSaver = Mockery::mock(LogSaver::class);
$logSaver->shouldReceive('info')->zeroOrMoreTimes();
$logSaver->shouldReceive('warning')->zeroOrMoreTimes();
$logSaver->shouldReceive('error')->zeroOrMoreTimes();
$logSaver->shouldReceive('debug')->zeroOrMoreTimes();
return $logSaver;
2025-08-15 02:50:42 +02:00
}
}