From 631da99f33068cf1bdb0aed492ca44e07ab2d3fc Mon Sep 17 00:00:00 2001 From: Jeroen De Dauw Date: Thu, 8 Jun 2017 00:42:48 +0200 Subject: [PATCH] Added getFirstFetchedUrl to SpyingFileFetcher --- src/SpyingFileFetcher.php | 9 +++++++++ tests/unit/SpyingFileFetcherTest.php | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/SpyingFileFetcher.php b/src/SpyingFileFetcher.php index d0c5280..dbb3be3 100644 --- a/src/SpyingFileFetcher.php +++ b/src/SpyingFileFetcher.php @@ -40,4 +40,13 @@ public function getFetchedUrls(): array { return $this->fetchedUrls; } + /** + * @since 4.3 + * + * @return string|null + */ + public function getFirstFetchedUrl() { + return empty( $this->fetchedUrls ) ? null : $this->fetchedUrls[0]; + } + } diff --git a/tests/unit/SpyingFileFetcherTest.php b/tests/unit/SpyingFileFetcherTest.php index eab9ec7..89bc2d6 100644 --- a/tests/unit/SpyingFileFetcherTest.php +++ b/tests/unit/SpyingFileFetcherTest.php @@ -6,6 +6,7 @@ use FileFetcher\FileFetchingException; use FileFetcher\InMemoryFileFetcher; +use FileFetcher\NullFileFetcher; use FileFetcher\SpyingFileFetcher; use FileFetcher\ThrowingFileFetcher; use PHPUnit\Framework\TestCase; @@ -75,4 +76,23 @@ public function testCallsCausingExceptionsGetRecorded() { $this->assertSame( [ 'url', 'foo' ], $spyingFetcher->getFetchedUrls() ); } + public function testWhenThereAreSomeCalls_getFirstFetchedUrlReturnsTheFirstOne() { + $innerFetcher = new InMemoryFileFetcher( [ + 'url' => 'content', + 'foo' => 'bar' + ] ); + + $spyingFetcher = new SpyingFileFetcher( $innerFetcher ); + $spyingFetcher->fetchFile( 'url' ); + $spyingFetcher->fetchFile( 'foo' ); + + $this->assertSame( 'url', $spyingFetcher->getFirstFetchedUrl() ); + } + + public function testWhenThereAreNoCalls_getFirstFetchedUrlReturnsNull() { + $spyingFetcher = new SpyingFileFetcher( new NullFileFetcher() ); + + $this->assertNull( $spyingFetcher->getFirstFetchedUrl() ); + } + }