144 - Rename ValidationService to ValidateArticleAction
This commit is contained in:
parent
dd8f799445
commit
d58fd8a231
5 changed files with 36 additions and 36 deletions
|
|
@ -1,18 +1,18 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Services\Article;
|
namespace App\Actions;
|
||||||
|
|
||||||
use App\Actions\CreateRouteArticlesAction;
|
|
||||||
use App\Models\Article;
|
use App\Models\Article;
|
||||||
|
use App\Services\Article\ArticleFetcher;
|
||||||
|
|
||||||
class ValidationService
|
class ValidateArticleAction
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private ArticleFetcher $articleFetcher,
|
private ArticleFetcher $articleFetcher,
|
||||||
private CreateRouteArticlesAction $createRouteArticles,
|
private CreateRouteArticlesAction $createRouteArticles,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function validate(Article $article): Article
|
public function execute(Article $article): Article
|
||||||
{
|
{
|
||||||
logger('Validating article for routes: '.$article->id);
|
logger('Validating article for routes: '.$article->id);
|
||||||
|
|
||||||
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
namespace App\Listeners;
|
namespace App\Listeners;
|
||||||
|
|
||||||
|
use App\Actions\ValidateArticleAction;
|
||||||
use App\Enums\ActivityTypeEnum;
|
use App\Enums\ActivityTypeEnum;
|
||||||
use App\Enums\LogLevelEnum;
|
use App\Enums\LogLevelEnum;
|
||||||
use App\Events\ActionPerformed;
|
use App\Events\ActionPerformed;
|
||||||
use App\Events\ActivityLogged;
|
use App\Events\ActivityLogged;
|
||||||
use App\Events\NewArticleFetched;
|
use App\Events\NewArticleFetched;
|
||||||
use App\Services\Article\ValidationService;
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
|
||||||
|
|
@ -16,7 +16,7 @@ class ValidateArticleListener implements ShouldQueue
|
||||||
public string $queue = 'default';
|
public string $queue = 'default';
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private ValidationService $validationService
|
private ValidateArticleAction $validateArticle
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function handle(NewArticleFetched $event): void
|
public function handle(NewArticleFetched $event): void
|
||||||
|
|
@ -33,7 +33,7 @@ public function handle(NewArticleFetched $event): void
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
ActivityLogged::dispatch(
|
ActivityLogged::dispatch(
|
||||||
ActivityTypeEnum::VALIDATE,
|
ActivityTypeEnum::VALIDATE,
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
namespace Tests\Feature;
|
namespace Tests\Feature;
|
||||||
|
|
||||||
use App\Actions\CreateRouteArticlesAction;
|
use App\Actions\CreateRouteArticlesAction;
|
||||||
|
use App\Actions\ValidateArticleAction;
|
||||||
use App\Enums\ApprovalStatusEnum;
|
use App\Enums\ApprovalStatusEnum;
|
||||||
use App\Livewire\Articles;
|
use App\Livewire\Articles;
|
||||||
use App\Models\Article;
|
use App\Models\Article;
|
||||||
|
|
@ -13,7 +14,6 @@
|
||||||
use App\Models\RouteArticle;
|
use App\Models\RouteArticle;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Services\Article\ArticleFetcher;
|
use App\Services\Article\ArticleFetcher;
|
||||||
use App\Services\Article\ValidationService;
|
|
||||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
use Livewire\Livewire;
|
use Livewire\Livewire;
|
||||||
use Mockery;
|
use Mockery;
|
||||||
|
|
@ -135,7 +135,7 @@ private function validate(Article $article): void
|
||||||
'full_article' => 'Body text',
|
'full_article' => 'Body text',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
(new ValidationService($fetcher, new CreateRouteArticlesAction))->validate($article);
|
(new ValidateArticleAction($fetcher, new CreateRouteArticlesAction))->execute($article);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function articleOnRouteWithoutKeywords(bool $autoApprove): Article
|
private function articleOnRouteWithoutKeywords(bool $autoApprove): Article
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
namespace Tests\Feature;
|
namespace Tests\Feature;
|
||||||
|
|
||||||
use App\Actions\CreateRouteArticlesAction;
|
use App\Actions\CreateRouteArticlesAction;
|
||||||
|
use App\Actions\ValidateArticleAction;
|
||||||
use App\Enums\ApprovalStatusEnum;
|
use App\Enums\ApprovalStatusEnum;
|
||||||
use App\Events\NewArticleFetched;
|
use App\Events\NewArticleFetched;
|
||||||
use App\Listeners\ValidateArticleListener;
|
use App\Listeners\ValidateArticleListener;
|
||||||
|
|
@ -13,7 +14,6 @@
|
||||||
use App\Models\Route;
|
use App\Models\Route;
|
||||||
use App\Models\RouteArticle;
|
use App\Models\RouteArticle;
|
||||||
use App\Services\Article\ArticleFetcher;
|
use App\Services\Article\ArticleFetcher;
|
||||||
use App\Services\Article\ValidationService;
|
|
||||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
use Mockery;
|
use Mockery;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
@ -34,7 +34,7 @@ private function createListenerWithMockedFetcher(?string $content = 'Some articl
|
||||||
);
|
);
|
||||||
|
|
||||||
return new ValidateArticleListener(
|
return new ValidateArticleListener(
|
||||||
new ValidationService($articleFetcher, new CreateRouteArticlesAction)
|
new ValidateArticleAction($articleFetcher, new CreateRouteArticlesAction)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -115,7 +115,7 @@ public function test_listener_handles_validation_errors_gracefully(): void
|
||||||
$articleFetcher->shouldReceive('fetchArticleData')->andThrow(new \Exception('Fetch failed'));
|
$articleFetcher->shouldReceive('fetchArticleData')->andThrow(new \Exception('Fetch failed'));
|
||||||
|
|
||||||
$listener = new ValidateArticleListener(
|
$listener = new ValidateArticleListener(
|
||||||
new ValidationService($articleFetcher, new CreateRouteArticlesAction)
|
new ValidateArticleAction($articleFetcher, new CreateRouteArticlesAction)
|
||||||
);
|
);
|
||||||
|
|
||||||
$feed = Feed::factory()->create();
|
$feed = Feed::factory()->create();
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Tests\Unit\Services;
|
namespace Tests\Unit\Actions;
|
||||||
|
|
||||||
use App\Actions\CreateRouteArticlesAction;
|
use App\Actions\CreateRouteArticlesAction;
|
||||||
|
use App\Actions\ValidateArticleAction;
|
||||||
use App\Enums\ApprovalStatusEnum;
|
use App\Enums\ApprovalStatusEnum;
|
||||||
use App\Models\Article;
|
use App\Models\Article;
|
||||||
use App\Models\Feed;
|
use App\Models\Feed;
|
||||||
|
|
@ -12,17 +13,16 @@
|
||||||
use App\Models\RouteArticle;
|
use App\Models\RouteArticle;
|
||||||
use App\Models\Setting;
|
use App\Models\Setting;
|
||||||
use App\Services\Article\ArticleFetcher;
|
use App\Services\Article\ArticleFetcher;
|
||||||
use App\Services\Article\ValidationService;
|
|
||||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
use Mockery;
|
use Mockery;
|
||||||
use Mockery\MockInterface;
|
use Mockery\MockInterface;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
class ValidationServiceTest extends TestCase
|
class ValidateArticleActionTest extends TestCase
|
||||||
{
|
{
|
||||||
use RefreshDatabase;
|
use RefreshDatabase;
|
||||||
|
|
||||||
private ValidationService $validationService;
|
private ValidateArticleAction $validateArticle;
|
||||||
|
|
||||||
private MockInterface $articleFetcher;
|
private MockInterface $articleFetcher;
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ protected function setUp(): void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->articleFetcher = Mockery::mock(ArticleFetcher::class);
|
$this->articleFetcher = Mockery::mock(ArticleFetcher::class);
|
||||||
$this->validationService = new ValidationService($this->articleFetcher, new CreateRouteArticlesAction);
|
$this->validateArticle = new ValidateArticleAction($this->articleFetcher, new CreateRouteArticlesAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown(): void
|
protected function tearDown(): void
|
||||||
|
|
@ -76,7 +76,7 @@ public function test_validate_sets_validated_at_on_article(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about Belgium');
|
$this->mockFetchReturning($article, 'Article about Belgium');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$this->assertNotNull($article->fresh()->validated_at);
|
$this->assertNotNull($article->fresh()->validated_at);
|
||||||
}
|
}
|
||||||
|
|
@ -90,7 +90,7 @@ public function test_validate_creates_route_articles_for_active_routes(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Some article content');
|
$this->mockFetchReturning($article, 'Some article content');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$this->assertCount(2, RouteArticle::where('article_id', $article->id)->get());
|
$this->assertCount(2, RouteArticle::where('article_id', $article->id)->get());
|
||||||
}
|
}
|
||||||
|
|
@ -104,7 +104,7 @@ public function test_validate_skips_inactive_routes(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Some article content');
|
$this->mockFetchReturning($article, 'Some article content');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$this->assertCount(1, RouteArticle::where('article_id', $article->id)->get());
|
$this->assertCount(1, RouteArticle::where('article_id', $article->id)->get());
|
||||||
}
|
}
|
||||||
|
|
@ -123,7 +123,7 @@ public function test_validate_sets_pending_when_keywords_match(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about Belgium politics');
|
$this->mockFetchReturning($article, 'Article about Belgium politics');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
$this->assertEquals(ApprovalStatusEnum::PENDING, $routeArticle->approval_status);
|
$this->assertEquals(ApprovalStatusEnum::PENDING, $routeArticle->approval_status);
|
||||||
|
|
@ -143,7 +143,7 @@ public function test_validate_sets_rejected_when_no_keywords_match(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about random topics and weather');
|
$this->mockFetchReturning($article, 'Article about random topics and weather');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
$this->assertEquals(ApprovalStatusEnum::REJECTED, $routeArticle->approval_status);
|
$this->assertEquals(ApprovalStatusEnum::REJECTED, $routeArticle->approval_status);
|
||||||
|
|
@ -157,7 +157,7 @@ public function test_validate_sets_pending_when_route_has_no_keywords(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about random topics');
|
$this->mockFetchReturning($article, 'Article about random topics');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
$this->assertEquals(ApprovalStatusEnum::PENDING, $routeArticle->approval_status);
|
$this->assertEquals(ApprovalStatusEnum::PENDING, $routeArticle->approval_status);
|
||||||
|
|
@ -192,7 +192,7 @@ public function test_validate_different_routes_get_different_statuses(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about Belgium');
|
$this->mockFetchReturning($article, 'Article about Belgium');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$ra1 = RouteArticle::where('article_id', $article->id)
|
$ra1 = RouteArticle::where('article_id', $article->id)
|
||||||
->where('platform_channel_id', $channel1->id)->first();
|
->where('platform_channel_id', $channel1->id)->first();
|
||||||
|
|
@ -219,7 +219,7 @@ public function test_validate_auto_approves_when_global_setting_off_and_keywords
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about Belgium');
|
$this->mockFetchReturning($article, 'Article about Belgium');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
$this->assertEquals(ApprovalStatusEnum::APPROVED, $routeArticle->approval_status);
|
$this->assertEquals(ApprovalStatusEnum::APPROVED, $routeArticle->approval_status);
|
||||||
|
|
@ -244,7 +244,7 @@ public function test_validate_route_auto_approve_overrides_global_setting(): voi
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about Belgium');
|
$this->mockFetchReturning($article, 'Article about Belgium');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
$this->assertEquals(ApprovalStatusEnum::APPROVED, $routeArticle->approval_status);
|
$this->assertEquals(ApprovalStatusEnum::APPROVED, $routeArticle->approval_status);
|
||||||
|
|
@ -269,7 +269,7 @@ public function test_validate_route_auto_approve_false_overrides_global_off(): v
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about Belgium');
|
$this->mockFetchReturning($article, 'Article about Belgium');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
$this->assertEquals(ApprovalStatusEnum::PENDING, $routeArticle->approval_status);
|
$this->assertEquals(ApprovalStatusEnum::PENDING, $routeArticle->approval_status);
|
||||||
|
|
@ -291,7 +291,7 @@ public function test_validate_does_not_auto_approve_rejected_articles(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Random content no match');
|
$this->mockFetchReturning($article, 'Random content no match');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
$this->assertEquals(ApprovalStatusEnum::REJECTED, $routeArticle->approval_status);
|
$this->assertEquals(ApprovalStatusEnum::REJECTED, $routeArticle->approval_status);
|
||||||
|
|
@ -305,7 +305,7 @@ public function test_validate_creates_no_route_articles_when_content_fetch_fails
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, null);
|
$this->mockFetchReturning($article, null);
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$this->assertCount(0, RouteArticle::where('article_id', $article->id)->get());
|
$this->assertCount(0, RouteArticle::where('article_id', $article->id)->get());
|
||||||
$this->assertNotNull($article->fresh()->validated_at);
|
$this->assertNotNull($article->fresh()->validated_at);
|
||||||
|
|
@ -322,7 +322,7 @@ public function test_validate_updates_article_metadata(): void
|
||||||
]);
|
]);
|
||||||
$this->mockFetchReturning($article, 'Content about Belgium', 'New Title', 'New description');
|
$this->mockFetchReturning($article, 'Content about Belgium', 'New Title', 'New description');
|
||||||
|
|
||||||
$result = $this->validationService->validate($article);
|
$result = $this->validateArticle->execute($article);
|
||||||
|
|
||||||
$this->assertEquals('New Title', $result->title);
|
$this->assertEquals('New Title', $result->title);
|
||||||
$this->assertEquals('New description', $result->description);
|
$this->assertEquals('New description', $result->description);
|
||||||
|
|
@ -337,7 +337,7 @@ public function test_validate_sets_validated_at_on_route_articles(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Content about something');
|
$this->mockFetchReturning($article, 'Content about something');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
$this->assertNotNull($routeArticle->validated_at);
|
$this->assertNotNull($routeArticle->validated_at);
|
||||||
|
|
@ -357,7 +357,7 @@ public function test_validate_keyword_matching_is_case_insensitive(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about BELGIUM politics');
|
$this->mockFetchReturning($article, 'Article about BELGIUM politics');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
$this->assertEquals(ApprovalStatusEnum::PENDING, $routeArticle->approval_status);
|
$this->assertEquals(ApprovalStatusEnum::PENDING, $routeArticle->approval_status);
|
||||||
|
|
@ -377,7 +377,7 @@ public function test_validate_only_uses_active_keywords(): void
|
||||||
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
$article = Article::factory()->create(['feed_id' => $feed->id]);
|
||||||
$this->mockFetchReturning($article, 'Article about Belgium');
|
$this->mockFetchReturning($article, 'Article about Belgium');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
// No active keywords = matches everything = pending
|
// No active keywords = matches everything = pending
|
||||||
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
$routeArticle = RouteArticle::where('article_id', $article->id)->first();
|
||||||
|
|
@ -395,7 +395,7 @@ public function test_validate_stores_thumbnail_in_image_url(): void
|
||||||
]);
|
]);
|
||||||
$this->mockFetchReturning($article, 'Content about Belgium', thumbnail: 'https://example.com/thumb.jpg');
|
$this->mockFetchReturning($article, 'Content about Belgium', thumbnail: 'https://example.com/thumb.jpg');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$this->assertEquals('https://example.com/thumb.jpg', $article->fresh()->image_url);
|
$this->assertEquals('https://example.com/thumb.jpg', $article->fresh()->image_url);
|
||||||
}
|
}
|
||||||
|
|
@ -411,7 +411,7 @@ public function test_validate_stores_thumbnail_when_full_article_is_missing(): v
|
||||||
]);
|
]);
|
||||||
$this->mockFetchReturning($article, null, thumbnail: 'https://example.com/thumb.jpg');
|
$this->mockFetchReturning($article, null, thumbnail: 'https://example.com/thumb.jpg');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$this->assertEquals('https://example.com/thumb.jpg', $article->fresh()->image_url);
|
$this->assertEquals('https://example.com/thumb.jpg', $article->fresh()->image_url);
|
||||||
}
|
}
|
||||||
|
|
@ -427,7 +427,7 @@ public function test_validate_leaves_image_url_null_when_parser_returns_no_thumb
|
||||||
]);
|
]);
|
||||||
$this->mockFetchReturning($article, 'Content about Belgium');
|
$this->mockFetchReturning($article, 'Content about Belgium');
|
||||||
|
|
||||||
$this->validationService->validate($article);
|
$this->validateArticle->execute($article);
|
||||||
|
|
||||||
$this->assertNull($article->fresh()->image_url);
|
$this->assertNull($article->fresh()->image_url);
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue