diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6889d2d..122de3a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,8 +12,11 @@ jobs: strategy: fail-fast: true matrix: - php: ['8.0', 8.1, 8.2] - laravel: [8, 9] + php: ['8.0', '8.1', '8.2'] + laravel: ['9.0', '10.0'] + exclude: + - laravel: '10.0' + php: '8.0' name: P${{ matrix.php }} - L${{ matrix.laravel }} @@ -35,4 +38,4 @@ jobs: composer update --prefer-dist --no-interaction --no-progress - name: Execute tests - run: vendor/bin/phpunit --verbose + run: vendor/bin/phpunit diff --git a/composer.json b/composer.json index 9530b0d..89b63f4 100644 --- a/composer.json +++ b/composer.json @@ -42,17 +42,16 @@ ], "require": { "php": "^8.0", - "illuminate/support": "^8.0|^9.0", - "mollie/mollie-api-php": "^2.49", + "illuminate/support": "^9.0|^10.0", + "mollie/mollie-api-php": "^2.50", "ext-json": "*" }, "require-dev": { - "graham-campbell/testbench": "^5.0", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^9.0", - "laravel/socialite": "^5.0", - "laravel/pint": "^1.1", - "symfony/finder": "^5.0|^6.0" + "mockery/mockery": "^1.4", + "orchestra/testbench": "^7.18|^8.0", + "phpunit/phpunit": "^9.0|^10.0", + "laravel/socialite": "^5.5", + "laravel/pint": "^1.1" }, "suggest": { "laravel/socialite": "Use Mollie Connect (OAuth) to authenticate via Laravel Socialite with the Mollie API. This is needed for some endpoints." diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 5d8544b..1f20019 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,31 +1,13 @@ - - - - ./src - - - - - ./tests - - + + + + ./src + + + + + ./tests + + diff --git a/src/MollieConnectProvider.php b/src/MollieConnectProvider.php index 0173bc1..dd35e3a 100644 --- a/src/MollieConnectProvider.php +++ b/src/MollieConnectProvider.php @@ -169,7 +169,6 @@ protected function getUserByToken($token) /** * Map the raw user array to a Socialite User instance. * - * @param array $user * @return \Laravel\Socialite\AbstractUser */ protected function mapUserToObject(array $user) diff --git a/src/MollieManager.php b/src/MollieManager.php index 9337efe..12f76ca 100644 --- a/src/MollieManager.php +++ b/src/MollieManager.php @@ -48,7 +48,6 @@ class MollieManager /** * MollieManager constructor. * - * @param Container $app * @return void */ public function __construct(Container $app) diff --git a/src/Wrappers/MollieApiWrapper.php b/src/Wrappers/MollieApiWrapper.php index e0b4eb7..df2d710 100644 --- a/src/Wrappers/MollieApiWrapper.php +++ b/src/Wrappers/MollieApiWrapper.php @@ -55,8 +55,6 @@ class MollieApiWrapper /** * MollieApiWrapper constructor. * - * @param Repository $config - * @param MollieApiClient $client * @return void * * @throws \Mollie\Api\Exceptions\ApiException @@ -118,7 +116,6 @@ public function usesOAuth() } /** - * @param $version_string * @return \Mollie\Laravel\Wrappers\MollieApiWrapper */ public function addVersionString($version_string) diff --git a/tests/Facades/MollieTest.php b/tests/Facades/MollieTest.php index 1feff6b..5aff9f7 100644 --- a/tests/Facades/MollieTest.php +++ b/tests/Facades/MollieTest.php @@ -2,9 +2,9 @@ namespace Mollie\Laravel\Tests\Facades; -use GrahamCampbell\TestBenchCore\FacadeTrait; use Mollie\Laravel\Facades\Mollie; use Mollie\Laravel\MollieManager; +use Mollie\Laravel\Tests\TempHelpers\FacadeTrait; use Mollie\Laravel\Tests\TestCase; /** diff --git a/tests/MollieConnectProviderTest.php b/tests/MollieConnectProviderTest.php index aefb131..b1a3cf7 100644 --- a/tests/MollieConnectProviderTest.php +++ b/tests/MollieConnectProviderTest.php @@ -2,10 +2,10 @@ namespace Mollie\Laravel\Tests; -use GrahamCampbell\TestBenchCore\MockeryTrait; use Illuminate\Support\Facades\Request; use Mockery as m; use Mollie\Laravel\MollieConnectProvider; +use Mollie\Laravel\Tests\TempHelpers\MockeryTrait; class MollieConnectProviderTest extends TestCase { diff --git a/tests/MollieServiceProviderTest.php b/tests/MollieServiceProviderTest.php index 0d3a6e5..2fdffa0 100644 --- a/tests/MollieServiceProviderTest.php +++ b/tests/MollieServiceProviderTest.php @@ -2,9 +2,9 @@ namespace Mollie\Laravel\Tests; -use GrahamCampbell\TestBenchCore\ServiceProviderTrait; use Mollie\Api\MollieApiClient; use Mollie\Laravel\MollieManager; +use Mollie\Laravel\Tests\TempHelpers\ServiceProviderTrait; use Mollie\Laravel\Wrappers\MollieApiWrapper; /** diff --git a/tests/TempHelpers/FacadeTrait.php b/tests/TempHelpers/FacadeTrait.php new file mode 100644 index 0000000..5eb6466 --- /dev/null +++ b/tests/TempHelpers/FacadeTrait.php @@ -0,0 +1,91 @@ +getFacadeClass(); + $reflection = new ReflectionClass($class); + $facade = new ReflectionClass(Facade::class); + + $msg = "Expected class '$class' to be a facade."; + + $this->assertTrue($reflection->isSubclassOf($facade), $msg); + } + + public function testFacadeAccessor() + { + $accessor = $this->getFacadeAccessor(); + $class = $this->getFacadeClass(); + $reflection = new ReflectionClass($class); + $method = $reflection->getMethod('getFacadeAccessor'); + $method->setAccessible(true); + + $msg = "Expected class '$class' to have an accessor of '$accessor'."; + + $this->assertSame($accessor, $method->invoke(null), $msg); + } + + public function testFacadeRoot() + { + $root = $this->getFacadeRoot(); + $class = $this->getFacadeClass(); + $reflection = new ReflectionClass($class); + $method = $reflection->getMethod('getFacadeRoot'); + $method->setAccessible(true); + + $msg = "Expected class '$class' to have a root of '$root'."; + + $this->assertInstanceOf($root, $method->invoke(null), $msg); + } + + public function testServiceProvider() + { + $accessor = $this->getFacadeAccessor(); + $provider = $this->getServiceProviderClass($this->app); + + if ($provider) { + $reflection = new ReflectionClass($provider); + $method = $reflection->getMethod('provides'); + $method->setAccessible(true); + + $msg = "Expected class '$provider' to provide '$accessor'."; + $this->assertContains($accessor, $method->invoke(new $provider($this->app)), $msg); + } + } +} diff --git a/tests/TempHelpers/LaravelTrait.php b/tests/TempHelpers/LaravelTrait.php new file mode 100644 index 0000000..e27a49c --- /dev/null +++ b/tests/TempHelpers/LaravelTrait.php @@ -0,0 +1,67 @@ +makeInjectableClass($name); + $this->assertInstanceOf($name, $class->getInjectedObject()); + } catch (Exception $e) { + $injectable = false; + if ($msg = $e->getMessage()) { + $message .= " $msg"; + } + } + + $this->assertTrue($injectable, $message); + } + + /** + * Register and make a stub class to inject into. + * + * + * @return object + */ + protected function makeInjectableClass(string $name) + { + do { + $class = 'testBenchStub'.Str::random(); + } while (class_exists($class)); + + eval(" + class $class + { + protected \$object; + + public function __construct(\\$name \$object) + { + \$this->object = \$object; + } + + public function getInjectedObject() + { + return \$this->object; + } + } + "); + + return $this->app->make($class); + } +} diff --git a/tests/TempHelpers/MockeryTrait.php b/tests/TempHelpers/MockeryTrait.php new file mode 100644 index 0000000..51f6598 --- /dev/null +++ b/tests/TempHelpers/MockeryTrait.php @@ -0,0 +1,30 @@ +addToAssertionCount($container->mockery_getExpectationCount()); + } + + Mockery::close(); + } + } +} diff --git a/tests/TempHelpers/ServiceProviderTrait.php b/tests/TempHelpers/ServiceProviderTrait.php new file mode 100644 index 0000000..20624a4 --- /dev/null +++ b/tests/TempHelpers/ServiceProviderTrait.php @@ -0,0 +1,44 @@ +getServiceProviderClass($this->app); + + $reflection = new ReflectionClass($class); + + $provider = new ReflectionClass(ServiceProvider::class); + + $msg = "Expected class '$class' to be a service provider."; + + $this->assertTrue($reflection->isSubclassOf($provider), $msg); + } + + public function testProvides() + { + $class = $this->getServiceProviderClass($this->app); + $reflection = new ReflectionClass($class); + + $method = $reflection->getMethod('provides'); + $method->setAccessible(true); + + $msg = "Expected class '$class' to provide a valid list of services."; + + $this->assertIsArray($method->invoke(new $class($this->app)), $msg); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php index ab08c30..a51058a 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -2,14 +2,16 @@ namespace Mollie\Laravel\Tests; -use GrahamCampbell\TestBench\AbstractPackageTestCase; use Mollie\Laravel\MollieServiceProvider; +use Mollie\Laravel\Tests\TempHelpers\LaravelTrait; /** * This is the abstract test case class. */ -abstract class TestCase extends AbstractPackageTestCase +abstract class TestCase extends \Orchestra\Testbench\TestCase { + use LaravelTrait; + /** * Get the service provider class. * diff --git a/tests/Wrappers/MollieApiLaravelClientTest.php b/tests/Wrappers/MollieApiLaravelClientTest.php index 952e6c0..60b730f 100644 --- a/tests/Wrappers/MollieApiLaravelClientTest.php +++ b/tests/Wrappers/MollieApiLaravelClientTest.php @@ -6,7 +6,6 @@ use Mollie\Api\MollieApiClient; use Mollie\Api\Resources\Payment; use Mollie\Laravel\Tests\TestCase; -use Mollie\Laravel\Wrappers\MollieApiWrapper; /** * Class MollieApiWrapper