]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/include/MVC/View/SugarViewTest.php
Release 6.2.0
[Github/sugarcrm.git] / tests / include / MVC / View / SugarViewTest.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2011 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 'include/MVC/View/SugarView.php';
39
40 class SugarViewTest extends Sugar_PHPUnit_Framework_TestCase
41 {
42     public function setUp()
43     {
44         $this->_view = new SugarViewTestMock();
45         $GLOBALS['app_strings'] = return_application_language($GLOBALS['current_language']);
46         $GLOBALS['mod_strings'] = return_module_language($GLOBALS['current_language'], 'Users');
47     }
48     
49     public function tearDown()
50     {
51         unset($GLOBALS['mod_strings']);
52         unset($GLOBALS['app_strings']);
53     }
54     
55     public function testGetModuleTab()
56     {
57         $_REQUEST['module_tab'] = 'ADMIN';
58         $moduleTab = $this->_view->getModuleTab();
59         $this->assertEquals('ADMIN', $moduleTab, 'Module Tab names are not equal from request');
60     }
61
62     public function testGetMetaDataFile()
63     {
64         $this->_view->module = 'Contacts';
65         $this->_view->type = 'list';
66         $metaDataFile = $this->_view->getMetaDataFile();
67         $this->assertEquals('modules/Contacts/metadata/listviewdefs.php', $metaDataFile, 'Did not load the correct metadata file');
68
69         //test custom file
70         sugar_mkdir('custom/modules/Contacts/metadata/', null, true);
71         $customFile = 'custom/modules/Contacts/metadata/listviewdefs.php';
72         if(!file_exists($customFile))
73         {
74             sugar_file_put_contents($customFile, array());
75             $customMetaDataFile = $this->_view->getMetaDataFile();
76             $this->assertEquals($customFile, $customMetaDataFile, 'Did not load the correct custom metadata file');
77             unlink($customFile);
78         }
79     }
80     
81     public function testInit()
82     {
83         $bean = new SugarBean;
84         $view_object_map = array('foo'=>'bar');
85         $GLOBALS['action'] = 'barbar';
86         $GLOBALS['module'] = 'foofoo';
87         
88         $this->_view->init($bean,$view_object_map);
89         
90         $this->assertInstanceOf('SugarBean',$this->_view->bean);
91         $this->assertEquals($view_object_map,$this->_view->view_object_map);
92         $this->assertEquals($GLOBALS['action'],$this->_view->action);
93         $this->assertEquals($GLOBALS['module'],$this->_view->module);
94         $this->assertInstanceOf('Sugar_Smarty',$this->_view->ss);
95     }
96     
97     public function testInitNoParameters()
98     {
99         $GLOBALS['action'] = 'barbar';
100         $GLOBALS['module'] = 'foofoo';
101         
102         $this->_view->init();
103         
104         $this->assertNull($this->_view->bean);
105         $this->assertEquals(array(),$this->_view->view_object_map);
106         $this->assertEquals($GLOBALS['action'],$this->_view->action);
107         $this->assertEquals($GLOBALS['module'],$this->_view->module);
108         $this->assertInstanceOf('Sugar_Smarty',$this->_view->ss);
109     }
110     
111     public function testInitSmarty()
112     {
113         $this->_view->initSmarty();
114         
115         $this->assertInstanceOf('Sugar_Smarty',$this->_view->ss);
116         $this->assertEquals($this->_view->ss->get_template_vars('MOD'),$GLOBALS['mod_strings']);
117         $this->assertEquals($this->_view->ss->get_template_vars('APP'),$GLOBALS['app_strings']);
118     }
119     
120     /**
121      * @outputBuffering enabled
122      */
123     public function testDisplayErrors()
124     {
125         $this->_view->errors = array('error1','error2');
126         $this->_view->suppressDisplayErrors = true;
127         
128         $this->assertEquals(
129             '<span class="error">error1</span><br><span class="error">error2</span><br>',
130             $this->_view->displayErrors()
131             );
132     }
133     
134     /**
135      * @outputBuffering enabled
136      */
137     public function testDisplayErrorsDoNotSupressOutput()
138     {
139         $this->_view->errors = array('error1','error2');
140         $this->_view->suppressDisplayErrors = false;
141         
142         $this->assertEmpty($this->_view->displayErrors());
143     }
144     
145     public function testGetBrowserTitle()
146     {
147         $viewMock = $this->getMock('SugarViewTestMock',array('_getModuleTitleParams'));
148         $viewMock->expects($this->any())
149                  ->method('_getModuleTitleParams')
150                  ->will($this->returnValue(array('foo','bar')));
151         
152         $this->assertEquals(
153             "bar &raquo; foo &raquo; {$GLOBALS['app_strings']['LBL_BROWSER_TITLE']}",
154             $viewMock->getBrowserTitle()
155             );
156     }
157     
158     public function testGetBrowserTitleUserLogin()
159     {
160         $this->_view->module = 'Users';
161         $this->_view->action = 'Login';
162         
163         $this->assertEquals(
164             "{$GLOBALS['app_strings']['LBL_BROWSER_TITLE']}",
165             $this->_view->getBrowserTitle()
166             );
167     }
168     
169     public function testGetBreadCrumbSymbolForLTRTheme()
170     {
171         $theme = SugarTestThemeUtilities::createAnonymousTheme();
172         SugarThemeRegistry::set($theme);
173         
174         $this->assertEquals(
175             "<span class='pointer'>&raquo;</span>",
176             $this->_view->getBreadCrumbSymbol()
177             );
178     }
179     
180     public function testGetBreadCrumbSymbolForRTLTheme()
181     {
182         $theme = SugarTestThemeUtilities::createAnonymousRTLTheme();
183         SugarThemeRegistry::set($theme);
184         
185         $this->assertEquals(
186             "<span class='pointer'>&laquo;</span>",
187             $this->_view->getBreadCrumbSymbol()
188             );
189     }
190 }
191
192 class SugarViewTestMock extends SugarView
193 {
194     public function getModuleTab()
195     {
196         return parent::_getModuleTab();
197     }
198     
199     public function initSmarty()
200     {
201         return parent::_initSmarty();
202     }
203 }