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');
13 class Bug40171Test extends Sugar_PHPUnit_Framework_TestCase
17 public function setUp()
19 global $moduleList, $beanList, $beanFiles;
20 require('include/modules.php');
21 $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
22 $this->bean = new Contact();
25 public function tearDown()
27 SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
28 unset($GLOBALS['current_user']);
30 foreach ($this->filename_check as $filename) {
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();
39 public function testSubpanelOverride()
45 'subpanel_name' => 'default',
46 'sort_order' => 'asc',
48 'title_key' => 'LBL_CONTACTS_CASES_1_FROM_CASES_TITLE',
49 'get_subpanel_data' => 'contacts_cases_1',
53 'widget_class' => 'SubPanelTopButtonQuickCreate',
56 'widget_class' => 'SubPanelTopSelectButton',
57 'mode' => 'MultiSelect',
61 $subpanel_list_fields_1['list_fields'] = array (
65 'vname' => 'LBL_PRIORITY',
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);
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;
83 'subpanel_name' => 'default',
84 'sort_order' => 'asc',
86 'title_key' => 'LBL_CONTACTS_CASES_2_FROM_CASES_TITLE',
87 'get_subpanel_data' => 'contacts_cases_2',
91 'widget_class' => 'SubPanelTopButtonQuickCreate',
94 'widget_class' => 'SubPanelTopSelectButton',
95 'mode' => 'MultiSelect',
99 $subpanel_list_fields_2 = array (
102 'vname' => 'LBL_LIST_NUMBER',
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);
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;
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)));
125 // laout_defs are reloaded in saveSubPanelDefOverride method, we lauched it
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']);