mirror of
https://github.com/pterodactyl/panel.git
synced 2024-11-22 17:12:30 +01:00
49 lines
1.2 KiB
PHP
49 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Pterodactyl\Tests\Traits;
|
|
|
|
use PDO;
|
|
use Mockery;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\MySqlConnection;
|
|
use Illuminate\Database\ConnectionResolver;
|
|
use Illuminate\Database\ConnectionResolverInterface;
|
|
|
|
trait MocksPdoConnection
|
|
{
|
|
private static ?ConnectionResolverInterface $initialResolver;
|
|
|
|
/**
|
|
* Generates a mock PDO connection and injects it into the models so that any actual
|
|
* DB call can be properly intercepted.
|
|
*/
|
|
protected function mockPdoConnection(): Mockery\MockInterface
|
|
{
|
|
self::$initialResolver = Model::getConnectionResolver();
|
|
|
|
Model::unsetConnectionResolver();
|
|
|
|
$connection = new MySqlConnection($mock = \Mockery::mock(\PDO::class), 'testing_mock');
|
|
$resolver = new ConnectionResolver(['mocked' => $connection]);
|
|
$resolver->setDefaultConnection('mocked');
|
|
|
|
Model::setConnectionResolver($resolver);
|
|
|
|
return $mock;
|
|
}
|
|
|
|
/**
|
|
* Resets the mock state.
|
|
*/
|
|
protected function tearDownPdoMock(): void
|
|
{
|
|
if (!self::$initialResolver) {
|
|
return;
|
|
}
|
|
|
|
Model::setConnectionResolver(self::$initialResolver);
|
|
|
|
self::$initialResolver = null;
|
|
}
|
|
}
|