<?php declare(strict_types=1); namespace ShlinkioTest\Shlink\Core\Exception; use Exception; use Fig\Http\Message\StatusCodeInterface; use PHPUnit\Framework\TestCase; use Shlinkio\Shlink\Core\Exception\InvalidUrlException; use Throwable; use function sprintf; class InvalidUrlExceptionTest extends TestCase { /** * @test * @dataProvider providePrevious */ public function properlyCreatesExceptionFromUrl(?Throwable $prev): void { $url = 'http://the_url.com'; $expectedMessage = sprintf('Provided URL %s is invalid. Try with a different one.', $url); $e = InvalidUrlException::fromUrl($url, $prev); self::assertEquals($expectedMessage, $e->getMessage()); self::assertEquals($expectedMessage, $e->getDetail()); self::assertEquals('Invalid URL', $e->getTitle()); self::assertEquals('INVALID_URL', $e->getType()); self::assertEquals(['url' => $url], $e->getAdditionalData()); self::assertEquals(StatusCodeInterface::STATUS_BAD_REQUEST, $e->getCode()); self::assertEquals(StatusCodeInterface::STATUS_BAD_REQUEST, $e->getStatus()); self::assertEquals($prev, $e->getPrevious()); } public function providePrevious(): iterable { yield 'null previous' => [null]; yield 'instance previous' => [new Exception('Previous error', 10)]; } }