Path: blob/1.0-develop/tests/Traits/MocksPdoConnection.php
7461 views
<?php12namespace Pterodactyl\Tests\Traits;34use PDO;5use Mockery;6use Illuminate\Database\Eloquent\Model;7use Illuminate\Database\MySqlConnection;8use Illuminate\Database\ConnectionResolver;9use Illuminate\Database\ConnectionResolverInterface;1011trait MocksPdoConnection12{13private static ?ConnectionResolverInterface $initialResolver;1415/**16* Generates a mock PDO connection and injects it into the models so that any actual17* DB call can be properly intercepted.18*/19protected function mockPdoConnection(): Mockery\MockInterface20{21self::$initialResolver = Model::getConnectionResolver();2223Model::unsetConnectionResolver();2425$connection = new MySqlConnection($mock = \Mockery::mock(\PDO::class), 'testing_mock');26$resolver = new ConnectionResolver(['mocked' => $connection]);27$resolver->setDefaultConnection('mocked');2829Model::setConnectionResolver($resolver);3031return $mock;32}3334/**35* Resets the mock state.36*/37protected function tearDownPdoMock(): void38{39if (!self::$initialResolver) {40return;41}4243Model::setConnectionResolver(self::$initialResolver);4445self::$initialResolver = null;46}47}484950