]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/include/SubPanel/Bug40171Test.php
Added unit tests.
[Github/sugarcrm.git] / tests / include / SubPanel / Bug40171Test.php
1 <?php
2
3 require_once('data/SugarBean.php');
4 require_once('modules/Contacts/Contact.php');
5 require_once('include/SubPanel/SubPanel.php');
6 require_once('include/SubPanel/SubPanel.php');
7 require_once('include/SubPanel/SubPanelDefinitions.php');
8
9 /**
10  * @ticket 41853
11  * @ticket 40171
12  */
13 class Bug40171Test extends Sugar_PHPUnit_Framework_TestCase 
14 {       
15     protected $bean;
16
17         public function setUp()
18         {
19             global $moduleList, $beanList, $beanFiles;
20         require('include/modules.php');
21             $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
22         $this->bean = new Contact();
23         }
24
25         public function tearDown()
26         {
27                 SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
28         unset($GLOBALS['current_user']);
29
30         foreach ($this->filename_check as $filename) {
31             @unlink($filename);
32         }
33                 require_once('ModuleInstall/ModuleInstaller.php');
34                 $moduleInstaller = new ModuleInstaller();
35                 $moduleInstaller->silent = true; // make sure that the ModuleInstaller->log() function doesn't echo while rebuilding the layoutdefs
36                 $moduleInstaller->rebuild_layoutdefs();
37         }
38
39     public function testSubpanelOverride()
40     {
41         // Create Subpanel 1
42         $subpanel_1 = array(
43             'order' => 100,
44             'module' => 'Cases',
45             'subpanel_name' => 'default',
46             'sort_order' => 'asc',
47             'sort_by' => 'id',
48             'title_key' => 'LBL_CONTACTS_CASES_1_FROM_CASES_TITLE',
49             'get_subpanel_data' => 'contacts_cases_1',
50             'top_buttons' => 
51             array (
52                 0 => array (
53                       'widget_class' => 'SubPanelTopButtonQuickCreate',
54                 ),
55                 1 => array (
56                     'widget_class' => 'SubPanelTopSelectButton',
57                     'mode' => 'MultiSelect',
58                 ),
59             ),
60         );
61         $subpanel_list_fields_1['list_fields'] = array (
62             'priority' => 
63             array (
64                 'type' => 'enum',
65                 'vname' => 'LBL_PRIORITY',
66                 'sortable' => false,
67                 'width' => '10%',
68                 'default' => true,
69             ),
70         );
71         $subpanel_def_1 = new aSubPanel("contacts_cases_1", $subpanel_1, $this->bean);
72         $subpanel_1 = new SubPanel('Contacts', 'fab4', $subpanel_def_1->_instance_properties['subpanel_name'], $subpanel_def_1);
73         $subpanel_1->saveSubPanelDefOverride($subpanel_def_1, 'list_fields', $subpanel_list_fields_1);
74
75                 $path_1     = 'custom/modules/'. $subpanel_def_1->_instance_properties['module'] . '/metadata/subpanels';
76                 $filename_1 = $subpanel_def_1->parent_bean->object_name . "_subpanel_" . $subpanel_def_1->name;
77                 $extname_1  = '_override'.$subpanel_def_1->parent_bean->object_name . "_subpanel_" . $subpanel_def_1->name;
78         
79         // Create SubPane 2
80         $subpanel_2 = array(
81             'order' => 100,
82             'module' => 'Cases',
83             'subpanel_name' => 'default',
84             'sort_order' => 'asc',
85             'sort_by' => 'id',
86             'title_key' => 'LBL_CONTACTS_CASES_2_FROM_CASES_TITLE',
87             'get_subpanel_data' => 'contacts_cases_2',
88             'top_buttons' => 
89             array (
90                 0 => array (
91                       'widget_class' => 'SubPanelTopButtonQuickCreate',
92                 ),
93                 1 => array (
94                     'widget_class' => 'SubPanelTopSelectButton',
95                     'mode' => 'MultiSelect',
96                 ),
97             ),
98         );
99         $subpanel_list_fields_2 = array (
100             'case_number' => 
101             array (
102                 'vname' => 'LBL_LIST_NUMBER',
103                 'width' => '6%',
104                 'default' => true,
105             ),
106         );
107         $subpanel_def_2 = new aSubPanel("contacts_cases_2", $subpanel_2, $this->bean);
108         $subpanel_2 = new SubPanel('Contacts', 'fab4', $subpanel_def_2->_instance_properties['subpanel_name'], $subpanel_def_2);
109         $subpanel_2->saveSubPanelDefOverride($subpanel_def_2, 'list_fields', $subpanel_list_fields_2);
110
111                 $path_2     = 'custom/modules/'. $subpanel_def_2->_instance_properties['module'] . '/metadata/subpanels';
112                 $filename_2 = $subpanel_def_1->parent_bean->object_name . "_subpanel_" . $subpanel_def_2->name;
113                 $extname_2  = '_override'.$subpanel_def_1->parent_bean->object_name . "_subpanel_" . $subpanel_def_2->name;
114                 
115         // Check files genertaed by subpanel overriding : layout override and subpanel overire
116         $this->filename_check[] = 'custom/Extension/modules/'. $subpanel_def_1->parent_bean->module_dir . "/Ext/Layoutdefs/$extname_1.php";
117         $this->assertTrue(file_exists(end($this->filename_check)));
118         $this->filename_check[] = $path_1.'/' . $filename_1 .'.php';
119         $this->assertTrue(file_exists(end($this->filename_check)));
120         $this->filename_check[] = 'custom/Extension/modules/'. $subpanel_def_2->parent_bean->module_dir . "/Ext/Layoutdefs/$extname_2.php";
121         $this->assertTrue(file_exists(end($this->filename_check)));
122         $this->filename_check[] = $path_2.'/' . $filename_2 .'.php';
123         $this->assertTrue(file_exists(end($this->filename_check)));
124
125         // laout_defs are reloaded in saveSubPanelDefOverride method, we lauched it
126         global $layout_defs;
127
128         // Check override_subpanel_name are differents
129         $this->assertTrue(isset($layout_defs['Contacts']['subpanel_setup']['contacts_cases_1']['override_subpanel_name']));
130         $this->assertTrue(isset($layout_defs['Contacts']['subpanel_setup']['contacts_cases_2']['override_subpanel_name']));
131         $this->assertNotEquals($layout_defs['Contacts']['subpanel_setup']['contacts_cases_1']['override_subpanel_name'], $layout_defs['Contacts']['subpanel_setup']['contacts_cases_2']['override_subpanel_name']);
132
133     }
134
135
136 }