array(array(1, 'test_logic_hook', __FILE__, 'LogicHookTest', 'testLogicHook')), ); public function setUp() { LogicHookTest::$called = false; unset($GLOBALS['logic_hook']); $GLOBALS['logic_hook'] = LogicHook::initialize(); LogicHook::refreshHooks(); } public function tearDown() { foreach($this->renames as $file) { rename($file.".bak", $file); } foreach($this->deletes as $file) { unlink($file); } unset($GLOBALS['logic_hook']); LogicHook::refreshHooks(); } protected function saveHook($file) { if(file_exists($file)) { rename($file, $file.".bak"); $this->renames[] = $file; } else { $this->deletes[] = $file; } } public function getModules() { return array( array(''), array('Contacts'), array('Accounts'), ); } /** * @dataProvider getModules */ public function testHooksDirect($module) { $dir = rtrim("custom/modules/$module", "/"); $file = "$dir/logic_hooks.php"; $this->saveHook($file); if(!is_dir($dir)) { mkdir($dir, 0755, true); } write_array_to_file('hook_array', $this->hook, $file); $GLOBALS['logic_hook']->getHooks($module, true); // manually refresh $GLOBALS['logic_hook']->call_custom_logic($module, 'test_logic_hook'); $this->assertTrue(LogicHookTest::$called); } /** * @dataProvider getModules */ public function testHooksExtDirect($module) { if(empty($module)) { $dir = "custom/application/Ext/LogicHooks"; } else { $dir = "custom/modules/$module/Ext/LogicHooks"; } if(!is_dir($dir)) { mkdir($dir, 0755, true); } $file = "$dir/logichooks.ext.php"; $this->saveHook($file); write_array_to_file('hook_array', $this->hook, $file); $GLOBALS['logic_hook']->getHooks($module, true); // manually refresh $GLOBALS['logic_hook']->call_custom_logic($module, 'test_logic_hook'); $this->assertTrue(LogicHookTest::$called); } /** * @dataProvider getModules */ public function testHooksUtils($module) { $dir = rtrim("custom/modules/$module", "/"); $file = "$dir/logic_hooks.php"; if(!is_dir($dir)) { mkdir($dir, 0755, true); } $this->saveHook($file); check_logic_hook_file($module, 'test_logic_hook', $this->hook['test_logic_hook'][0]); $GLOBALS['logic_hook']->getHooks($module, true); // manually refresh $GLOBALS['logic_hook']->call_custom_logic($module, 'test_logic_hook'); $this->assertTrue(LogicHookTest::$called); } /** * @dataProvider getModules */ public function testGeHookArray($module) { $dir = rtrim("custom/modules/$module", "/"); $file = "$dir/logic_hooks.php"; if(!is_dir($dir)) { mkdir($dir, 0755, true); } $this->saveHook($file); check_logic_hook_file($module, 'test_logic_hook', $this->hook['test_logic_hook'][0]); $array = get_hook_array($module); $this->assertEquals($this->hook, $array); } } class LogicHookTest { public static $called = false; function testLogicHook() { self::$called = true; } }