Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/tests/Traits/MocksPdoConnection.php
7461 views
1
<?php
2
3
namespace Pterodactyl\Tests\Traits;
4
5
use PDO;
6
use Mockery;
7
use Illuminate\Database\Eloquent\Model;
8
use Illuminate\Database\MySqlConnection;
9
use Illuminate\Database\ConnectionResolver;
10
use Illuminate\Database\ConnectionResolverInterface;
11
12
trait MocksPdoConnection
13
{
14
private static ?ConnectionResolverInterface $initialResolver;
15
16
/**
17
* Generates a mock PDO connection and injects it into the models so that any actual
18
* DB call can be properly intercepted.
19
*/
20
protected function mockPdoConnection(): Mockery\MockInterface
21
{
22
self::$initialResolver = Model::getConnectionResolver();
23
24
Model::unsetConnectionResolver();
25
26
$connection = new MySqlConnection($mock = \Mockery::mock(\PDO::class), 'testing_mock');
27
$resolver = new ConnectionResolver(['mocked' => $connection]);
28
$resolver->setDefaultConnection('mocked');
29
30
Model::setConnectionResolver($resolver);
31
32
return $mock;
33
}
34
35
/**
36
* Resets the mock state.
37
*/
38
protected function tearDownPdoMock(): void
39
{
40
if (!self::$initialResolver) {
41
return;
42
}
43
44
Model::setConnectionResolver(self::$initialResolver);
45
46
self::$initialResolver = null;
47
}
48
}
49
50