summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Holywell <[email protected]>2013-01-18 10:54:21 +0000
committerSimon Holywell <[email protected]>2013-01-18 10:54:21 +0000
commitf9a6f92e3e38a4235438c14d5e1c205f331133ee (patch)
tree08210f45edfeea7105642b52e1cffcae5584c75b
parentef2e9078dfc23d1b14b25b8d0d22206ef61d5167 (diff)
Move more query tests over to PHPUnit
-rw-r--r--test/ORMTest.php5
-rw-r--r--test/QueryBuilderTest.php145
-rwxr-xr-xtest/test_queries.php2
3 files changed, 150 insertions, 2 deletions
diff --git a/test/ORMTest.php b/test/ORMTest.php
index 07807da..81a5b05 100644
--- a/test/ORMTest.php
+++ b/test/ORMTest.php
@@ -11,6 +11,11 @@ class ORMTest extends PHPUnit_Framework_TestCase {
ORM::set_db($db);
}
+ public function tearDown() {
+ ORM::configure('logging', false);
+ ORM::set_db(null);
+ }
+
public function testStaticAtrributes() {
$this->assertEquals('0', ORM::CONDITION_FRAGMENT);
$this->assertEquals('1', ORM::CONDITION_VALUES);
diff --git a/test/QueryBuilderTest.php b/test/QueryBuilderTest.php
index 27d0772..cec8e0b 100644
--- a/test/QueryBuilderTest.php
+++ b/test/QueryBuilderTest.php
@@ -2,10 +2,151 @@
class QueryBuilderTest extends PHPUnit_Framework_TestCase {
- public function testFindManyQuery() {
+ public function setUp() {
+ // Enable logging
+ ORM::configure('logging', true);
+
+ // Set up the dummy database connection
+ $db = new MockPDO('sqlite::memory:');
+ ORM::set_db($db);
+ }
+
+ public function tearDown() {
+ ORM::configure('logging', false);
+ ORM::set_db(null);
+ }
+
+ public function testFindMany() {
ORM::for_table('widget')->find_many();
$expected = "SELECT * FROM `widget`";
$this->assertEquals($expected, ORM::get_last_query());
}
-} \ No newline at end of file
+ public function testFindOne() {
+ ORM::for_table('widget')->find_one();
+ $expected = "SELECT * FROM `widget` LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testFindOneWithPrimaryKeyFilter() {
+ ORM::for_table('widget')->find_one(5);
+ $expected = "SELECT * FROM `widget` WHERE `id` = '5' LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testWhereIdIs() {
+ ORM::for_table('widget')->where_id_is(5)->find_one();
+ $expected = "SELECT * FROM `widget` WHERE `id` = '5' LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testSingleWhereClause() {
+ ORM::for_table('widget')->where('name', 'Fred')->find_one();
+ $expected = "SELECT * FROM `widget` WHERE `name` = 'Fred' LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testMultipleWhereClauses() {
+ ORM::for_table('widget')->where('name', 'Fred')->where('age', 10)->find_one();
+ $expected = "SELECT * FROM `widget` WHERE `name` = 'Fred' AND `age` = '10' LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testWhereNotEqual() {
+ ORM::for_table('widget')->where_not_equal('name', 'Fred')->find_many();
+ $expected = "SELECT * FROM `widget` WHERE `name` != 'Fred'";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testWhereLike() {
+ ORM::for_table('widget')->where_like('name', '%Fred%')->find_one();
+ $expected = "SELECT * FROM `widget` WHERE `name` LIKE '%Fred%' LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testWhereNotLike() {
+ ORM::for_table('widget')->where_not_like('name', '%Fred%')->find_one();
+ $expected = "SELECT * FROM `widget` WHERE `name` NOT LIKE '%Fred%' LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testWhereIn() {
+ ORM::for_table('widget')->where_in('name', array('Fred', 'Joe'))->find_many();
+ $expected = "SELECT * FROM `widget` WHERE `name` IN ('Fred', 'Joe')";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testWhereNotIn() {
+ ORM::for_table('widget')->where_not_in('name', array('Fred', 'Joe'))->find_many();
+ $expected = "SELECT * FROM `widget` WHERE `name` NOT IN ('Fred', 'Joe')";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testLimit() {
+ ORM::for_table('widget')->limit(5)->find_many();
+ $expected = "SELECT * FROM `widget` LIMIT 5";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testLimitAndOffset() {
+ ORM::for_table('widget')->limit(5)->offset(5)->find_many();
+ $expected = "SELECT * FROM `widget` LIMIT 5 OFFSET 5";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testOrderByDesc() {
+ ORM::for_table('widget')->order_by_desc('name')->find_one();
+ $expected = "SELECT * FROM `widget` ORDER BY `name` DESC LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testOrderByAsc() {
+ ORM::for_table('widget')->order_by_asc('name')->find_one();
+ $expected = "SELECT * FROM `widget` ORDER BY `name` ASC LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testOrderByExpr() {
+ ORM::for_table('widget')->order_by_expr('SOUNDEX(`name`)')->find_one();
+ $expected = "SELECT * FROM `widget` ORDER BY SOUNDEX(`name`) LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testMultipleOrderBy() {
+ ORM::for_table('widget')->order_by_asc('name')->order_by_desc('age')->find_one();
+ $expected = "SELECT * FROM `widget` ORDER BY `name` ASC, `age` DESC LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testCount() {
+ ORM::for_table('widget')->count();
+ $expected = "SELECT COUNT(*) AS `count` FROM `widget` LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testMax() {
+ ORM::for_table('person')->max('height');
+ $expected = "SELECT MAX(`height`) AS `max` FROM `person` LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testMin() {
+ ORM::for_table('person')->min('height');
+ $expected = "SELECT MIN(`height`) AS `min` FROM `person` LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testAvg() {
+ ORM::for_table('person')->avg('height');
+ $expected = "SELECT AVG(`height`) AS `avg` FROM `person` LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+ public function testSum() {
+ ORM::for_table('person')->sum('height');
+ $expected = "SELECT SUM(`height`) AS `sum` FROM `person` LIMIT 1";
+ $this->assertEquals($expected, ORM::get_last_query());
+ }
+
+}
+
diff --git a/test/test_queries.php b/test/test_queries.php
index 8580fd6..c9f5c84 100755
--- a/test/test_queries.php
+++ b/test/test_queries.php
@@ -104,6 +104,8 @@
$expected = "SELECT * FROM `widget` ORDER BY `name` ASC, `age` DESC LIMIT 1";
Tester::check_equal("Multiple ORDER BY", $expected);
+ ///////////////////////////////////////////
+
ORM::for_table('widget')->group_by('name')->find_many();
$expected = "SELECT * FROM `widget` GROUP BY `name`";
Tester::check_equal("GROUP BY", $expected);