From 37cf55470f6abbb9b88847ac6e03bcef1009c801 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Sun, 28 Feb 2010 01:49:19 -0500 Subject: [PATCH] Adding tests for Component::triggerCallback(). Deprecating other Component methods, as they are just wrappers for triggerCallback(). --- cake/libs/controller/component.php | 3 +++ .../cases/libs/controller/component.test.php | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/cake/libs/controller/component.php b/cake/libs/controller/component.php index f640d543259..e72fb308682 100644 --- a/cake/libs/controller/component.php +++ b/cake/libs/controller/component.php @@ -107,6 +107,7 @@ function initialize(&$controller) { * @return void * @access public * @link http://book.cakephp.org/view/65/MVC-Class-Access-Within-Components + * @deprecated See Component::triggerCallback() */ function startup(&$controller) { $this->triggerCallback('startup', $controller); @@ -119,6 +120,7 @@ function startup(&$controller) { * @param object $controller Controller with components to beforeRender * @return void * @access public + * @deprecated See Component::triggerCallback() */ function beforeRender(&$controller) { $this->triggerCallback('beforeRender', $controller); @@ -154,6 +156,7 @@ function beforeRedirect(&$controller, $url, $status = null, $exit = true) { * @param object $controller Controller with components to shutdown * @return void * @access public + * @deprecated See Component::triggerCallback() */ function shutdown(&$controller) { $this->triggerCallback('shutdown', $controller); diff --git a/cake/tests/cases/libs/controller/component.test.php b/cake/tests/cases/libs/controller/component.test.php index ee564064740..749f400eab6 100644 --- a/cake/tests/cases/libs/controller/component.test.php +++ b/cake/tests/cases/libs/controller/component.test.php @@ -290,6 +290,8 @@ class SomethingWithEmailComponent extends Object { var $components = array('Email'); } +Mock::generate('Object', 'ComponentMockComponent', array('startup', 'beforeFilter', 'beforeRender', 'other')); + /** * ComponentTest class * @@ -416,6 +418,24 @@ function testComponentStartup() { $this->assertFalse(isset($Controller->bar)); } +/** + * test that triggerCallbacks fires methods on all the components, and can trigger any method. + * + * @return void + */ + function testTriggerCallback() { + $Controller =& new ComponentTestController(); + $Controller->components = array('ComponentMock'); + $Controller->constructClasses(); + + $Controller->ComponentMock->expectOnce('beforeRender'); + $Controller->Component->triggerCallback('beforeRender', $Controller); + + $Controller->ComponentMock->expectNever('beforeFilter'); + $Controller->ComponentMock->enabled = false; + $Controller->Component->triggerCallback('beforeFilter', $Controller); + } + /** * test a component being used more than once. *