aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/includes/dba/DbaPdoTest.php50
1 files changed, 16 insertions, 34 deletions
diff --git a/tests/unit/includes/dba/DbaPdoTest.php b/tests/unit/includes/dba/DbaPdoTest.php
index 8a1a2b197..1468ce4ed 100644
--- a/tests/unit/includes/dba/DbaPdoTest.php
+++ b/tests/unit/includes/dba/DbaPdoTest.php
@@ -12,39 +12,16 @@ namespace Zotlabs\Tests\Unit\includes;
use DBA;
use PDO;
-use PDOStatement;
+use PDOException;
use PHPUnit\Framework\Attributes\DataProvider;
use Zotlabs\Tests\Unit\UnitTestCase;
class DbaPdoTest extends UnitTestCase
{
- public function testInsertingRowWithRturningClauseReturnsInsertedRow(): void
- {
- // MySQL does not support the `returning` clause, so we skip the test
- // for that DB backend.
- $this->skipIfMySQL();
-
- // Let's manually insert a row in the config table.
- // This is just because it's a conventient table to test
- // against
- $res = q(<<<SQL
- INSERT INTO config (cat, k, v)
- VALUES ('test', 'a key', 'A value')
- RETURNING *
- SQL);
-
- $this->assertIsArray($res);
- $this->assertIsArray($res[0]);
- $this->assertTrue($res[0]['id'] > 0);
- $this->assertEquals('test', $res[0]['cat']);
- $this->assertEquals('a key', $res[0]['k']);
- $this->assertEquals('A value', $res[0]['v']);
- }
-
#[DataProvider('insertRowProvider')]
public function testInsertRow(string $table, array $data, string $id): void
{
- $res = DBA::$dba->insert($table, $data, $id);
+ $res = DBA::$dba->insert($table, $data);
$this->assertIsArray($res);
@@ -57,18 +34,23 @@ class DbaPdoTest extends UnitTestCase
}
#[DataProvider('insertRowProvider')]
- public function testInsertShouldReturnFalseIfInsertFails(
- string $table,
- array $data,
- string $id
- ): void
+ public function testInsertThrowsOnDuplicateId(string $table, array $data): void
{
- $res1 = DBA::$dba->insert($table, $data, $id);
+ $this->expectException(PDOException::class);
+ if (DBA::$dba->is_postgres()) {
+ // Postgres uses 23505 to signal a unique violation
+ $this->expectExceptionCode(23505);
+ } else {
+ // MySQL and MariaDB just signal a constraint violation without
+ // being more specific
+ $this->expectExceptionCode(23000);
+ }
+
+ $res1 = DBA::$dba->insert($table, $data);
$this->assertIsArray($res1);
- // Inserting the same row again should fail.
- $res2 = DBA::$dba->insert($table, $data, $id);
- $this->assertFalse($res2);
+ // Inserting the same row again should throw a PDOException.
+ $res2 = DBA::$dba->insert($table, $data);
}
/**