From 11287992c74d0933ce2359f900bdc937bdfad38e Mon Sep 17 00:00:00 2001 From: zYne Date: Sun, 24 Jun 2007 21:37:54 +0000 Subject: [PATCH] tests for record template methods --- tests/Record/HookTestCase.php | 127 ++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 tests/Record/HookTestCase.php diff --git a/tests/Record/HookTestCase.php b/tests/Record/HookTestCase.php new file mode 100644 index 000000000..9a9139059 --- /dev/null +++ b/tests/Record/HookTestCase.php @@ -0,0 +1,127 @@ +. + */ + +/** + * Doctrine_Record_Hook_TestCase + * + * @package Doctrine + * @author Konsta Vesterinen + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + * @version $Revision$ + */ +class Doctrine_Record_Hook_TestCase extends Doctrine_UnitTestCase +{ + public function prepareData() + { } + public function prepareTables() + { + $this->tables = array('RecordHookTest'); + + parent::prepareTables(); + } + + public function testInsertHooksGetInvoked() + { + $r = new RecordHookTest(); + + $r->name = 'record'; + $r->save(); + + $this->assertEqual($r->pop(), 'postSave'); + $this->assertEqual($r->pop(), 'postInsert'); + $this->assertEqual($r->pop(), 'preInsert'); + $this->assertEqual($r->pop(), 'preSave'); + } + + public function testUpdateHooksGetInvoked() + { + $records = Doctrine_Query::create()->from('RecordHookTest t')->where("t.name = 'record'")->execute(); + $r = $records[0]; + + $r->name = 'record 2'; + $r->save(); + + $this->assertEqual($r->pop(), 'postSave'); + $this->assertEqual($r->pop(), 'postUpdate'); + $this->assertEqual($r->pop(), 'preUpdate'); + $this->assertEqual($r->pop(), 'preSave'); + } + + public function testDeleteHooksGetInvoked() + { + $records = Doctrine_Query::create()->from('RecordHookTest t')->where("t.name = 'record 2'")->execute(); + $r = $records[0]; + + $r->delete(); + + $this->assertEqual($r->pop(), 'postDelete'); + $this->assertEqual($r->pop(), 'preDelete'); + } +} +class RecordHookTest extends Doctrine_Record +{ + protected $_messages = array(); + + public function setTableDefinition() + { + $this->hasColumn('name', 'string', null, array('primary' => true)); + } + public function preSave() + { + $this->_messages[] = __FUNCTION__; + } + public function postSave() + { + $this->_messages[] = __FUNCTION__; + } + public function preInsert() + { + $this->_messages[] = __FUNCTION__; + } + public function postInsert() + { + $this->_messages[] = __FUNCTION__; + } + public function preUpdate() + { + $this->_messages[] = __FUNCTION__; + } + public function postUpdate() + { + $this->_messages[] = __FUNCTION__; + } + public function preDelete() + { + $this->_messages[] = __FUNCTION__; + } + public function postDelete() + { + $this->_messages[] = __FUNCTION__; + } + public function pop() + { + return array_pop($this->_messages); + } +} +