_registry = new Zend_Tool_Framework_Registry(); $this->_registry->setActionRepository(new Zend_Tool_Framework_Action_Repository()); $this->_targetSignature = new Zend_Tool_Framework_Provider_Signature(new Zend_Tool_Framework_Provider_ProviderFullFeatured()); $this->_targetSignature->setRegistry($this->_registry); $this->_targetSignature->process(); } public function teardown() { $this->_registry->reset(); } public function testSignatureCanBeCreatedFromProvider() { $signature = new Zend_Tool_Framework_Provider_Signature(new Zend_Tool_Framework_Provider_ProviderOne()); $signature->setRegistry($this->_registry); $signature->process(); $signature->process(); $this->assertEquals('ProviderOne', $signature->getName()); } public function testSignatureCanBeCreatedFromProviderWhenOverridingName() { $signature = new Zend_Tool_Framework_Provider_Signature(new Zend_Tool_Framework_Provider_ProviderFullFeatured()); $signature->setRegistry($this->_registry); $signature->process(); $this->assertEquals('FooBarBaz', $signature->getName()); } public function testGetProviderReturnsProvider() { $signature = new Zend_Tool_Framework_Provider_Signature(new Zend_Tool_Framework_Provider_ProviderOne()); $signature->setRegistry($this->_registry); $signature->process(); $this->assertTrue($signature->getProvider() instanceof Zend_Tool_Framework_Provider_ProviderOne); } public function testGetProviderReflectionWillReturnZendReflectionClassObject() { $signature = new Zend_Tool_Framework_Provider_Signature(new Zend_Tool_Framework_Provider_ProviderOne()); $signature->setRegistry($this->_registry); $signature->process(); $this->assertTrue($signature->getProviderReflection() instanceof Zend_Reflection_Class); } public function testGetSpecialtiesReturnsParsedSpecialties() { $this->assertEquals(array('_Global', 'Hi', 'BloodyMurder', 'ForYourTeam'), $this->_targetSignature->getSpecialties()); } public function testGetSpecialtiesReturnsParsedSpecialtiesFromMethodInsteadOfProperty() { $signature = new Zend_Tool_Framework_Provider_Signature(new Zend_Tool_Framework_Provider_ProviderFullFeatured2()); $signature->setRegistry($this->_registry); $signature->process(); $this->assertEquals(array('_Global', 'Hi', 'BloodyMurder', 'ForYourTeam'), $signature->getSpecialties()); } /** * @expectedException Zend_Tool_Framework_Provider_Exception */ public function testGetSpecialtiesReturnsParsedSpecialtiesThrowsExceptionOnBadPropertyValue() { $signature = new Zend_Tool_Framework_Provider_Signature(new Zend_Tool_Framework_Provider_ProviderFullFeaturedBadSpecialties()); $signature->setRegistry($this->_registry); $signature->process(); } /** * @expectedException Zend_Tool_Framework_Provider_Exception */ public function testGetSpecialtiesReturnsParsedSpecialtiesThrowsExceptionOnBadReturnValue() { $signature = new Zend_Tool_Framework_Provider_Signature(new Zend_Tool_Framework_Provider_ProviderFullFeaturedBadSpecialties2()); $signature->setRegistry($this->_registry); $signature->process(); } public function testGetActionsWillReturnProperActions() { $actionArray = $this->_targetSignature->getActions(); $action = array_shift($actionArray); $this->assertTrue($action instanceof Zend_Tool_Framework_Action_Base); $this->assertEquals('Say', $action->getName()); $action = array_shift($actionArray); $this->assertTrue($action instanceof Zend_Tool_Framework_Action_Base); $this->assertEquals('Scream', $action->getName()); } public function testGetActionableMethodsReturnsAllActionableMethods() { $this->assertEquals(5, count($this->_targetSignature->getActionableMethods())); $actionableMethods = $this->_targetSignature->getActionableMethods(); $actionableMethod = array_shift($actionableMethods); $this->assertEquals('say', $actionableMethod['methodName']); $actionableMethod = array_shift($actionableMethods); $this->assertEquals('scream', $actionableMethod['methodName']); $actionableMethod = array_shift($actionableMethods); $this->assertEquals('sayHi', $actionableMethod['methodName']); $actionableMethod = array_shift($actionableMethods); $this->assertEquals('screamBloodyMurder', $actionableMethod['methodName']); $actionableMethod = array_shift($actionableMethods); $this->assertEquals('screamForYourTeam', $actionableMethod['methodName']); } public function testGetActionableMethodReturnsCorrectActionableMethod() { $actionableMethod = $this->_targetSignature->getActionableMethod('scream'); $this->assertEquals('Scream', $actionableMethod['actionName']); $this->assertFalse($this->_targetSignature->getActionableMethod('Foo')); } public function testGetActionableMethodByActionNameReturnsCorrectActionableMethod() { $actionableMethod = $this->_targetSignature->getActionableMethodByActionName('Scream'); $this->assertEquals('scream', $actionableMethod['methodName']); $this->assertFalse($this->_targetSignature->getActionableMethodByActionName('Foo')); } }