fedi-feed-router/tests/Unit/Models/ArticleTest.php
myrmidex d2919758f5
All checks were successful
CI / ci (push) Successful in 5m52s
CI / ci (pull_request) Successful in 5m46s
Build and Push Docker Image / build (push) Successful in 4m6s
Fix Pint 1.29.0 lint issues and update CI workflow
2026-03-18 20:01:25 +01:00

76 lines
2.1 KiB
PHP

<?php
namespace Tests\Unit\Models;
use App\Events\NewArticleFetched;
use App\Models\Article;
use App\Models\Feed;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Http;
use Tests\TestCase;
class ArticleTest extends TestCase
{
use RefreshDatabase;
protected function setUp(): void
{
parent::setUp();
Http::fake([
'*' => Http::response('', 500),
]);
}
public function test_feed_relationship(): void
{
$feed = Feed::factory()->create();
$article = Article::factory()->create(['feed_id' => $feed->id]);
$this->assertInstanceOf(Feed::class, $article->feed);
$this->assertEquals($feed->id, $article->feed->id);
}
public function test_route_articles_relationship(): void
{
$feed = Feed::factory()->create();
$article = Article::factory()->create(['feed_id' => $feed->id]);
$this->assertCount(0, $article->routeArticles);
}
public function test_dispatch_fetched_event_fires_new_article_fetched_event(): void
{
Event::fake([NewArticleFetched::class]);
$feed = Feed::factory()->create();
$article = Article::factory()->create(['feed_id' => $feed->id]);
$article->dispatchFetchedEvent();
Event::assertDispatched(NewArticleFetched::class, function ($event) use ($article) {
return $event->article->id === $article->id;
});
}
public function test_is_published_attribute(): void
{
$feed = Feed::factory()->create();
$article = Article::factory()->create(['feed_id' => $feed->id]);
$this->assertFalse($article->is_published);
}
public function test_validated_at_is_cast_to_datetime(): void
{
$feed = Feed::factory()->create();
$article = Article::factory()->create([
'feed_id' => $feed->id,
'validated_at' => now(),
]);
$this->assertInstanceOf(Carbon::class, $article->validated_at);
}
}