Pairity/tests/PretendTest.php
Funky Waddle 68f3c05868
Some checks are pending
CI / test (8.2) (push) Waiting to run
CI / test (8.3) (push) Waiting to run
Cache and some other things
2026-01-06 10:56:40 -06:00

46 lines
1.4 KiB
PHP

<?php
namespace Pairity\Tests\Database;
use PHPUnit\Framework\TestCase;
use Pairity\Database\PdoConnection;
use PDO;
class PretendTest extends TestCase
{
public function testPretendLogsQueriesWithoutExecuting()
{
$pdo = $this->createMock(PDO::class);
// Expect no calls to prepare or execute since we are pretending
$pdo->expects($this->never())->method('prepare');
$conn = new PdoConnection($pdo);
$log = $conn->pretend(function($c) {
$c->execute('INSERT INTO users (name) VALUES (?)', ['Alice']);
$c->query('SELECT * FROM users');
});
$this->assertCount(2, $log);
$this->assertEquals('INSERT INTO users (name) VALUES (?)', $log[0]['sql']);
$this->assertEquals(['Alice'], $log[0]['params']);
$this->assertEquals('SELECT * FROM users', $log[1]['sql']);
}
public function testPretendHandlesTransactions()
{
$pdo = $this->createMock(PDO::class);
$pdo->expects($this->never())->method('beginTransaction');
$conn = new PdoConnection($pdo);
$conn->pretend(function($c) {
$c->transaction(function($c2) {
$c2->execute('DELETE FROM users');
});
});
$this->assertTrue(true); // Reaching here means no PDO transaction was started
}
}