diff options
author | Simon Holywell <[email protected]> | 2013-01-18 10:54:21 +0000 |
---|---|---|
committer | Simon Holywell <[email protected]> | 2013-01-18 10:54:21 +0000 |
commit | f9a6f92e3e38a4235438c14d5e1c205f331133ee (patch) | |
tree | 08210f45edfeea7105642b52e1cffcae5584c75b | |
parent | ef2e9078dfc23d1b14b25b8d0d22206ef61d5167 (diff) |
Move more query tests over to PHPUnit
-rw-r--r-- | test/ORMTest.php | 5 | ||||
-rw-r--r-- | test/QueryBuilderTest.php | 145 | ||||
-rwxr-xr-x | test/test_queries.php | 2 |
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); |