]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/include/database/DBManagerFactoryTest.php
Release 6.4.0
[Github/sugarcrm.git] / tests / include / database / DBManagerFactoryTest.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/database/DBManagerFactory.php';
39
40 class DBManagerFactoryTest extends Sugar_PHPUnit_Framework_TestCase
41 {
42     private $_oldSugarConfig;
43
44     public function setUp()
45     {
46         $this->_oldSugarConfig = $GLOBALS['sugar_config'];
47     }
48
49     public function tearDown()
50     {
51         $GLOBALS['sugar_config'] = $this->_oldSugarConfig;
52     }
53
54     public function testGetInstance()
55     {
56         $db = DBManagerFactory::getInstance();
57
58         $this->assertTrue($db instanceOf DBManager,"Should return a DBManger object");
59     }
60
61     public function testGetInstanceCheckMysqlDriverChoosen()
62     {
63         if ( $GLOBALS['db']->dbType != 'mysql' )
64             $this->markTestSkipped('Only applies to MySql');
65
66         $db = DBManagerFactory::getInstance();
67
68         if ( function_exists('mysqli_connect') )
69             $this->assertTrue($db instanceOf MysqliManager,"Should return a MysqliManager object");
70         else
71             $this->assertTrue($db instanceOf MysqlManager,"Should return a MysqlManager object");
72     }
73
74     /**
75      * @ticket 27781
76      */
77     public function testGetInstanceMssqlDefaultSelection()
78     {
79         if ( $GLOBALS['db']->dbType != 'mssql' )
80             $this->markTestSkipped('Only applies to SQL Server');
81
82         $GLOBALS['sugar_config']['db_mssql_force_driver'] = '';
83
84         $db = DBManagerFactory::getInstance();
85
86         if ( function_exists('sqlsrv_connect') )
87             $this->assertTrue($db instanceOf SqlsrvManager,"Should return a SqlsrvManager object");
88         elseif ( DBManagerFactory::isFreeTDS() )
89             $this->assertTrue($db instanceOf FreeTDSManager,"Should return a FreeTDSManager object");
90         else
91             $this->assertTrue($db instanceOf MssqlManager,"Should return a MssqlManager object");
92     }
93
94     /**
95      * @ticket 27781
96      */
97     public function testGetInstanceMssqlForceFreetdsSelection()
98     {
99         if ( $GLOBALS['db']->dbType != 'mssql' || !DBManagerFactory::isFreeTDS() )
100             $this->markTestSkipped('Only applies to SQL Server FreeTDS');
101
102         $GLOBALS['sugar_config']['db_mssql_force_driver'] = 'freetds';
103
104         $db = DBManagerFactory::getInstance();
105
106         $this->assertTrue($db instanceOf FreeTDSManager,"Should return a FreeTDSManager object");
107     }
108
109     /**
110      * @ticket 27781
111      */
112     public function testGetInstanceMssqlForceMssqlSelection()
113     {
114         if ( $GLOBALS['db']->dbType != 'mssql' || !function_exists('mssql_connect') )
115             $this->markTestSkipped('Only applies to SQL Server with the Native PHP mssql Driver');
116
117         $GLOBALS['sugar_config']['db_mssql_force_driver'] = 'mssql';
118
119         $db = DBManagerFactory::getInstance();
120
121         if ( DBManagerFactory::isFreeTDS() )
122             $this->assertTrue($db instanceOf MssqlManager,"Should return a MssqlManager object");
123         elseif ( function_exists('mssql_connect') )
124         $this->assertTrue($db instanceOf MssqlManager,"Should return a MssqlManager object");
125         else
126             $this->assertTrue($db instanceOf SqlsrvManager,"Should return a SqlsrvManager object");
127     }
128
129     /**
130      * @ticket 27781
131      */
132     public function testGetInstanceMssqlForceSqlsrvSelection()
133     {
134         if ( $GLOBALS['db']->dbType != 'mssql' || !function_exists('sqlsrv_connect') )
135             $this->markTestSkipped('Only applies to SQL Server');
136
137         $GLOBALS['sugar_config']['db_mssql_force_driver'] = 'sqlsrv';
138
139         $db = DBManagerFactory::getInstance();
140
141         if ( DBManagerFactory::isFreeTDS() && !function_exists('sqlsrv_connect') )
142             $this->assertTrue($db instanceOf FreeTDSManager,"Should return a FreeTDSManager object");
143         elseif ( function_exists('mssql_connect') && !function_exists('sqlsrv_connect') )
144             $this->assertTrue($db instanceOf MssqlManager,"Should return a MssqlManager object");
145         else
146         $this->assertTrue($db instanceOf SqlsrvManager,"Should return a SqlsrvManager object");
147     }
148 }