3 /*********************************************************************************
4 * SugarCRM Community Edition is a customer relationship management program developed by
5 * SugarCRM, Inc. Copyright (C) 2004-2011 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 ********************************************************************************/
41 require_once "modules/ProjectTask/ProjectTask.php";
42 require_once "modules/Project/Project.php";
45 * Created: Sep 21, 2011
47 class Bug46350Test extends Sugar_PHPUnit_Framework_TestCase
50 public $projectTasks = array ();
53 * Different values, nevermind, 0-100
55 public $oldPercentValue = 34;
56 public $newPercentValue = 33;
57 public $defaultStaticSecondPercent = 56;
64 public function setUp()
66 $this->_user = SugarTestUserUtilities::createAnonymousUser();
67 $GLOBALS['current_user'] = $this->_user;
68 $this->project = SugarTestProjectUtilities::createProject();
69 $projectId = $this->project->id;
70 $projectTasksData = array (
71 'parentTask' => array (
72 'project_id' => $projectId,
73 'parent_task_id' => '',
74 'project_task_id' => 1,
75 'percent_complete' => $this->countAverage(array ($this->oldPercentValue, $this->defaultStaticSecondPercent)),
78 'firstChildTask' => array (
79 'project_id' => $projectId,
80 'parent_task_id' => 1,
81 'project_task_id' => 2,
82 'percent_complete' => $this->oldPercentValue,
85 'secondChildTask' => array (
86 'project_id' => $projectId,
87 'parent_task_id' => 1,
88 'project_task_id' => 3,
89 'percent_complete' => $this->defaultStaticSecondPercent,
93 foreach ($projectTasksData as $key => $value)
95 $this->projectTasks[$key] = SugarTestProjectTaskUtilities::createProjectTask($value);
99 public function tearDown()
101 SugarTestProjectUtilities::removeAllCreatedProjects();
102 SugarTestProjectTaskUtilities::removeAllCreatedProjectTasks();
103 SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
104 unset($this->project);
105 unset($this->projectTasks);
107 unset($GLOBALS['current_user']);
110 public function countAverage($values)
113 foreach ($values as $key => $value)
117 return (round($count / count($values)));
120 public function testResourceName()
122 $processingTask = $this->projectTasks['firstChildTask'];
123 $processingTask->percent_complete = $this->newPercentValue;
124 $processingTask->save();
129 $processingTask->updateParentProjectTaskPercentage();
131 $testparentTask = new ProjectTask();
132 $testparentTask->retrieve($this->projectTasks['parentTask']->id);
134 $average = $this->countAverage(array ($this->newPercentValue, $this->projectTasks['secondChildTask']->percent_complete));
135 $this->assertEquals($average, $testparentTask->percent_complete);