diff --git a/tests/EventListenerTestChainCase.php b/tests/EventListenerTestChainCase.php new file mode 100644 index 000000000..4119d8e98 --- /dev/null +++ b/tests/EventListenerTestChainCase.php @@ -0,0 +1,73 @@ +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'; + } +} + +class Doctrine_EventListenerChainTestCase extends Doctrine_UnitTestCase { + public function testEvents() { + $connection = $this->manager->openConnection(Doctrine_DB::getConn("sqlite::memory:")); + $debug = $this->listener->getMessages(); + $last = end($debug); + $this->assertTrue($last->getObject() instanceof Doctrine_Connection); + $this->assertTrue($last->getCode() == Doctrine_EventListener_Debugger::EVENT_OPEN); + } + public function testAccessorInvokerChain() { + $e = new EventListenerTest; + $e->name = "something"; + + + $this->assertEqual($e->get('name'), 'SOMETHING'); + // test repeated calls + $this->assertEqual($e->get('name'), 'SOMETHING'); + $this->assertEqual($e->id, null); + $this->assertEqual($e->rawGet('name'), 'something'); + + $e->save(); + + $this->assertEqual($e->id, 1); + $this->assertEqual($e->name, 'SOMETHING'); + $this->assertEqual($e->rawGet('name'), 'something'); + + $this->connection->clear(); + + $e->refresh(); + + $this->assertEqual($e->id, 1); + $this->assertEqual($e->name, 'SOMETHING'); + $this->assertEqual($e->rawGet('name'), 'something'); + + $this->connection->clear(); + + $e = $e->getTable()->find($e->id); + + $this->assertEqual($e->id, 1); + $this->assertEqual($e->name, 'SOMETHING'); + $this->assertEqual($e->rawGet('name'), 'something'); + } + public function prepareData() { } + public function prepareTables() { + $this->tables = array('EventListenerChainTest'); + parent::prepareTables(); + } +} +?>