mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-11-04 03:56:52 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\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;
 | 
						|
    }
 | 
						|
}
 |