]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/ProjectTask/Bug46350Test.php
Release 6.3.1
[Github/sugarcrm.git] / tests / modules / ProjectTask / Bug46350Test.php
1 <?php
2
3 /*********************************************************************************
4  * SugarCRM Community Edition is a customer relationship management program developed by
5  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
6  * 
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.
13  * 
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
17  * details.
18  * 
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
22  * 02110-1301 USA.
23  * 
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.
26  * 
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.
30  * 
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  ********************************************************************************/
37
38
39
40
41 require_once "modules/ProjectTask/ProjectTask.php";
42 require_once "modules/Project/Project.php";
43
44 /**
45  * Created: Sep 21, 2011
46  */
47 class Bug46350Test extends Sugar_PHPUnit_Framework_TestCase
48 {
49         public $project;
50         public $projectTasks = array ();
51
52         /**
53          * Different values, nevermind, 0-100
54          */
55         public $oldPercentValue = 34;
56         public $newPercentValue = 33;
57         public $defaultStaticSecondPercent = 56;
58         /**
59          *
60          */
61
62     private $_user;
63
64         public function setUp()
65         {
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)),
76                                 'name' => 'Task 1',
77                         ),
78                         'firstChildTask' => array (
79                                 'project_id' => $projectId,
80                                 'parent_task_id' => 1,
81                                 'project_task_id' => 2,
82                                 'percent_complete' => $this->oldPercentValue,
83                                 'name' => 'Task 2',
84                         ),
85                         'secondChildTask' => array (
86                                 'project_id' => $projectId,
87                                 'parent_task_id' => 1,
88                                 'project_task_id' => 3,
89                                 'percent_complete' => $this->defaultStaticSecondPercent,
90                                 'name' => 'Task 3',
91                         ),
92                 );
93                 foreach ($projectTasksData as $key => $value)
94                 {
95                         $this->projectTasks[$key] = SugarTestProjectTaskUtilities::createProjectTask($value);
96                 }
97         }
98
99         public function tearDown()
100         {
101                 SugarTestProjectUtilities::removeAllCreatedProjects();
102                 SugarTestProjectTaskUtilities::removeAllCreatedProjectTasks();
103         SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
104                 unset($this->project);
105                 unset($this->projectTasks);
106         unset($this->_user);
107                 unset($GLOBALS['current_user']);
108         }
109
110         public function countAverage($values)
111         {
112                 $count = 0;
113                 foreach ($values as $key => $value)
114                 {
115                         $count += $value;
116                 }
117                 return (round($count / count($values)));
118         }
119
120         public function testResourceName()
121         {
122                 $processingTask = $this->projectTasks['firstChildTask'];
123                 $processingTask->percent_complete = $this->newPercentValue;
124                 $processingTask->save();
125
126                 /**
127                  * New method testing
128                  */
129                 $processingTask->updateParentProjectTaskPercentage();
130
131                 $testparentTask = new ProjectTask();
132                 $testparentTask->retrieve($this->projectTasks['parentTask']->id);
133
134                 $average = $this->countAverage(array ($this->newPercentValue, $this->projectTasks['secondChildTask']->percent_complete));
135                 $this->assertEquals($average, $testparentTask->percent_complete);
136         }
137 }