summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Holywell <[email protected]>2013-01-21 17:30:38 +0000
committerSimon Holywell <[email protected]>2013-01-21 17:30:38 +0000
commit6391acb3371e07742cf94c7c4bc4cc3888a6cae5 (patch)
tree085fa1607f7f2921ef6c5225cb0de2759eadcea9
parenta1d8a1c68465c78be34fe3a9afb817c990028715 (diff)
Add more query building tests
-rw-r--r--test/QueryBuilderTest.php42
-rwxr-xr-xtest/test_queries.php3
2 files changed, 44 insertions, 1 deletions
diff --git a/test/QueryBuilderTest.php b/test/QueryBuilderTest.php
index bb4ba06..8e2ef32 100644
--- a/test/QueryBuilderTest.php
+++ b/test/QueryBuilderTest.php
@@ -184,6 +184,48 @@ class QueryBuilderTest extends PHPUnit_Framework_TestCase {
$this->assertEquals($expected, ORM::get_last_query());
}
+ public function testHavingLessThanOrEqualAndGreaterThanOrEqual() {
+ ORM::for_table('widget')->group_by('name')->having_lte('age', 10)->having_gte('age', 5)->find_many();
+ $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `age` <= '10' AND `age` >= '5'";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testHavingNull() {
+ ORM::for_table('widget')->group_by('name')->having_null('name')->find_many();
+ $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` IS NULL";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testHavingNotNull() {
+ ORM::for_table('widget')->group_by('name')->having_not_null('name')->find_many();
+ $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` IS NOT NULL";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testRawHaving() {
+ ORM::for_table('widget')->group_by('name')->having_raw('`name` = ? AND (`age` = ? OR `age` = ?)', array('Fred', 5, 10))->find_many();
+ $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` = 'Fred' AND (`age` = '5' OR `age` = '10')";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testComplexQuery() {
+ ORM::for_table('widget')->where('name', 'Fred')->limit(5)->offset(5)->order_by_asc('name')->find_many();
+ $expected = "SELECT * FROM `widget` WHERE `name` = 'Fred' ORDER BY `name` ASC LIMIT 5 OFFSET 5";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testWhereLessThanAndGreaterThan() {
+ ORM::for_table('widget')->where_lt('age', 10)->where_gt('age', 5)->find_many();
+ $expected = "SELECT * FROM `widget` WHERE `age` < '10' AND `age` > '5'";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testWhereLessThanAndEqualAndGreaterThanAndEqual() {
+ ORM::for_table('widget')->where_lte('age', 10)->where_gte('age', 5)->find_many();
+ $expected = "SELECT * FROM `widget` WHERE `age` <= '10' AND `age` >= '5'";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
public function testCount() {
ORM::for_table('widget')->count();
$expected = "SELECT COUNT(*) AS `count` FROM `widget` LIMIT 1";
diff --git a/test/test_queries.php b/test/test_queries.php
index db78ffe..14adf9b 100755
--- a/test/test_queries.php
+++ b/test/test_queries.php
@@ -148,7 +148,6 @@
$expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `age` < '10' AND `age` > '5'";
Tester::check_equal("HAVING less than and greater than", $expected);
- ///////////////////////////////////////////
ORM::for_table('widget')->group_by('name')->having_lte('age', 10)->having_gte('age', 5)->find_many();
$expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `age` <= '10' AND `age` >= '5'";
@@ -178,6 +177,8 @@
$expected = "SELECT * FROM `widget` WHERE `age` <= '10' AND `age` >= '5'";
Tester::check_equal("Less than or equal and greater than or equal", $expected);
+ ///////////////////////////////////////////
+
ORM::for_table('widget')->where_null('name')->find_many();
$expected = "SELECT * FROM `widget` WHERE `name` IS NULL";
Tester::check_equal("where_null method", $expected);