forked from codeigniter4/CodeIgniter4
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathLastInsertIDTest.php
More file actions
94 lines (75 loc) · 2.67 KB
/
LastInsertIDTest.php
File metadata and controls
94 lines (75 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
declare(strict_types=1);
/**
* This file is part of CodeIgniter 4 framework.
*
* (c) CodeIgniter Foundation <[email protected]>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace CodeIgniter\Database\Live\OCI8;
use CodeIgniter\Database\BasePreparedQuery;
use CodeIgniter\Database\Query;
use CodeIgniter\Test\CIUnitTestCase;
use CodeIgniter\Test\DatabaseTestTrait;
use PHPUnit\Framework\Attributes\Group;
use Tests\Support\Database\Seeds\CITestSeeder;
/**
* @internal
*/
#[Group('DatabaseLive')]
final class LastInsertIDTest extends CIUnitTestCase
{
use DatabaseTestTrait;
protected $refresh = true;
protected $seed = CITestSeeder::class;
protected function setUp(): void
{
parent::setUp();
if ($this->db->DBDriver !== 'OCI8') {
$this->markTestSkipped('Only OCI8 has its own implementation.');
}
}
public function testGetInsertIDWithInsert(): void
{
$jobData = [
'name' => 'Grocery Sales',
'description' => 'Discount!',
];
$this->db->table('job')->insert($jobData);
$actual = $this->db->insertID();
$this->assertSame(5, $actual);
}
public function testGetInsertIDWithQuery(): void
{
$this->db->query('INSERT INTO "db_job" ("name", "description") VALUES (?, ?)', ['Grocery Sales', 'Discount!']);
$actual = $this->db->insertID();
$this->assertSame(5, $actual);
}
public function testGetInsertIDWithHasCommentQuery(): void
{
$sql = <<<'SQL'
-- INSERT INTO "db_misc" ("key", "value") VALUES ('key', 'value')
--INSERT INTO "db_misc" ("key", "value") VALUES ('key', 'value')
/* INSERT INTO "db_misc" ("key", "value") VALUES ('key', 'value') */
/*INSERT INTO "db_misc" ("key", "value") VALUES ('key', 'value')*/
INSERT /* INTO "db_misc" */ INTO -- comment "db_misc"
"db_job" ("name", "description") VALUES (' INTO "abc"', ?)
SQL;
$this->db->query($sql, ['Discount!']);
$actual = $this->db->insertID();
$this->assertSame(5, $actual);
}
public function testGetInsertIDWithPreparedQuery(): void
{
$query = $this->db->prepare(static function ($db) {
$sql = 'INSERT INTO "db_job" ("name", "description") VALUES (?, ?)';
return (new Query($db))->setQuery($sql);
});
$this->assertInstanceOf(BasePreparedQuery::class, $query);
$query->execute('foo', 'bar');
$actual = $this->db->insertID();
$this->assertSame(5, $actual);
}
}