Skip to content

Commit 9589344

Browse files
committed
tests: added test for getInsertId()
1 parent 961ef10 commit 9589344

4 files changed

+270
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
3+
/**
4+
* Test: Nette\Database\Connection::getInsertId()
5+
* @dataProvider? databases.ini mysql
6+
*/
7+
8+
use Tester\Assert;
9+
use Nette\Utils\DateTime;
10+
11+
require __DIR__ . '/connect.inc.php'; // create $connection
12+
13+
$connection->query('CREATE DATABASE IF NOT EXISTS nette_test');
14+
$connection->query('USE nette_test');
15+
16+
17+
$connection->query('
18+
CREATE TEMPORARY TABLE noprimarykey (
19+
col int
20+
) ENGINE=InnoDB
21+
');
22+
23+
$connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
24+
Assert::equal('0', $connection->getInsertId());
25+
26+
$connection->query('INSERT INTO noprimarykey (col) VALUES (3)');
27+
Assert::equal('0', $connection->getInsertId());
28+
29+
30+
$connection->query('
31+
CREATE TEMPORARY TABLE primarykey (
32+
prim int NOT NULL,
33+
PRIMARY KEY(prim)
34+
) ENGINE=InnoDB
35+
');
36+
37+
$connection->query('INSERT INTO primarykey (prim) VALUES (5)');
38+
Assert::equal('0', $connection->getInsertId());
39+
40+
$connection->query('INSERT INTO primarykey (prim) VALUES (6)');
41+
Assert::equal('0', $connection->getInsertId());
42+
43+
44+
$connection->query('
45+
CREATE TEMPORARY TABLE autoprimarykey (
46+
prim int NOT NULL AUTO_INCREMENT,
47+
col int,
48+
PRIMARY KEY(prim)
49+
) ENGINE=InnoDB
50+
');
51+
52+
$connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
53+
Assert::equal('1', $connection->getInsertId());
54+
55+
$connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
56+
Assert::equal('2', $connection->getInsertId());
57+
58+
$connection->query('INSERT INTO autoprimarykey (prim, col) VALUES (10, NULL)');
59+
Assert::equal('10', $connection->getInsertId());
60+
61+
62+
$connection->query('
63+
CREATE TEMPORARY TABLE multiautoprimarykey (
64+
prim1 int NOT NULL AUTO_INCREMENT,
65+
prim2 int NOT NULL,
66+
PRIMARY KEY(prim1, prim2)
67+
) ENGINE=InnoDB
68+
');
69+
70+
$connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
71+
Assert::equal('1', $connection->getInsertId());
72+
73+
$connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
74+
Assert::equal('2', $connection->getInsertId());
75+
76+
$connection->query('INSERT INTO multiautoprimarykey (prim1, prim2) VALUES (10, 3)');
77+
Assert::equal('10', $connection->getInsertId());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
3+
/**
4+
* Test: Nette\Database\Connection::getInsertId()
5+
* @dataProvider? databases.ini postgresql
6+
*/
7+
8+
use Tester\Assert;
9+
use Nette\Utils\DateTime;
10+
11+
require __DIR__ . '/connect.inc.php'; // create $connection
12+
13+
14+
$connection->query('
15+
CREATE TEMPORARY TABLE "primarykey" (
16+
prim int NOT NULL,
17+
PRIMARY KEY(prim)
18+
)
19+
');
20+
21+
$connection->query('INSERT INTO primarykey (prim) VALUES (5)');
22+
Assert::equal(PHP_VERSION_ID < 70011 ? FALSE : '0', $connection->getInsertId());
23+
24+
$connection->query('INSERT INTO primarykey (prim) VALUES (6)');
25+
Assert::equal(PHP_VERSION_ID < 70011 ? FALSE : '0', $connection->getInsertId());
26+
27+
28+
$connection->query('
29+
CREATE TEMPORARY TABLE "autoprimarykey" (
30+
prim serial NOT NULL,
31+
col int,
32+
PRIMARY KEY(prim)
33+
)
34+
');
35+
36+
$connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
37+
Assert::equal('1', $connection->getInsertId('autoprimarykey_prim_seq'));
38+
39+
$connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
40+
Assert::equal('2', $connection->getInsertId('autoprimarykey_prim_seq'));
41+
42+
$connection->query('INSERT INTO autoprimarykey (prim, col) VALUES (10, NULL)');
43+
Assert::equal('2', $connection->getInsertId('autoprimarykey_prim_seq'));
44+
45+
46+
$connection->query('
47+
CREATE TEMPORARY TABLE "multiautoprimarykey" (
48+
prim1 serial NOT NULL,
49+
prim2 int NOT NULL,
50+
PRIMARY KEY(prim1, prim2)
51+
);
52+
');
53+
54+
$connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
55+
Assert::equal('1', $connection->getInsertId('multiautoprimarykey_prim1_seq'));
56+
57+
$connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
58+
Assert::equal('2', $connection->getInsertId('multiautoprimarykey_prim1_seq'));
59+
60+
$connection->query('INSERT INTO multiautoprimarykey (prim1, prim2) VALUES (10, 3)');
61+
Assert::equal('2', $connection->getInsertId('multiautoprimarykey_prim1_seq'));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
/**
4+
* Test: Nette\Database\Connection::getInsertId()
5+
* @dataProvider? databases.ini sqlite
6+
*/
7+
8+
use Tester\Assert;
9+
use Nette\Utils\DateTime;
10+
11+
require __DIR__ . '/connect.inc.php'; // create $connection
12+
13+
14+
$connection->query('
15+
CREATE TABLE [noprimarykey] (
16+
[col] INTEGER
17+
)
18+
');
19+
20+
$connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
21+
Assert::equal('1', $connection->getInsertId());
22+
23+
$connection->query('INSERT INTO noprimarykey (col) VALUES (3)');
24+
Assert::equal('2', $connection->getInsertId());
25+
26+
27+
$connection->query('
28+
CREATE TABLE [primarykey] (
29+
[prim] INTEGER PRIMARY KEY NOT NULL
30+
)
31+
');
32+
33+
$connection->query('INSERT INTO primarykey (prim) VALUES (5)');
34+
Assert::equal('5', $connection->getInsertId());
35+
36+
$connection->query('INSERT INTO primarykey (prim) VALUES (6)');
37+
Assert::equal('6', $connection->getInsertId());
38+
39+
40+
$connection->query('
41+
CREATE TABLE [autoprimarykey] (
42+
[prim] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
43+
[col] INTEGER
44+
)
45+
');
46+
47+
$connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
48+
Assert::equal('1', $connection->getInsertId());
49+
50+
$connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
51+
Assert::equal('2', $connection->getInsertId());
52+
53+
$connection->query('INSERT INTO autoprimarykey (prim, col) VALUES (10, NULL)');
54+
Assert::equal('10', $connection->getInsertId());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?php
2+
3+
/**
4+
* Test: Nette\Database\Connection::getInsertId()
5+
* @dataProvider? databases.ini sqlsrv
6+
*/
7+
8+
use Tester\Assert;
9+
use Nette\Utils\DateTime;
10+
11+
require __DIR__ . '/connect.inc.php'; // create $connection
12+
13+
14+
$connection->query("IF OBJECT_ID('noprimarykey', 'U') IS NOT NULL DROP TABLE noprimarykey");
15+
$connection->query('
16+
CREATE TABLE [noprimarykey] (
17+
col int
18+
)
19+
');
20+
21+
$connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
22+
Assert::equal('', $connection->getInsertId());
23+
24+
$connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
25+
Assert::equal('', $connection->getInsertId());
26+
27+
28+
$connection->query("IF OBJECT_ID('primarykey', 'U') IS NOT NULL DROP TABLE primarykey");
29+
$connection->query('
30+
CREATE TABLE [primarykey] (
31+
prim int NOT NULL,
32+
PRIMARY KEY(prim)
33+
)
34+
');
35+
36+
$connection->query('INSERT INTO primarykey (prim) VALUES (5)');
37+
Assert::equal('', $connection->getInsertId());
38+
39+
$connection->query('INSERT INTO primarykey (prim) VALUES (6)');
40+
Assert::equal('', $connection->getInsertId());
41+
42+
43+
$connection->query("IF OBJECT_ID('autoprimarykey', 'U') IS NOT NULL DROP TABLE autoprimarykey");
44+
$connection->query('
45+
CREATE TABLE [autoprimarykey] (
46+
prim int NOT NULL IDENTITY(1,1),
47+
col int,
48+
PRIMARY KEY(prim)
49+
)
50+
');
51+
52+
$connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
53+
Assert::equal('1', $connection->getInsertId());
54+
55+
$connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
56+
Assert::equal('2', $connection->getInsertId());
57+
58+
$connection->query('SET IDENTITY_INSERT autoprimarykey ON; INSERT INTO autoprimarykey (prim, col) VALUES (10, NULL)');
59+
Assert::equal('10', $connection->getInsertId());
60+
61+
62+
$connection->query("IF OBJECT_ID('multiautoprimarykey', 'U') IS NOT NULL DROP TABLE multiautoprimarykey");
63+
$connection->query('
64+
CREATE TABLE [multiautoprimarykey] (
65+
prim1 int NOT NULL IDENTITY(1,1),
66+
prim2 int NOT NULL,
67+
PRIMARY KEY(prim1, prim2)
68+
)
69+
');
70+
71+
$connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
72+
Assert::equal('1', $connection->getInsertId());
73+
74+
$connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
75+
Assert::equal('2', $connection->getInsertId());
76+
77+
$connection->query('SET IDENTITY_INSERT multiautoprimarykey ON; INSERT INTO multiautoprimarykey (prim1, prim2) VALUES (10, 3)');
78+
Assert::equal('10', $connection->getInsertId());

0 commit comments

Comments
 (0)