Skip to content

Commit 7a012c6

Browse files
committed
tests: added test for getInsertId() WIP
1 parent efe7ff2 commit 7a012c6

4 files changed

+244
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
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+
$connection->query('
17+
CREATE TEMPORARY TABLE noprimarykey (
18+
col int
19+
) ENGINE=InnoDB
20+
');
21+
22+
$res = $connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
23+
Assert::equal('0', $connection->getInsertId());
24+
25+
$res = $connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
26+
Assert::equal('0', $connection->getInsertId());
27+
28+
29+
$connection->query('
30+
CREATE TEMPORARY TABLE primarykey (
31+
prim int NOT NULL,
32+
PRIMARY KEY(prim)
33+
) ENGINE=InnoDB
34+
');
35+
36+
$res = $connection->query('INSERT INTO primarykey (prim) VALUES (5)');
37+
Assert::equal('0', $connection->getInsertId());
38+
39+
$res = $connection->query('INSERT INTO primarykey (prim) VALUES (6)');
40+
Assert::equal('0', $connection->getInsertId());
41+
42+
43+
$connection->query('
44+
CREATE TEMPORARY TABLE autoprimarykey (
45+
prim int NOT NULL AUTO_INCREMENT,
46+
col int,
47+
PRIMARY KEY(prim)
48+
) ENGINE=InnoDB
49+
');
50+
51+
$res = $connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
52+
Assert::equal('1', $connection->getInsertId());
53+
54+
$res = $connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
55+
Assert::equal('2', $connection->getInsertId());
56+
57+
58+
$connection->query('
59+
CREATE TEMPORARY TABLE multiautoprimarykey (
60+
prim1 int NOT NULL AUTO_INCREMENT,
61+
prim2 int NOT NULL,
62+
PRIMARY KEY(prim1, prim2)
63+
) ENGINE=InnoDB
64+
');
65+
66+
$res = $connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
67+
Assert::equal('1', $connection->getInsertId());
68+
69+
$res = $connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
70+
Assert::equal('2', $connection->getInsertId());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
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+
$res = $connection->query('INSERT INTO primarykey (prim) VALUES (5)');
22+
Assert::equal(FALSE, $connection->getInsertId());
23+
24+
$res = $connection->query('INSERT INTO primarykey (prim) VALUES (6)');
25+
Assert::equal(FALSE, $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+
$res = $connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
37+
Assert::equal('1', $connection->getInsertId('autoprimarykey_prim_seq'));
38+
39+
$res = $connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
40+
Assert::equal('2', $connection->getInsertId('autoprimarykey_prim_seq'));
41+
42+
43+
$connection->query('
44+
CREATE TEMPORARY TABLE "multiautoprimarykey" (
45+
prim1 serial NOT NULL,
46+
prim2 int NOT NULL,
47+
PRIMARY KEY(prim1, prim2)
48+
);
49+
');
50+
51+
$res = $connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
52+
Assert::equal('1', $connection->getInsertId('multiautoprimarykey_prim1_seq'));
53+
54+
$res = $connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
55+
Assert::equal('2', $connection->getInsertId('multiautoprimarykey_prim1_seq'));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+
$res = $connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
21+
Assert::equal('1', $connection->getInsertId());
22+
23+
$res = $connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
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+
$res = $connection->query('INSERT INTO primarykey (prim) VALUES (5)');
34+
Assert::equal('5', $connection->getInsertId());
35+
36+
$res = $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+
$res = $connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
48+
Assert::equal('1', $connection->getInsertId());
49+
50+
$res = $connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
51+
Assert::equal('2', $connection->getInsertId());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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('
15+
CREATE TEMPORARY TABLE [noprimarykey] (
16+
col int
17+
)
18+
');
19+
20+
$res = $connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
21+
Assert::equal('1', $connection->getInsertId());
22+
23+
$res = $connection->query('INSERT INTO noprimarykey (col) VALUES (NULL)');
24+
Assert::equal('2', $connection->getInsertId());
25+
26+
27+
$connection->query('
28+
CREATE TEMPORARY TABLE [primarykey] (
29+
prim int NOT NULL,
30+
PRIMARY KEY(prim)
31+
)
32+
');
33+
34+
$res = $connection->query('INSERT INTO primarykey (prim) VALUES (5)');
35+
Assert::equal('5', $connection->getInsertId());
36+
37+
$res = $connection->query('INSERT INTO primarykey (prim) VALUES (6)');
38+
Assert::equal('6', $connection->getInsertId());
39+
40+
41+
$connection->query('
42+
CREATE TEMPORARY TABLE [autoprimarykey] (
43+
prim int NOT NULL IDENTITY(1,1),
44+
col int,
45+
PRIMARY KEY(prim)
46+
)
47+
');
48+
49+
$res = $connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
50+
Assert::equal('1', $connection->getInsertId());
51+
52+
$res = $connection->query('INSERT INTO autoprimarykey (col) VALUES (NULL)');
53+
Assert::equal('2', $connection->getInsertId());
54+
55+
56+
$connection->query('
57+
CREATE TEMPORARY TABLE [multiautoprimarykey] (
58+
prim1 int NOT NULL IDENTITY(1,1),
59+
prim2 int NOT NULL,
60+
PRIMARY KEY(prim1, prim2)
61+
)
62+
');
63+
64+
$res = $connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
65+
Assert::equal('1', $connection->getInsertId());
66+
67+
$res = $connection->query('INSERT INTO multiautoprimarykey (prim2) VALUES (3)');
68+
Assert::equal('2', $connection->getInsertId());

0 commit comments

Comments
 (0)