]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/Import/ImportFormsTest.php
Release 6.3.0
[Github/sugarcrm.git] / tests / modules / Import / ImportFormsTest.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 'modules/Import/Forms.php';
39 require_once 'include/Sugar_Smarty.php';
40 require_once 'modules/Import/controller.php';
41 require_once 'modules/Import/views/view.step3.php';
42 require_once 'modules/Import/views/view.step4.php';
43 require_once 'modules/Import/Importer.php';
44
45 class ImportFormsTest extends Sugar_PHPUnit_Framework_OutputTestCase
46 {
47     public function setUp()
48     {
49         $beanList = array();
50         require('include/modules.php');
51         $GLOBALS['beanList'] = $beanList;
52         $GLOBALS['beanFiles'] = $beanFiles;
53         $mod_strings = array();
54         require('modules/Import/language/en_us.lang.php');
55         $GLOBALS['mod_strings'] = $mod_strings;
56         $_SESSION['developerMode'] = true;
57         $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
58     }
59
60     public function tearDown()
61     {
62         SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
63         unset($GLOBALS['current_user']);
64         unset($_SESSION['developerMode']);
65         unset($GLOBALS['beanFiles']);
66         unset($GLOBALS['beanList']);
67         unset($GLOBALS['mod_strings']);
68     }
69
70     public function testLoadImportBean()
71     {
72         $oldisadmin = $GLOBALS['current_user']->is_admin;
73         $GLOBALS['current_user']->is_admin = '1';
74
75         $controller = new ImportController;
76         $_REQUEST['import_module'] = 'Accounts';
77         $controller->loadBean();
78
79         $this->assertEquals($controller->bean->object_name, 'Account');
80
81         $GLOBALS['current_user']->is_admin = $oldisadmin;
82     }
83
84     public function testLoadImportBeanNotImportable()
85     {
86         $controller = new ImportController;
87         $_REQUEST['import_module'] = 'vCals';
88         $controller->loadBean();
89         
90         $this->assertFalse($controller->bean);
91     }
92
93     public function testLoadImportBeanUserNotAdmin()
94     {
95         $controller = new ImportController;
96         $_REQUEST['import_module'] = 'Users';
97         $controller->loadBean();
98         
99         $this->assertFalse($controller->bean);
100     }
101
102     public function errorSet()
103     {
104          return array(
105             array(E_USER_WARNING,'sample E_USER_WARNING','test12.php',4),
106             array(E_WARNING,'sample E_WARNING','test4.php',2232),
107             array(E_USER_NOTICE,'sample E_USER_NOTICE','test8.php',932),
108             array(E_NOTICE,'sample E_NOTICE','12test.php',39),
109             array(E_STRICT,'sample E_STRICT','t12est.php',42),
110             array(12121212121,'sample unknown error','te43st.php',334),
111             );
112     }
113
114     /**
115      * @dataProvider errorSet
116      */
117     public function testHandleImportErrors($errno, $errstr, $errfile, $errline)
118     {
119         $old_error_reporting = error_reporting(E_ALL);
120
121         Importer::handleImportErrors($errno, $errstr, $errfile, $errline);
122
123         switch ($errno) {
124             case E_USER_WARNING:
125             case E_WARNING:
126                 //$this->assertEquals("WARNING: [$errno] $errstr on line $errline in file $errfile<br />",$output);
127                 break;
128             case E_USER_NOTICE:
129             case E_NOTICE:
130                 //$this->assertEquals("NOTICE: [$errno] $errstr on line $errline in file $errfile<br />",$output);
131                 break;
132             case E_STRICT:    
133                 //$this->assertEquals('',$output);
134                 break;
135             default:
136                 $this->expectOutputString("Unknown error type: [$errno] $errstr on line $errline in file $errfile<br />\n");
137                 break;
138             }
139         error_reporting($old_error_reporting);
140     }
141
142     public function testGetControlIdField()
143     {
144         $html = getControl('Contacts','assigned_user_id');
145
146         $this->assertRegExp('/name=\'assigned_user_id\'/',$html);
147         $this->assertRegExp('/id=\'assigned_user_id\'/',$html);
148         $this->assertRegExp('/type=\'text\'/',$html);
149     }
150
151     public function testGetControlEmail()
152     {
153         $html = getControl('Contacts','email1');
154
155         $this->assertRegExp('/name=\'email1\'/',$html);
156         $this->assertRegExp('/id=\'email1\'/',$html);
157         $this->assertRegExp('/type=\'text\'/',$html);
158     }
159
160     public function testGetControlCurrencyList()
161     {
162         global $app_strings;
163
164         $html = getControl('Opportunities','currency_id');
165
166         $focus = loadBean('Opportunities');
167
168         require_once('modules/Opportunities/Opportunity.php');
169
170         $string = str_ireplace('</select>','<option value="">'.$app_strings['LBL_NONE'].'</option></select>',getCurrencyDropDown($focus, 'currency_id', '', 'EditView'));
171         $this->assertContains($string,$html,"Failed to find string '$string' in '$html'");
172
173         $string = "<script>function CurrencyConvertAll() { return; }</script>";
174         $this->assertContains($string,$html,"Failed to find string '$string' in '$html'");
175     }
176
177     public function testGetControlVardef()
178     {
179         VardefManager::loadVardef(
180                 'Contacts',
181                 'Contact');
182         $vardef = $GLOBALS['dictionary']['Contact']['fields']['assigned_user_id'];
183
184         $html = getControl('Contacts','assigned_user_id',$vardef);
185
186         $this->assertRegExp('/name=\'assigned_user_id\'/',$html);
187         $this->assertRegExp('/id=\'assigned_user_id\'/',$html);
188         $this->assertRegExp('/type=\'text\'/',$html);
189     }
190
191     public function testGetControlValue()
192     {
193         $html = getControl('Contacts','email1',null,'poo');
194
195         $this->assertRegExp('/name=\'email1\'/',$html);
196         $this->assertRegExp('/id=\'email1\'/',$html);
197         $this->assertRegExp('/type=\'text\'/',$html);
198         $this->assertRegExp('/value=\'poo\'/',$html);
199     }
200
201     /**
202      * @group bug41447
203      */
204     public function testGetControlDatetimecombo()
205     {
206         $html = getControl('Calls','date_start');
207
208         global $timedate;
209         $string = '", "' . $timedate->get_user_time_format() . '", "';
210
211         $this->assertContains($string, $html);
212     }
213 }