3 /*********************************************************************************
4 * SugarCRM Community Edition is a customer relationship management program developed by
5 * SugarCRM, Inc. Copyright (C) 2004-2012 SugarCRM Inc.
7 * This program is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU Affero General Public License version 3 as published by the
9 * Free Software Foundation with the addition of the following permission added
10 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
12 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
14 * This program is distributed in the hope that it will be useful, but WITHOUT
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
19 * You should have received a copy of the GNU Affero General Public License along with
20 * this program; if not, see http://www.gnu.org/licenses or write to the Free
21 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
24 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
25 * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
27 * The interactive user interfaces in modified source and object code versions
28 * of this program must display Appropriate Legal Notices, as required under
29 * Section 5 of the GNU Affero General Public License version 3.
31 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32 * these Appropriate Legal Notices must retain the display of the "Powered by
33 * SugarCRM" logo. If the display of the logo is not reasonably feasible for
34 * technical reasons, the Appropriate Legal Notices must display the words
35 * "Powered by SugarCRM".
36 ********************************************************************************/
39 class Bug52133Test extends Sugar_PHPUnit_Framework_TestCase
44 public static function setUpBeforeClass()
46 $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
49 public static function tearDownAfterClass()
51 SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
52 unset($GLOBALS['current_user']);
55 public function setUp()
57 $this->bean = new Account();
58 Bug52113TestHook::$count = 0;
59 LogicHook::refreshHooks();
62 public function tearDown()
64 if(!empty($this->hook)) {
65 call_user_func_array('remove_logic_hook', $this->hook);
72 public function testCallLogicHookLoop()
74 $this->hook = array('Accounts', 'test_event', Array(1, 'Test hook', __FILE__, 'Bug52113TestHook', 'count'));
75 call_user_func_array('check_logic_hook_file', $this->hook);
76 for($i=0;$i<50;$i++) {
77 $this->bean->call_custom_logic("test_event");
79 $this->assertEquals(50, Bug52113TestHook::$count);
85 public function testCallLogicHookRecursive()
87 $this->hook = array('Accounts', 'test_event', Array(1, 'Test hook', __FILE__, 'Bug52113TestHook', 'recurse'));
88 call_user_func_array('check_logic_hook_file', $this->hook);
89 for($i=0;$i<20;$i++) {
90 $this->bean->call_custom_logic("test_event");
92 $this->assertEquals(220, Bug52113TestHook::$count);
96 class Bug52113TestHook
98 static public $count = 0;
99 public function count()
104 public function recurse($bean, $event)
107 $bean->call_custom_logic($event);