]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/ModuleBuilder/parsers/relationships/Bug56425Test.php
Release 6.5.12
[Github/sugarcrm.git] / tests / modules / ModuleBuilder / parsers / relationships / Bug56425Test.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
5  * 
6  * This program is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  * 
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
16  * details.
17  * 
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  * 
23  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
25  * 
26  * The interactive user interfaces in modified source and object code versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  * 
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the "Powered by
32  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33  * technical reasons, the Appropriate Legal Notices must display the words
34  * "Powered by SugarCRM".
35  ********************************************************************************/
36
37
38 require_once('modules/ModuleBuilder/parsers/relationships/ActivitiesRelationship.php');
39
40 /**
41  * Bug #56425
42  * see duplicate modules name in Report's Related Modules box
43  *
44  * @author mgusev@sugarcrm.com
45  * @ticked 56425
46  * @ticket 42169
47  */
48 class Bug56425Test extends Sugar_PHPUnit_Framework_TestCase
49 {
50     /**
51      * Test asserts genereated labels for activities
52      *
53      * @param array $definition
54      * @param array $expected
55      * @dataProvider getDefinitions
56      * @group 56425
57      * @group 42169
58      * @return void
59      */
60     public function testBuildLabels($definition, $expected)
61     {
62         ActivitiesRelationship56425::reset($definition['lhs_module']);
63         $relationship = new ActivitiesRelationship56425($definition);
64         $labels = $relationship->buildLabels();
65         foreach ($labels as $label) {
66             $this->assertArrayHasKey($label['module'], $expected, 'Incorrect label was generated');
67             $this->assertEquals($expected[$label['module']], $label['display_label'], 'Labels are incorrect');
68             unset($expected[$label['module']]);
69         }
70         $this->assertEmpty($expected, 'Not all labels were generated');
71     }
72
73     /**
74      * Method returns definition for relationship & expected result
75      *
76      * @return array
77      */
78     public function getDefinitions()
79     {
80         return array(
81             array(
82                 array(
83                     'rhs_label' => 'Activities',
84                     'rhs_module' => 'Users',
85                     'lhs_module' => 'Contacts',
86                     'relationship_name' => 'users_contacts_relationship'
87                 ),
88                 array(
89                     'Contacts' => 'Activities:Users',
90                     'Users' => 'Activities:Contacts'
91                 )
92             ),
93             array(
94                 array(
95                     'rhs_label' => 'Activities 123',
96                     'rhs_module' => 'Users',
97                     'lhs_module' => 'Contacts',
98                     'relationship_name' => 'users_contacts_relationship'
99                 ),
100                 array(
101                     'Contacts' => 'Activities 123:Users',
102                     'Users' => 'Activities 123:Contacts'
103                 )
104             ),
105             array(
106                 array(
107                     'rhs_module' => 'Users',
108                     'lhs_module' => 'Contacts',
109                     'relationship_name' => 'users_contacts_relationship'
110                 ),
111                 array(
112                     'Contacts' => 'Users',
113                     'Users' => 'Contacts'
114                 )
115             ),
116             array(
117                 array(
118                     'lhs_module' => 'lhs_module',
119                     'lhs_label' => 'lhs_label',
120                     'rhs_module' => 'rhs_module',
121                     'rhs_label' => 'rhs_label',
122                 ),
123                 array(
124                     'lhs_module' => 'rhs_label:rhs_module',
125                     'rhs_module' => 'rhs_label:lhs_module'
126                 )
127             )
128         );
129     }
130 }
131
132 class ActivitiesRelationship56425 extends ActivitiesRelationship
133 {
134     static public function reset($module)
135     {
136         self::$labelsAdded = array(
137             $module => true
138         );
139
140     }
141 }