Skip to content

Commit 5f69613

Browse files
committed
add SQL unittests
1 parent f428753 commit 5f69613

File tree

7 files changed

+1299
-0
lines changed

7 files changed

+1299
-0
lines changed

tests/SqlDeleteTest.php

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
require_once __DIR__ . '/../src/Connection.php';
3+
require_once __DIR__ . '/../src/QueryBuilder.php';
4+
5+
6+
/**
7+
* class SqlDeleteTest
8+
*/
9+
class SqlDeleteTest extends PHPUnit\Framework\TestCase
10+
{
11+
/**
12+
* @var QueryBuilder|null
13+
*/
14+
private $qb = null;
15+
16+
protected function setUp(): void
17+
{
18+
$config = require __DIR__ . '/../example/config.php';
19+
20+
if (!$this->qb) {
21+
$this->qb = new QueryBuilder(Connection::make($config['database']));
22+
}
23+
}
24+
25+
public function testDeleteEmptyTable()
26+
{
27+
$result = $this->qb->delete('');
28+
29+
$this->assertSame($this->qb, $result);
30+
$this->assertSame(true, $result->hasError());
31+
$this->assertSame($this->qb->getErrorMessage(), 'Empty $table in QueryBuilder::delete');
32+
}
33+
34+
public function testDeleteTableAsString()
35+
{
36+
$result = $this->qb->delete('groups');
37+
38+
$this->assertSame(false, $result->hasError());
39+
$this->assertSame("DELETE FROM `groups`", $result->getSql());
40+
}
41+
42+
public function testDeleteTableAsArray()
43+
{
44+
$result = $this->qb->delete(['g' => 'groups']);
45+
46+
$this->assertSame(false, $result->hasError());
47+
$this->assertSame("DELETE FROM `groups` AS `g`", $result->getSql());
48+
}
49+
50+
public function testDeleteEq()
51+
{
52+
$result = $this->qb->delete('comments')->where([['user_id', '=', 10]]);
53+
54+
$this->assertSame(false, $result->hasError());
55+
$this->assertSame("DELETE FROM `comments` WHERE (`user_id` = 10)", $result->getSql());
56+
$this->assertSame([10], $result->getParams());
57+
}
58+
59+
public function testDeleteNoEq()
60+
{
61+
$result = $this->qb->delete('comments')->where([['user_id', 10]]);
62+
63+
$this->assertSame(false, $result->hasError());
64+
$this->assertSame("DELETE FROM `comments` WHERE (`user_id` = 10)", $result->getSql());
65+
$this->assertSame([10], $result->getParams());
66+
}
67+
68+
public function testDeleteLimitEq()
69+
{
70+
$result = $this->qb->delete('users')->where([['name', '=', 'John']])->limit();
71+
72+
$this->assertSame(false, $result->hasError());
73+
if ($this->qb->getDriver() == 'sqlite') {
74+
$this->assertSame("DELETE FROM `users` WHERE (`name` = 'John')", $result->getSql());
75+
} else {
76+
$this->assertSame("DELETE FROM `users` WHERE (`name` = 'John') LIMIT 1", $result->getSql());
77+
}
78+
$this->assertSame(['John'], $result->getParams());
79+
}
80+
81+
public function testDeleteLimitNoEq()
82+
{
83+
$result = $this->qb->delete('users')->where([['name', 'John']])->limit();
84+
85+
$this->assertSame(false, $result->hasError());
86+
if ($this->qb->getDriver() == 'sqlite') {
87+
$this->assertSame("DELETE FROM `users` WHERE (`name` = 'John')", $result->getSql());
88+
} else {
89+
$this->assertSame("DELETE FROM `users` WHERE (`name` = 'John') LIMIT 1", $result->getSql());
90+
}
91+
$this->assertSame(['John'], $result->getParams());
92+
}
93+
94+
protected function tearDown(): void
95+
{
96+
$this->qb = null;
97+
}
98+
}

tests/SqlInsertTest.php

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
<?php
2+
require_once __DIR__ . '/../src/Connection.php';
3+
require_once __DIR__ . '/../src/QueryBuilder.php';
4+
5+
6+
/**
7+
* class SqlInsertTest
8+
*/
9+
class SqlInsertTest extends PHPUnit\Framework\TestCase
10+
{
11+
/**
12+
* @var QueryBuilder|null
13+
*/
14+
private $qb = null;
15+
16+
protected function setUp(): void
17+
{
18+
$config = require __DIR__ . '/../example/config.php';
19+
20+
if (!$this->qb) {
21+
$this->qb = new QueryBuilder(Connection::make($config['database']));
22+
}
23+
}
24+
25+
public function testInsertEmptyTable()
26+
{
27+
$result = $this->qb->insert('', ['param' => 'new_value']);
28+
29+
$this->assertSame($this->qb, $result);
30+
$this->assertSame(true, $result->hasError());
31+
$this->assertSame($this->qb->getErrorMessage(), 'Empty $table or $fields in QueryBuilder::insert');
32+
}
33+
34+
public function testInsertEmptyFields()
35+
{
36+
$result = $this->qb->insert('params', []);
37+
38+
$this->assertSame($this->qb, $result);
39+
$this->assertSame(true, $this->qb->hasError());
40+
$this->assertSame($this->qb->getErrorMessage(), 'Empty $table or $fields in QueryBuilder::insert');
41+
}
42+
43+
public function testInsertEmptyTableAndFields()
44+
{
45+
$result = $this->qb->insert('', []);
46+
47+
$this->assertSame($this->qb, $result);
48+
$this->assertSame(true, $result->hasError());
49+
$this->assertSame($this->qb->getErrorMessage(), 'Empty $table or $fields in QueryBuilder::insert');
50+
}
51+
52+
public function testInsertTableAsString()
53+
{
54+
$result = $this->qb->insert('groups', [
55+
'name' => 'Moderator',
56+
'permissions' => 'moderator'
57+
]);
58+
59+
$this->assertSame(false, $result->hasError());
60+
$this->assertSame("INSERT INTO `groups` (`name`, `permissions`) VALUES ('Moderator','moderator')", $result->getSql());
61+
$this->assertSame(['Moderator', 'moderator'], $result->getParams());
62+
}
63+
64+
public function testInsertTableAsArray()
65+
{
66+
$result = $this->qb->insert(['g' => 'groups'], [
67+
'name' => 'Moderator',
68+
'permissions' => 'moderator'
69+
]);
70+
71+
$this->assertSame(false, $result->hasError());
72+
$this->assertSame("INSERT INTO `groups` AS `g` (`name`, `permissions`) VALUES ('Moderator','moderator')", $result->getSql());
73+
$this->assertSame(['Moderator', 'moderator'], $result->getParams());
74+
}
75+
76+
public function testInsertMultipleTableAsString()
77+
{
78+
$result = $this->qb->insert('groups', [
79+
['name', 'role'],
80+
['Moderator', 'moderator'], ['Moderator2', 'moderator'],
81+
['User', 'user'], ['User2', 'user']
82+
]);
83+
84+
$this->assertSame(false, $result->hasError());
85+
$this->assertSame("INSERT INTO `groups` (`name`, `role`) VALUES ('Moderator','moderator'),('Moderator2','moderator'),('User','user'),('User2','user')", $result->getSql());
86+
$this->assertSame(['Moderator', 'moderator', 'Moderator2', 'moderator', 'User', 'user', 'User2', 'user'], $result->getParams());
87+
}
88+
89+
public function testInsertMultipleTableAsArray()
90+
{
91+
$result = $this->qb->insert(['g' => 'groups'], [
92+
['name', 'role'],
93+
['Moderator', 'moderator'], ['Moderator2', 'moderator'],
94+
['User', 'user'], ['User2', 'user']
95+
]);
96+
97+
$this->assertSame(false, $result->hasError());
98+
$this->assertSame("INSERT INTO `groups` AS `g` (`name`, `role`) VALUES ('Moderator','moderator'),('Moderator2','moderator'),('User','user'),('User2','user')", $result->getSql());
99+
$this->assertSame(['Moderator', 'moderator', 'Moderator2', 'moderator', 'User', 'user', 'User2', 'user'], $result->getParams());
100+
}
101+
102+
protected function tearDown(): void
103+
{
104+
$this->qb = null;
105+
}
106+
}

0 commit comments

Comments
 (0)