summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Molenaar <sean@seanmolenaar.eu>2019-01-31 13:40:52 +0100
committerSean Molenaar <sean@seanmolenaar.eu>2019-01-31 13:40:52 +0100
commitee6bb6ce70b1362bde39aa8183b407555f418204 (patch)
tree9f439894fdf59cdc80fa0818b0c407530fcba9ef
parentd61a57bd2dbbc6ecbddfaa22c347248210703f02 (diff)
Fix mismatched interface
-rw-r--r--lib/Fetcher/FeedFetcher.php19
-rw-r--r--lib/Fetcher/IFeedFetcher.php14
-rw-r--r--lib/Fetcher/YoutubeFetcher.php15
-rw-r--r--tests/Unit/Fetcher/FeedFetcherTest.php28
-rw-r--r--tests/Unit/Fetcher/FetcherTest.php2
-rw-r--r--tests/Unit/Fetcher/YoutubeFetcherTest.php19
6 files changed, 48 insertions, 49 deletions
diff --git a/lib/Fetcher/FeedFetcher.php b/lib/Fetcher/FeedFetcher.php
index abfd0095b..38fcab823 100644
--- a/lib/Fetcher/FeedFetcher.php
+++ b/lib/Fetcher/FeedFetcher.php
@@ -58,20 +58,9 @@ class FeedFetcher implements IFeedFetcher
/**
* Fetch a feed from remote
*
- * @param string $url Remote url of the feed
- * @param boolean $getFavicon If the favicon should also be fetched,
- * defaults to true
- * @param string $lastModified A last modified value from an http header
- * defaults to false. If lastModified matches
- * the header from the feed no results are fetched
- * @param string $user If given, basic auth is set for this feed
- * @param string $password If given, basic auth is set for this feed.
- * Ignored if user is null or an empty string.
- *
- * @return array an array containing the new feed and its items, first
- * element being the Feed and second element being an array of Items
+ * @inheritdoc
*/
- public function fetch(string $url, $getFavicon = true, $lastModified = null, $user = null, $password = null): array
+ public function fetch(string $url, bool $favicon, $lastModified, $user, $password): array
{
if ($user !== null && trim($user) !== '') {
$url = explode('://', $url);
@@ -88,7 +77,7 @@ class FeedFetcher implements IFeedFetcher
$feed = $this->buildFeed(
$parsedFeed,
$url,
- $getFavicon,
+ $favicon,
$location
);
@@ -220,7 +209,7 @@ class FeedFetcher implements IFeedFetcher
*
* @return Feed
*/
- protected function buildFeed(FeedInterface $feed, string $url, boolean $getFavicon, string $location): Feed
+ protected function buildFeed(FeedInterface $feed, string $url, bool $getFavicon, string $location): Feed
{
$newFeed = new Feed();
diff --git a/lib/Fetcher/IFeedFetcher.php b/lib/Fetcher/IFeedFetcher.php
index 70f153d2e..ecc0ffc16 100644
--- a/lib/Fetcher/IFeedFetcher.php
+++ b/lib/Fetcher/IFeedFetcher.php
@@ -19,18 +19,18 @@ interface IFeedFetcher
/**
* Fetch feed content.
*
- * @param string $url remote url of the feed
- * @param boolean $getFavicon if the favicon should also be fetched, defaults to true
- * @param string $lastModified a last modified value from an http header defaults to false.
+ * @param string $url remote url of the feed
+ * @param boolean $favicon if the favicon should also be fetched, defaults to true
+ * @param string|null $lastModified a last modified value from an http header defaults to false.
* If lastModified matches the http header from the feed no results are fetched
- * @param string $user if given, basic auth is set for this feed
- * @param string $password if given, basic auth is set for this feed. Ignored if user is empty
+ * @param string|null $user if given, basic auth is set for this feed
+ * @param string|null $password if given, basic auth is set for this feed. Ignored if user is empty
*
- * @throws FetcherException if the fetcher encounters a problem
* @return array an array containing the new feed and its items, first
* element being the Feed and second element being an array of Items
+ * @throws FetcherException if the fetcher encounters a problem
*/
- public function fetch($url, $getFavicon = true, $lastModified = null, $user = null, $password = null): array;
+ public function fetch(string $url, bool $favicon, $lastModified, $user, $password): array;
/**
* Can a fetcher handle a feed.
diff --git a/lib/Fetcher/YoutubeFetcher.php b/lib/Fetcher/YoutubeFetcher.php
index fd4e7d2fb..41319a36b 100644
--- a/lib/Fetcher/YoutubeFetcher.php
+++ b/lib/Fetcher/YoutubeFetcher.php
@@ -48,24 +48,15 @@ class YoutubeFetcher implements IFeedFetcher
/**
* Fetch a feed from remote
*
- * @param string $url remote url of the feed
- * @param boolean $getFavicon if the favicon should also be fetched, defaults to true
- * @param string $lastModified a last modified value from an http header defaults to false.
- * If lastModified matches the http header from the feed no results are fetched
- * @param string $user if given, basic auth is set for this feed
- * @param string $password if given, basic auth is set for this feed. Ignored if user is empty
- *
- * @throws FetcherException if it fails
- * @return array an array containing the new feed and its items, first
- * element being the Feed and second element being an array of Items
+ * @inheritdoc
*/
- public function fetch($url, $getFavicon = true, $lastModified = null, $user = null, $password = null): array
+ public function fetch(string $url, bool $favicon, $lastModified, $user, $password): array
{
$transformedUrl = $this->buildUrl($url);
$result = $this->feedFetcher->fetch(
$transformedUrl,
- $getFavicon,
+ $favicon,
$lastModified,
$user,
$password
diff --git a/tests/Unit/Fetcher/FeedFetcherTest.php b/tests/Unit/Fetcher/FeedFetcherTest.php
index f6ef47602..510e5471d 100644
--- a/tests/Unit/Fetcher/FeedFetcherTest.php
+++ b/tests/Unit/Fetcher/FeedFetcherTest.php
@@ -165,10 +165,16 @@ class FeedFetcherTest extends TestCase
$this->assertTrue($this->_fetcher->canHandle($url));
}
+ /**
+ * Test if error is thrown when the feed remain the same.
+ *
+ * @expectedException \OCA\News\Fetcher\FetcherException
+ * @expectedExceptionMessage Feed was not modified since last fetch
+ */
public function testNoFetchIfNotModified()
{
$this->_setUpReader($this->_url, false);;
- $result = $this->_fetcher->fetch($this->_url, false);
+ $result = $this->_fetcher->fetch($this->_url, false, null, null, null);
$this->assertSame([null, null], $result);
}
@@ -178,7 +184,7 @@ class FeedFetcherTest extends TestCase
$item = $this->_createItem();
$feed = $this->_createFeed();
$this->_mockIterator($this->_feed_mock, [$this->_item_mock]);
- $result = $this->_fetcher->fetch($this->_url, false);
+ $result = $this->_fetcher->fetch($this->_url, false, null, null, null);
$this->assertEquals([$feed, [$item]], $result);
}
@@ -190,7 +196,7 @@ class FeedFetcherTest extends TestCase
$item = $this->_createItem('audio/ogg');
$feed = $this->_createFeed();
$this->_mockIterator($this->_feed_mock, [$this->_item_mock]);
- $result = $this->_fetcher->fetch($this->_url, false);
+ $result = $this->_fetcher->fetch($this->_url, false, null, null, null);
$this->assertEquals([$feed, [$item]], $result);
}
@@ -202,7 +208,7 @@ class FeedFetcherTest extends TestCase
$item = $this->_createItem('video/ogg');
$feed = $this->_createFeed();
$this->_mockIterator($this->_feed_mock, [$this->_item_mock]);
- $result = $this->_fetcher->fetch($this->_url, false);
+ $result = $this->_fetcher->fetch($this->_url, false, null, null, null);
$this->assertEquals([$feed, [$item]], $result);
}
@@ -214,7 +220,7 @@ class FeedFetcherTest extends TestCase
$feed = $this->_createFeed('de-DE', true);
$item = $this->_createItem();
$this->_mockIterator($this->_feed_mock, [$this->_item_mock]);
- $result = $this->_fetcher->fetch($this->_url, true);
+ $result = $this->_fetcher->fetch($this->_url, true, null, null, null);
$this->assertEquals([$feed, [$item]], $result);
}
@@ -230,7 +236,7 @@ class FeedFetcherTest extends TestCase
$item = $this->_createItem();
$this->_mockIterator($this->_feed_mock, [$this->_item_mock]);
- $result = $this->_fetcher->fetch($this->_url, false);
+ $result = $this->_fetcher->fetch($this->_url, false, null, null, null);
$this->assertEquals([$feed, [$item]], $result);
}
@@ -241,9 +247,7 @@ class FeedFetcherTest extends TestCase
$this->_createFeed('he-IL');
$this->_createItem();
$this->_mockIterator($this->_feed_mock, [$this->_item_mock]);
- list($feed, $items) = $this->_fetcher->fetch(
- $this->_url, false
- );
+ list($feed, $items) = $this->_fetcher->fetch($this->_url, false, null, null, null);
$this->assertTrue($items[0]->getRtl());
}
@@ -262,7 +266,7 @@ class FeedFetcherTest extends TestCase
$this->_mockIterator($this->_feed_mock, [$this->_item_mock]);
- list($feed, $items) = $this->_fetcher->fetch($this->_url, false);
+ list($feed, $items) = $this->_fetcher->fetch($this->_url, false, null, null, null);
$this->assertSame($items[0]->getPubDate(), 1522180229);
}
@@ -281,7 +285,7 @@ class FeedFetcherTest extends TestCase
$this->_mockIterator($this->_feed_mock, [$this->_item_mock]);
- list($feed, $items) = $this->_fetcher->fetch($this->_url, false);
+ list($feed, $items) = $this->_fetcher->fetch($this->_url, false, null, null, null);
$this->assertSame($items[0]->getPubDate(), 1519761029);
}
@@ -374,6 +378,7 @@ class FeedFetcherTest extends TestCase
$this->_response->expects($this->once())
->method('isModified')
->will($this->returnValue($modified));
+ $this->_location = $url;
if (!$modified) {
$this->_result->expects($this->never())
@@ -462,6 +467,7 @@ class FeedFetcherTest extends TestCase
$feed->setTitle('&its a title');
$feed->setLink($this->_feed_link);
+ $feed->setLocation($this->_location);
$feed->setUrl($this->_url);
$feed->setLastModified(3);
$feed->setAdded($this->_time);
diff --git a/tests/Unit/Fetcher/FetcherTest.php b/tests/Unit/Fetcher/FetcherTest.php
index e8c648177..2549ff606 100644
--- a/tests/Unit/Fetcher/FetcherTest.php
+++ b/tests/Unit/Fetcher/FetcherTest.php
@@ -118,7 +118,7 @@ class FetcherTest extends TestCase
public function testMultipleFetchersOnlyOneShouldHandle()
{
$url = 'hi';
- $return = 'zeas';
+ $return = [];
$mockFetcher = $this->getMockBuilder(IFeedFetcher::class)
->disableOriginalConstructor()
->getMock();
diff --git a/tests/Unit/Fetcher/YoutubeFetcherTest.php b/tests/Unit/Fetcher/YoutubeFetcherTest.php
index f53958b8f..80f50b9d6 100644
--- a/tests/Unit/Fetcher/YoutubeFetcherTest.php
+++ b/tests/Unit/Fetcher/YoutubeFetcherTest.php
@@ -13,6 +13,7 @@ namespace OCA\News\Tests\Unit\Fetcher;
use \OCA\News\Db\Feed;
use OCA\News\Fetcher\FeedFetcher;
+use OCA\News\Fetcher\Fetcher;
use OCA\News\Fetcher\YoutubeFetcher;
use PHPUnit\Framework\TestCase;
@@ -20,7 +21,18 @@ use PHPUnit\Framework\TestCase;
class YoutubeFetcherTest extends TestCase
{
+ /**
+ * Mocked fetcher.
+ *
+ * @var Fetcher
+ */
private $fetcher;
+
+ /**
+ * Mocked Feed Fetcher.
+ *
+ * @var FeedFetcher
+ */
private $feedFetcher;
public function setUp()
@@ -52,7 +64,8 @@ class YoutubeFetcherTest extends TestCase
$transformedUrl = 'http://gdata.youtube.com/feeds/api/playlists/sobo3';
$favicon = true;
$modified = 3;
- $etag = 5;
+ $user = 5;
+ $password = 5;
$feed = new Feed();
$feed->setUrl('http://google.de');
$result = [$feed, []];
@@ -63,10 +76,10 @@ class YoutubeFetcherTest extends TestCase
$this->equalTo($transformedUrl),
$this->equalTo($favicon),
$this->equalTo($modified),
- $this->equalTo($etag)
+ $this->equalTo($user)
)
->will($this->returnValue($result));
- $feed = $this->fetcher->fetch($url, $favicon, $modified, $etag);
+ $feed = $this->fetcher->fetch($url, $favicon, $modified, $user, $password);
$this->assertEquals($url, $result[0]->getUrl());
}