91 lines
No EOL
2.7 KiB
PHP
91 lines
No EOL
2.7 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Services;
|
|
|
|
use App\Services\Article\ArticleFetcher;
|
|
use App\Models\Feed;
|
|
use App\Models\Article;
|
|
use Tests\TestCase;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
class ArticleFetcherTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
public function test_get_articles_from_feed_returns_collection(): void
|
|
{
|
|
$feed = Feed::factory()->create([
|
|
'type' => 'rss',
|
|
'url' => 'https://example.com/feed.rss'
|
|
]);
|
|
|
|
$result = ArticleFetcher::getArticlesFromFeed($feed);
|
|
|
|
$this->assertInstanceOf(\Illuminate\Support\Collection::class, $result);
|
|
}
|
|
|
|
public function test_get_articles_from_rss_feed_returns_empty_collection(): void
|
|
{
|
|
$feed = Feed::factory()->create([
|
|
'type' => 'rss',
|
|
'url' => 'https://example.com/feed.rss'
|
|
]);
|
|
|
|
$result = ArticleFetcher::getArticlesFromFeed($feed);
|
|
|
|
// RSS parsing is not implemented yet, should return empty collection
|
|
$this->assertEmpty($result);
|
|
}
|
|
|
|
public function test_get_articles_from_website_feed_handles_no_parser(): void
|
|
{
|
|
$feed = Feed::factory()->create([
|
|
'type' => 'website',
|
|
'url' => 'https://unsupported-site.com/'
|
|
]);
|
|
|
|
$result = ArticleFetcher::getArticlesFromFeed($feed);
|
|
|
|
// Should return empty collection when no parser is available
|
|
$this->assertInstanceOf(\Illuminate\Support\Collection::class, $result);
|
|
$this->assertEmpty($result);
|
|
}
|
|
|
|
public function test_get_articles_from_unsupported_feed_type(): void
|
|
{
|
|
$feed = Feed::factory()->create([
|
|
'type' => 'website', // Use valid type but with unsupported URL
|
|
'url' => 'https://unsupported-feed-type.com/feed'
|
|
]);
|
|
|
|
$result = ArticleFetcher::getArticlesFromFeed($feed);
|
|
|
|
$this->assertInstanceOf(\Illuminate\Support\Collection::class, $result);
|
|
$this->assertEmpty($result);
|
|
}
|
|
|
|
public function test_fetch_article_data_returns_array(): void
|
|
{
|
|
$article = Article::factory()->create([
|
|
'url' => 'https://example.com/article'
|
|
]);
|
|
|
|
$result = ArticleFetcher::fetchArticleData($article);
|
|
|
|
$this->assertIsArray($result);
|
|
// Will be empty array due to unsupported URL in test
|
|
$this->assertEmpty($result);
|
|
}
|
|
|
|
public function test_fetch_article_data_handles_invalid_url(): void
|
|
{
|
|
$article = Article::factory()->create([
|
|
'url' => 'invalid-url'
|
|
]);
|
|
|
|
$result = ArticleFetcher::fetchArticleData($article);
|
|
|
|
$this->assertIsArray($result);
|
|
$this->assertEmpty($result);
|
|
}
|
|
} |