From 2f86326d5c41baedf45aed488c0bd06191943dbd Mon Sep 17 00:00:00 2001 From: myrmidex Date: Mon, 10 Aug 2026 01:25:17 +0200 Subject: [PATCH] 116 - Pin the premise that a fully-known feed still returns articles --- tests/Unit/Services/ArticleFetcherRssTest.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/Unit/Services/ArticleFetcherRssTest.php b/tests/Unit/Services/ArticleFetcherRssTest.php index 3f15dd69..95651cec 100644 --- a/tests/Unit/Services/ArticleFetcherRssTest.php +++ b/tests/Unit/Services/ArticleFetcherRssTest.php @@ -106,6 +106,34 @@ public function test_get_articles_from_rss_feed_does_not_duplicate_existing(): v $this->assertEquals(1, Article::where('url', 'https://www.theguardian.com/world/2026/mar/08/first-article')->count()); } + public function test_get_articles_from_rss_feed_returns_known_articles_when_none_are_new(): void + { + Http::fake(['*' => Http::response($this->sampleRss, 200)]); + + $feed = Feed::factory()->create([ + 'type' => 'rss', + 'provider' => 'guardian', + 'url' => 'https://www.theguardian.com/international/rss', + ]); + + Article::factory()->create([ + 'url' => 'https://www.theguardian.com/world/2026/mar/08/first-article', + 'feed_id' => $feed->id, + ]); + Article::factory()->create([ + 'url' => 'https://www.theguardian.com/world/2026/mar/08/second-article', + 'feed_id' => $feed->id, + ]); + + $countBeforeFetch = Article::count(); + + $fetcher = $this->createArticleFetcher(); + $result = $fetcher->getArticlesFromFeed($feed); + + $this->assertCount(2, $result); + $this->assertSame($countBeforeFetch, Article::count()); + } + public function test_get_articles_from_rss_feed_handles_invalid_xml(): void { Http::fake(['*' => Http::response('this is not xml', 200)]);