From bdf2bbd0f1d826f3fd2137bb697da1143f5d96f3 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sun, 18 Jun 2023 10:41:24 +0200 Subject: [PATCH] Replace traits with external data providers in Core unit tests --- .../test/ShortUrl/ShortUrlListServiceTest.php | 8 +++----- .../Core/test/ShortUrl/ShortUrlResolverTest.php | 9 ++++----- .../Core/test/ShortUrl/ShortUrlServiceTest.php | 3 --- module/Core/test/Tag/TagServiceTest.php | 11 +++++------ module/Core/test/Util/ApiKeyHelpersTrait.php | 16 ---------------- module/Core/test/Visit/VisitsStatsHelperTest.php | 13 ++++++------- 6 files changed, 18 insertions(+), 42 deletions(-) delete mode 100644 module/Core/test/Util/ApiKeyHelpersTrait.php diff --git a/module/Core/test/ShortUrl/ShortUrlListServiceTest.php b/module/Core/test/ShortUrl/ShortUrlListServiceTest.php index 37a3eb36..a469ed60 100644 --- a/module/Core/test/ShortUrl/ShortUrlListServiceTest.php +++ b/module/Core/test/ShortUrl/ShortUrlListServiceTest.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace ShlinkioTest\Shlink\Core\ShortUrl; -use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\DataProviderExternal; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; @@ -14,14 +14,12 @@ use Shlinkio\Shlink\Core\ShortUrl\Model\ShortUrlsParams; use Shlinkio\Shlink\Core\ShortUrl\Repository\ShortUrlListRepositoryInterface; use Shlinkio\Shlink\Core\ShortUrl\ShortUrlListService; use Shlinkio\Shlink\Rest\Entity\ApiKey; -use ShlinkioTest\Shlink\Core\Util\ApiKeyHelpersTrait; +use ShlinkioTest\Shlink\Core\Util\ApiKeyDataProviders; use function count; class ShortUrlListServiceTest extends TestCase { - use ApiKeyHelpersTrait; - private ShortUrlListService $service; private MockObject & ShortUrlListRepositoryInterface $repo; @@ -31,7 +29,7 @@ class ShortUrlListServiceTest extends TestCase $this->service = new ShortUrlListService($this->repo, new UrlShortenerOptions()); } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function listedUrlsAreReturnedFromEntityManager(?ApiKey $apiKey): void { $list = [ diff --git a/module/Core/test/ShortUrl/ShortUrlResolverTest.php b/module/Core/test/ShortUrl/ShortUrlResolverTest.php index f2b89586..86aa56e7 100644 --- a/module/Core/test/ShortUrl/ShortUrlResolverTest.php +++ b/module/Core/test/ShortUrl/ShortUrlResolverTest.php @@ -8,6 +8,7 @@ use Cake\Chronos\Chronos; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\EntityManagerInterface; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\DataProviderExternal; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; @@ -22,15 +23,13 @@ use Shlinkio\Shlink\Core\ShortUrl\ShortUrlResolver; use Shlinkio\Shlink\Core\Visit\Entity\Visit; use Shlinkio\Shlink\Core\Visit\Model\Visitor; use Shlinkio\Shlink\Rest\Entity\ApiKey; -use ShlinkioTest\Shlink\Core\Util\ApiKeyHelpersTrait; +use ShlinkioTest\Shlink\Core\Util\ApiKeyDataProviders; use function Functional\map; use function range; class ShortUrlResolverTest extends TestCase { - use ApiKeyHelpersTrait; - private ShortUrlResolver $urlResolver; private MockObject & EntityManagerInterface $em; private MockObject & ShortUrlRepositoryInterface $repo; @@ -42,7 +41,7 @@ class ShortUrlResolverTest extends TestCase $this->urlResolver = new ShortUrlResolver($this->em, new UrlShortenerOptions()); } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function shortCodeIsProperlyParsed(?ApiKey $apiKey): void { $shortUrl = ShortUrl::withLongUrl('https://expected_url'); @@ -59,7 +58,7 @@ class ShortUrlResolverTest extends TestCase self::assertSame($shortUrl, $result); } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function exceptionIsThrownIfShortcodeIsNotFound(?ApiKey $apiKey): void { $shortCode = 'abc123'; diff --git a/module/Core/test/ShortUrl/ShortUrlServiceTest.php b/module/Core/test/ShortUrl/ShortUrlServiceTest.php index 409c937f..67b10720 100644 --- a/module/Core/test/ShortUrl/ShortUrlServiceTest.php +++ b/module/Core/test/ShortUrl/ShortUrlServiceTest.php @@ -21,15 +21,12 @@ use Shlinkio\Shlink\Core\ShortUrl\Resolver\SimpleShortUrlRelationResolver; use Shlinkio\Shlink\Core\ShortUrl\ShortUrlResolverInterface; use Shlinkio\Shlink\Core\ShortUrl\ShortUrlService; use Shlinkio\Shlink\Rest\Entity\ApiKey; -use ShlinkioTest\Shlink\Core\Util\ApiKeyHelpersTrait; use function array_fill_keys; use function Shlinkio\Shlink\Core\enumValues; class ShortUrlServiceTest extends TestCase { - use ApiKeyHelpersTrait; - private ShortUrlService $service; private MockObject & ShortUrlResolverInterface $urlResolver; private MockObject & ShortUrlTitleResolutionHelperInterface $titleResolutionHelper; diff --git a/module/Core/test/Tag/TagServiceTest.php b/module/Core/test/Tag/TagServiceTest.php index 5e1b2665..f22a35f2 100644 --- a/module/Core/test/Tag/TagServiceTest.php +++ b/module/Core/test/Tag/TagServiceTest.php @@ -6,6 +6,7 @@ namespace ShlinkioTest\Shlink\Core\Tag; use Doctrine\ORM\EntityManagerInterface; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\DataProviderExternal; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; @@ -22,12 +23,10 @@ use Shlinkio\Shlink\Core\Tag\TagService; use Shlinkio\Shlink\Rest\ApiKey\Model\ApiKeyMeta; use Shlinkio\Shlink\Rest\ApiKey\Model\RoleDefinition; use Shlinkio\Shlink\Rest\Entity\ApiKey; -use ShlinkioTest\Shlink\Core\Util\ApiKeyHelpersTrait; +use ShlinkioTest\Shlink\Core\Util\ApiKeyDataProviders; class TagServiceTest extends TestCase { - use ApiKeyHelpersTrait; - private TagService $service; private MockObject & EntityManagerInterface $em; private MockObject & TagRepository $repo; @@ -101,7 +100,7 @@ class TagServiceTest extends TestCase ]; } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function deleteTagsDelegatesOnRepository(?ApiKey $apiKey): void { $this->repo->expects($this->once())->method('deleteByName')->with(['foo', 'bar'])->willReturn(4); @@ -122,7 +121,7 @@ class TagServiceTest extends TestCase ); } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function renameInvalidTagThrowsException(?ApiKey $apiKey): void { $this->repo->expects($this->once())->method('findOneBy')->willReturn(null); @@ -152,7 +151,7 @@ class TagServiceTest extends TestCase yield 'different names names' => ['foo', 'bar', 0]; } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function renameTagToAnExistingNameThrowsException(?ApiKey $apiKey): void { $this->repo->expects($this->once())->method('findOneBy')->willReturn(new Tag('foo')); diff --git a/module/Core/test/Util/ApiKeyHelpersTrait.php b/module/Core/test/Util/ApiKeyHelpersTrait.php deleted file mode 100644 index fc6af8af..00000000 --- a/module/Core/test/Util/ApiKeyHelpersTrait.php +++ /dev/null @@ -1,16 +0,0 @@ - [null]; - yield 'admin API key' => [ApiKey::create()]; - } -} diff --git a/module/Core/test/Visit/VisitsStatsHelperTest.php b/module/Core/test/Visit/VisitsStatsHelperTest.php index 3fc024df..d43efc24 100644 --- a/module/Core/test/Visit/VisitsStatsHelperTest.php +++ b/module/Core/test/Visit/VisitsStatsHelperTest.php @@ -8,6 +8,7 @@ use Doctrine\ORM\EntityManagerInterface; use Laminas\Stdlib\ArrayUtils; use PHPUnit\Framework\Assert; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\DataProviderExternal; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; @@ -30,7 +31,7 @@ use Shlinkio\Shlink\Core\Visit\Persistence\VisitsListFiltering; use Shlinkio\Shlink\Core\Visit\Repository\VisitRepository; use Shlinkio\Shlink\Core\Visit\VisitsStatsHelper; use Shlinkio\Shlink\Rest\Entity\ApiKey; -use ShlinkioTest\Shlink\Core\Util\ApiKeyHelpersTrait; +use ShlinkioTest\Shlink\Core\Util\ApiKeyDataProviders; use function count; use function Functional\map; @@ -38,8 +39,6 @@ use function range; class VisitsStatsHelperTest extends TestCase { - use ApiKeyHelpersTrait; - private VisitsStatsHelper $helper; private MockObject & EntityManagerInterface $em; @@ -81,7 +80,7 @@ class VisitsStatsHelperTest extends TestCase ]; } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function infoReturnsVisitsForCertainShortCode(?ApiKey $apiKey): void { $shortCode = '123ABC'; @@ -141,7 +140,7 @@ class VisitsStatsHelperTest extends TestCase $this->helper->visitsForTag($tag, new VisitsParams(), $apiKey); } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function visitsForTagAreReturnedAsExpected(?ApiKey $apiKey): void { $tag = 'foo'; @@ -179,7 +178,7 @@ class VisitsStatsHelperTest extends TestCase $this->helper->visitsForDomain($domain, new VisitsParams(), $apiKey); } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function visitsForNonDefaultDomainAreReturnedAsExpected(?ApiKey $apiKey): void { $domain = 'foo.com'; @@ -207,7 +206,7 @@ class VisitsStatsHelperTest extends TestCase self::assertEquals($list, ArrayUtils::iteratorToArray($paginator->getCurrentPageResults())); } - #[Test, DataProvider('provideAdminApiKeys')] + #[Test, DataProviderExternal(ApiKeyDataProviders::class, 'adminApiKeysProvider')] public function visitsForDefaultDomainAreReturnedAsExpected(?ApiKey $apiKey): void { $repo = $this->createMock(DomainRepository::class);