From 2c7642a7876b4a41e0404de7d0fd3b3e4c71b671 Mon Sep 17 00:00:00 2001 From: zYne Date: Thu, 28 Dec 2006 11:19:05 +0000 Subject: [PATCH] added tests for expressions in DQL select part --- tests/EventListener/ChainTestCase.php | 64 ++++++++++++++++++++++- tests/Query/ExpressionTestCase.php | 75 +++++++++++++++++++++++++++ 2 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 tests/Query/ExpressionTestCase.php diff --git a/tests/EventListener/ChainTestCase.php b/tests/EventListener/ChainTestCase.php index 31ac52484..514aaa02d 100644 --- a/tests/EventListener/ChainTestCase.php +++ b/tests/EventListener/ChainTestCase.php @@ -29,6 +29,68 @@ * @link www.phpdoctrine.com * @since 1.0 * @version $Revision$ - */ + */ class Doctrine_EventListener_Chain_TestCase extends Doctrine_UnitTestCase { + + public function testAccessorInvokerChain() { + $e = new EventListenerChainTest; + $e->name = "something"; + + + $this->assertEqual($e->get('name'), 'somethingTestATestB'); + // test repeated calls + $this->assertEqual($e->get('name'), 'somethingTestATestB'); + $this->assertEqual($e->id, null); + $this->assertEqual($e->rawGet('name'), 'something'); + + $e->save(); + + $this->assertEqual($e->id, 1); + $this->assertEqual($e->name, 'somethingTestATestB'); + $this->assertEqual($e->rawGet('name'), 'something'); + + $this->connection->clear(); + + $e->refresh(); + + $this->assertEqual($e->id, 1); + $this->assertEqual($e->name, 'somethingTestATestB'); + $this->assertEqual($e->rawGet('name'), 'something'); + + $this->connection->clear(); + + $e = $e->getTable()->find($e->id); + + $this->assertEqual($e->id, 1); + $this->assertEqual($e->name, 'somethingTestATestB'); + $this->assertEqual($e->rawGet('name'), 'something'); + } + public function prepareData() { } + public function prepareTables() { + $this->tables = array('EventListenerChainTest'); + parent::prepareTables(); + } } +class EventListenerChainTest extends Doctrine_Record { + public function setTableDefinition() { + $this->hasColumn("name", "string", 100); + } + public function setUp() { + $chain = new Doctrine_EventListener_Chain(); + $chain->add(new Doctrine_EventListener_TestA()); + $chain->add(new Doctrine_EventListener_TestB()); + $this->setAttribute(Doctrine::ATTR_LISTENER, $chain); + } +} + +class Doctrine_EventListener_TestA extends Doctrine_EventListener { + public function onGetProperty(Doctrine_Record $record, $property, $value) { + return $value . 'TestA'; + } +} +class Doctrine_EventListener_TestB extends Doctrine_EventListener { + public function onGetProperty(Doctrine_Record $record, $property, $value) { + return $value . 'TestB'; + } +} + diff --git a/tests/Query/ExpressionTestCase.php b/tests/Query/ExpressionTestCase.php new file mode 100644 index 000000000..003e0991f --- /dev/null +++ b/tests/Query/ExpressionTestCase.php @@ -0,0 +1,75 @@ +. + */ + +/** + * Doctrine_Query_Expression_TestCase + * + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @author Konsta Vesterinen + * @version $Revision$ + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + */ +class Doctrine_Query_Expression_TestCase extends Doctrine_UnitTestCase { + public function testUnknownExpressionInSelectClauseThrowsException() { + $q = new Doctrine_Query(); + + try { + $q->parseQuery('SELECT SOMEUNKNOWNFUNC(u.name, " ", u.loginname) FROM User u'); + $this->fail(); + } catch(Doctrine_Query_Exception $e) { + $this->pass(); + } + } + public function testUnknownColumnWithinFunctionInSelectClauseThrowsException() { + $q = new Doctrine_Query(); + + try { + $q->parseQuery('SELECT CONCAT(u.name, u.unknown) FROM User u'); + $this->fail(); + } catch(Doctrine_Query_Exception $e) { + $this->pass(); + } + } + public function testConcatIsSupportedInSelectClause() { + $q = new Doctrine_Query(); + + $q->parseQuery('SELECT CONCAT(u.name, u.loginname) FROM User u'); + + $this->assertEqual($q->getQuery(), 'SELECT CONCAT(e.name, e.loginname) AS e__0 FROM entity e WHERE (e.type = 0)'); + } + public function testConcatInSelectClauseSupportsLiteralStrings() { + $q = new Doctrine_Query(); + + $q->parseQuery("SELECT CONCAT(u.name, 'The Man') FROM User u"); + + $this->assertEqual($q->getQuery(), "SELECT CONCAT(e.name, 'The Man') AS e__0 FROM entity e WHERE (e.type = 0)"); + } + public function testConcatInSelectClauseSupportsMoreThanTwoArgs() { + $q = new Doctrine_Query(); + + $q->parseQuery("SELECT CONCAT(u.name, 'The Man', u.loginname) FROM User u"); + + $this->assertEqual($q->getQuery(), "SELECT CONCAT(e.name, 'The Man', e.loginname) AS e__0 FROM entity e WHERE (e.type = 0)"); + } +}