<?php declare(strict_types=1); namespace ShlinkioTest\Shlink\CLI\Exception; use Exception; use PHPUnit\Framework\TestCase; use RuntimeException; use Shlinkio\Shlink\CLI\Exception\GeolocationDbUpdateFailedException; use Throwable; class GeolocationDbUpdateFailedExceptionTest extends TestCase { /** * @test * @dataProvider provideCreateArgs */ public function createBuildsException(bool $olderDbExists, ?Throwable $prev): void { $e = GeolocationDbUpdateFailedException::create($olderDbExists, $prev); self::assertEquals($olderDbExists, $e->olderDbExists()); self::assertEquals( 'An error occurred while updating geolocation database, and an older version could not be found', $e->getMessage(), ); self::assertEquals(0, $e->getCode()); self::assertEquals($prev, $e->getPrevious()); } public function provideCreateArgs(): iterable { yield 'older DB and no prev' => [true, null]; yield 'older DB and prev' => [true, new RuntimeException('prev')]; yield 'no older DB and no prev' => [false, null]; yield 'no older DB and prev' => [false, new Exception('prev')]; } }