2 /*********************************************************************************
3 * SugarCRM Community Edition is a customer relationship management program developed by
4 * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
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.
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
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
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.
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.
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 ********************************************************************************/
38 require_once 'include/database/DBManagerFactory.php';
39 require_once 'modules/Contacts/Contact.php';
41 class DBManagerTest extends Sugar_PHPUnit_Framework_TestCase
45 protected $backupGlobals = FALSE;
47 public function setUp()
49 $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
50 $this->_db = DBManagerFactory::getInstance();
51 $GLOBALS['app_strings'] = return_application_language($GLOBALS['current_language']);
54 public function tearDown()
56 SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
57 unset($GLOBALS['current_user']);
58 unset($GLOBALS['app_strings']);
61 private function _createRecords(
66 for ( $i = 0; $i < $num; $i++ ) {
67 $bean = new Contact();
68 $bean->id = "$i-test" . mt_rand();
69 $bean->last_name = "foobar";
70 $this->_db->insert($bean);
71 $beanIds[] = $bean->id;
77 private function _removeRecords(
82 $this->_db->query("DELETE From contacts where id = '{$id}'");
85 public function testGetTableName()
87 $this->_db->createTableParams('MyTableName',array('foo'=>'foo'),array());
89 $this->assertEquals($this->_db->getTableName(),'MyTableName');
92 public function testGetDatabase()
94 if ( $this->_db instanceOf MysqliManager )
95 $this->assertInstanceOf('Mysqli',$this->_db->getDatabase());
97 $this->assertTrue(is_resource($this->_db->getDatabase()));
100 public function testGetHelper()
102 $this->assertInstanceOf('DBHelper',$this->_db->getHelper());
105 public function testCheckError()
107 $this->assertFalse($this->_db->checkError());
110 public function testCheckErrorNoConnection()
112 $this->_db->disconnect();
113 $this->assertTrue($this->_db->checkError());
114 $this->_db = &DBManagerFactory::getInstance();
117 public function testGetQueryTime()
119 $this->_db->version();
120 $this->assertTrue($this->_db->getQueryTime() > 0);
123 public function testCheckConnection()
125 $this->_db->checkConnection();
126 if ( $this->_db instanceOf MysqliManager )
127 $this->assertInstanceOf('Mysqli',$this->_db->getDatabase());
129 $this->assertTrue(is_resource($this->_db->getDatabase()));
132 public function testInsert()
134 $bean = new Contact();
135 $bean->last_name = 'foobar' . mt_rand();
136 $bean->id = 'test' . mt_rand();
137 $this->_db->insert($bean);
139 $result = $this->_db->query("select id, last_name from contacts where id = '{$bean->id}'");
140 $row = $this->_db->fetchByAssoc($result);
141 $this->assertEquals($row['last_name'],$bean->last_name);
142 $this->assertEquals($row['id'],$bean->id);
144 $this->_db->query("delete from contacts where id = '{$row['id']}'");
147 public function testUpdate()
149 $bean = new Contact();
150 $bean->last_name = 'foobar' . mt_rand();
151 $bean->id = 'test' . mt_rand();
152 $this->_db->insert($bean);
155 $bean = new Contact();
156 $bean->last_name = 'newfoobar' . mt_rand();
157 $this->_db->update($bean,array('id'=>$id));
159 $result = $this->_db->query("select id, last_name from contacts where id = '{$id}'");
160 $row = $this->_db->fetchByAssoc($result);
161 $this->assertEquals($row['last_name'],$bean->last_name);
162 $this->assertEquals($row['id'],$id);
164 $this->_db->query("delete from contacts where id = '{$row['id']}'");
167 public function testDelete()
169 $bean = new Contact();
170 $bean->last_name = 'foobar' . mt_rand();
171 $bean->id = 'test' . mt_rand();
172 $this->_db->insert($bean);
175 $bean = new Contact();
176 $this->_db->delete($bean,array('id'=>$id));
178 $result = $this->_db->query("select deleted from contacts where id = '{$id}'");
179 $row = $this->_db->fetchByAssoc($result);
180 $this->assertEquals($row['deleted'],'1');
182 $this->_db->query("delete from contacts where id = '{$id}'");
185 public function testRetrieve()
187 $bean = new Contact();
188 $bean->last_name = 'foobar' . mt_rand();
189 $bean->id = 'test' . mt_rand();
190 $this->_db->insert($bean);
193 $bean = new Contact();
194 $result = $this->_db->retrieve($bean,array('id'=>$id));
195 $row = $this->_db->fetchByAssoc($result);
196 $this->assertEquals($row['id'],$id);
198 $this->_db->query("delete from contacts where id = '{$id}'");
201 public function testRetrieveView()
203 // TODO: Write this test
206 public function testCreateTable()
208 // TODO: Write this test
211 public function testCreateTableParams()
213 $tablename = 'test' . mt_rand();
214 $this->_db->createTableParams($tablename,
226 'fields' => array('foo'),
230 $this->assertTrue(in_array($tablename,$this->_db->getTablesArray()));
232 $this->_db->dropTableName($tablename);
235 public function testRepairTable()
237 // TODO: Write this test
240 public function testRepairTableParams()
242 // TODO: Write this test
245 public function testCompareFieldInTables()
247 $tablename1 = 'test1_' . mt_rand();
248 $this->_db->createTableParams($tablename1,
258 $tablename2 = 'test2_' . mt_rand();
259 $this->_db->createTableParams($tablename2,
270 $res = $this->_db->compareFieldInTables(
271 'foo', $tablename1, $tablename2);
273 $this->assertEquals($res['msg'],'match');
275 $this->_db->dropTableName($tablename1);
276 $this->_db->dropTableName($tablename2);
279 public function testCompareFieldInTablesNotInTable1()
281 $tablename1 = 'test3_' . mt_rand();
282 $this->_db->createTableParams($tablename1,
292 $tablename2 = 'test4_' . mt_rand();
293 $this->_db->createTableParams($tablename2,
304 $res = $this->_db->compareFieldInTables(
305 'foo', $tablename1, $tablename2);
306 $this->assertEquals($res['msg'],'not_exists_table1');
308 $this->_db->dropTableName($tablename1);
309 $this->_db->dropTableName($tablename2);
312 public function testCompareFieldInTablesNotInTable2()
314 $tablename1 = 'test5_' . mt_rand();
315 $this->_db->createTableParams($tablename1,
325 $tablename2 = 'test6_' . mt_rand();
326 $this->_db->createTableParams($tablename2,
337 $res = $this->_db->compareFieldInTables(
338 'foo', $tablename1, $tablename2);
340 $this->assertEquals($res['msg'],'not_exists_table2');
342 $this->_db->dropTableName($tablename1);
343 $this->_db->dropTableName($tablename2);
346 public function testCompareFieldInTablesFieldsDoNotMatch()
348 $tablename1 = 'test7_' . mt_rand();
349 $this->_db->createTableParams($tablename1,
359 $tablename2 = 'test8_' . mt_rand();
360 $this->_db->createTableParams($tablename2,
370 $res = $this->_db->compareFieldInTables(
371 'foo', $tablename1, $tablename2);
373 $this->assertEquals($res['msg'],'no_match');
375 $this->_db->dropTableName($tablename1);
376 $this->_db->dropTableName($tablename2);
379 public function testCompareIndexInTables()
381 $tablename1 = 'test9_' . mt_rand();
382 $this->_db->createTableParams($tablename1,
394 'fields' => array('foo'),
398 $tablename2 = 'test10_' . mt_rand();
399 $this->_db->createTableParams($tablename2,
411 'fields' => array('foo'),
416 $res = $this->_db->compareIndexInTables(
417 'idx_foo', $tablename1, $tablename2);
419 $this->assertEquals($res['msg'],'match');
421 $this->_db->dropTableName($tablename1);
422 $this->_db->dropTableName($tablename2);
425 public function testCompareIndexInTablesNotInTable1()
427 $tablename1 = 'test11_' . mt_rand();
428 $this->_db->createTableParams($tablename1,
438 'name' => 'idx_foobar',
440 'fields' => array('foo'),
444 $tablename2 = 'test12_' . mt_rand();
445 $this->_db->createTableParams($tablename2,
457 'fields' => array('foo'),
462 $res = $this->_db->compareIndexInTables(
463 'idx_foo', $tablename1, $tablename2);
465 $this->assertEquals($res['msg'],'not_exists_table1');
467 $this->_db->dropTableName($tablename1);
468 $this->_db->dropTableName($tablename2);
471 public function testCompareIndexInTablesNotInTable2()
473 $tablename1 = 'test13_' . mt_rand();
474 $this->_db->createTableParams($tablename1,
486 'fields' => array('foo'),
490 $tablename2 = 'test14_' . mt_rand();
491 $this->_db->createTableParams($tablename2,
501 'name' => 'idx_foobar',
503 'fields' => array('foo'),
508 $res = $this->_db->compareIndexInTables(
509 'idx_foo', $tablename1, $tablename2);
511 $this->assertEquals($res['msg'],'not_exists_table2');
513 $this->_db->dropTableName($tablename1);
514 $this->_db->dropTableName($tablename2);
517 public function testCompareIndexInTablesIndexesDoNotMatch()
519 $tablename1 = 'test15_' . mt_rand();
520 $this->_db->createTableParams($tablename1,
532 'fields' => array('foo'),
536 $tablename2 = 'test16_' . mt_rand();
537 $this->_db->createTableParams($tablename2,
549 'fields' => array('foobar'),
554 $res = $this->_db->compareIndexInTables(
555 'idx_foo', $tablename1, $tablename2);
557 $this->assertEquals($res['msg'],'no_match');
559 $this->_db->dropTableName($tablename1);
560 $this->_db->dropTableName($tablename2);
563 public function testCreateIndex()
565 // TODO: Write this test
568 public function testAddIndexes()
570 $tablename1 = 'test17_' . mt_rand();
571 $this->_db->createTableParams($tablename1,
583 'fields' => array('foo'),
587 $tablename2 = 'test18_' . mt_rand();
588 $this->_db->createTableParams($tablename2,
599 // first test not executing the statement
600 $this->_db->addIndexes(
605 'fields' => array('foo'),
609 $res = $this->_db->compareIndexInTables(
610 'idx_foo', $tablename1, $tablename2);
612 $this->assertEquals($res['msg'],'not_exists_table2');
614 // now, execute the statement
615 $this->_db->addIndexes(
620 'fields' => array('foo'),
623 $res = $this->_db->compareIndexInTables(
624 'idx_foo', $tablename1, $tablename2);
626 $this->assertEquals($res['msg'],'match');
628 $this->_db->dropTableName($tablename1);
629 $this->_db->dropTableName($tablename2);
632 public function testDropIndexes()
634 $tablename1 = 'test19_' . mt_rand();
635 $this->_db->createTableParams($tablename1,
647 'fields' => array('foo'),
651 $tablename2 = 'test20_' . mt_rand();
652 $this->_db->createTableParams($tablename2,
664 'fields' => array('foo'),
669 $res = $this->_db->compareIndexInTables(
670 'idx_foo', $tablename1, $tablename2);
672 $this->assertEquals($res['msg'],'match');
674 // first test not executing the statement
675 $this->_db->dropIndexes(
680 'fields' => array('foo'),
684 $res = $this->_db->compareIndexInTables(
685 'idx_foo', $tablename1, $tablename2);
687 $this->assertEquals($res['msg'],'match');
689 // now, execute the statement
690 $sql = $this->_db->dropIndexes(
695 'fields' => array('foo'),
700 $res = $this->_db->compareIndexInTables(
701 'idx_foo', $tablename1, $tablename2);
703 $this->assertEquals($res['msg'],'not_exists_table2');
705 $this->_db->dropTableName($tablename1);
706 $this->_db->dropTableName($tablename2);
709 public function testModifyIndexes()
711 $tablename1 = 'test21_' . mt_rand();
712 $this->_db->createTableParams($tablename1,
729 'fields' => array('foo'),
733 $tablename2 = 'test22_' . mt_rand();
734 $this->_db->createTableParams($tablename2,
751 'fields' => array('foobar'),
756 $res = $this->_db->compareIndexInTables(
757 'idx_foo', $tablename1, $tablename2);
759 $this->assertEquals($res['msg'],'no_match');
761 $this->_db->modifyIndexes(
766 'fields' => array('foo'),
770 $res = $this->_db->compareIndexInTables(
771 'idx_foo', $tablename1, $tablename2);
773 $this->assertEquals($res['msg'],'no_match');
775 $this->_db->modifyIndexes(
780 'fields' => array('foo'),
784 $res = $this->_db->compareIndexInTables(
785 'idx_foo', $tablename1, $tablename2);
787 $this->assertEquals($res['msg'],'match');
789 $this->_db->dropTableName($tablename1);
790 $this->_db->dropTableName($tablename2);
793 public function testAddColumn()
795 $tablename1 = 'test23_' . mt_rand();
796 $this->_db->createTableParams($tablename1,
811 $tablename2 = 'test24_' . mt_rand();
812 $this->_db->createTableParams($tablename2,
823 $res = $this->_db->compareFieldInTables(
824 'foobar', $tablename1, $tablename2);
826 $this->assertEquals($res['msg'],'not_exists_table2');
828 $this->_db->addColumn(
839 $res = $this->_db->compareFieldInTables(
840 'foobar', $tablename1, $tablename2);
842 $this->assertEquals($res['msg'],'match');
844 $this->_db->dropTableName($tablename1);
845 $this->_db->dropTableName($tablename2);
848 public function testAlterColumn()
850 $tablename1 = 'test25_' . mt_rand();
851 $this->_db->createTableParams($tablename1,
867 $tablename2 = 'test26_' . mt_rand();
868 $this->_db->createTableParams($tablename2,
883 $res = $this->_db->compareFieldInTables(
884 'foobar', $tablename1, $tablename2);
886 $this->assertEquals($res['msg'],'no_match');
888 $this->_db->alterColumn(
900 $res = $this->_db->compareFieldInTables(
901 'foobar', $tablename1, $tablename2);
903 $this->assertEquals($res['msg'],'match');
905 $this->_db->dropTableName($tablename1);
906 $this->_db->dropTableName($tablename2);
909 public function testDropTable()
911 // TODO: Write this test
914 public function testDropTableName()
916 $tablename = 'test' . mt_rand();
917 $this->_db->createTableParams($tablename,
927 $this->assertTrue(in_array($tablename,$this->_db->getTablesArray()));
929 $this->_db->dropTableName($tablename);
931 $this->assertFalse(in_array($tablename,$this->_db->getTablesArray()));
934 public function testDeleteColumn()
936 // TODO: Write this test
939 public function testDisconnectAll()
941 $this->_db->disconnectAll();
942 $this->assertTrue($this->_db->checkError());
943 $this->_db = &DBManagerFactory::getInstance();
946 public function testQuote()
948 $string = "'dog eat ";
950 if ( $this->_db->dbType == 'mysql')
951 $this->assertEquals($this->_db->quoteForEmail($string),"\'dog eat ");
953 $this->assertEquals($this->_db->quoteForEmail($string),"''dog eat ");
956 public function testQuoteForEmail()
958 $string = "'dog eat ";
960 if ( $this->_db->dbType == 'mysql')
961 $this->assertEquals($this->_db->quoteForEmail($string),"\'dog eat ");
963 $this->assertEquals($this->_db->quoteForEmail($string),"''dog eat ");
966 public function testArrayQuote()
968 $string = array("'dog eat ");
969 $this->_db->arrayQuote($string);
970 if ( $this->_db->dbType == 'mysql')
971 $this->assertEquals($string,array("\'dog eat "));
973 $this->assertEquals($string,array("''dog eat "));
976 public function testQuery()
978 $beanIds = $this->_createRecords(5);
980 $result = $this->_db->query("SELECT id From contacts where last_name = 'foobar'");
981 if ( $this->_db instanceOf MysqliManager )
982 $this->assertInstanceOf('Mysqli_result',$result);
984 $this->assertTrue(is_resource($result));
986 while ( $row = $this->_db->fetchByAssoc($result) )
987 $this->assertTrue(in_array($row['id'],$beanIds),"Id not found '{$row['id']}'");
989 $this->_removeRecords($beanIds);
992 public function disabledLimitQuery()
994 $beanIds = $this->_createRecords(5);
995 $_REQUEST['module'] = 'contacts';
996 $result = $this->_db->limitQuery("SELECT id From contacts where last_name = 'foobar'",1,3);
997 if ( $this->_db instanceOf MysqliManager )
998 $this->assertInstanceOf('Mysqli_result',$result);
1000 $this->assertTrue(is_resource($result));
1002 while ( $row = $this->_db->fetchByAssoc($result) ) {
1003 if ( $row['id'][0] > 3 || $row['id'][0] < 0 )
1004 $this->assertFalse(in_array($row['id'],$beanIds),"Found {$row['id']} in error");
1006 $this->assertTrue(in_array($row['id'],$beanIds),"Didn't find {$row['id']}");
1008 unset($_REQUEST['module']);
1009 $this->_removeRecords($beanIds);
1012 public function testGetOne()
1014 $beanIds = $this->_createRecords(1);
1016 $id = $this->_db->getOne("SELECT id From contacts where last_name = 'foobar'");
1017 $this->assertEquals($id,$beanIds[0]);
1020 if($this->_db instanceof MysqlManager) {
1021 $id = $this->_db->getOne("SELECT id From contacts where last_name = 'foobar' LIMIT 0,1");
1022 $this->assertEquals($id,$beanIds[0]);
1025 $this->_removeRecords($beanIds);
1028 public function testGetFieldsArray()
1030 $beanIds = $this->_createRecords(1);
1032 $result = $this->_db->query("SELECT id From contacts where id = '{$beanIds[0]}'");
1033 $fields = $this->_db->getFieldsArray($result,true);
1035 $this->assertEquals(array("id"),$fields);
1037 $this->_removeRecords($beanIds);
1040 public function testGetRowCount()
1042 $beanIds = $this->_createRecords(1);
1044 $result = $this->_db->query("SELECT id From contacts where id = '{$beanIds[0]}'");
1046 $this->assertEquals($this->_db->getRowCount($result),1);
1048 $this->_removeRecords($beanIds);
1051 public function testGetAffectedRowCount()
1053 if ( ($this->_db instanceOf MysqliManager) )
1054 $this->markTestSkipped('Skipping on Mysqli; doesn\'t apply to this backend');
1056 $beanIds = $this->_createRecords(1);
1057 $result = $this->_db->query("DELETE From contacts where id = '{$beanIds[0]}'");
1058 $this->assertEquals($this->_db->getAffectedRowCount(),1);
1061 public function testFetchByAssoc()
1063 $beanIds = $this->_createRecords(1);
1065 $result = $this->_db->query("SELECT id From contacts where id = '{$beanIds[0]}'");
1067 $row = $this->_db->fetchByAssoc($result);
1069 $this->assertTrue(is_array($row));
1070 $this->assertEquals($row['id'],$beanIds[0]);
1072 $this->_removeRecords($beanIds);
1075 public function testConnect()
1077 // TODO: Write this test
1080 public function testDisconnect()
1082 $this->_db->disconnect();
1083 $this->assertTrue($this->_db->checkError());
1084 $this->_db = &DBManagerFactory::getInstance();
1087 public function testGetTablesArray()
1089 $tablename = 'test' . mt_rand();
1090 $this->_db->createTableParams($tablename,
1094 'type' => 'varchar',
1101 $this->assertTrue($this->_db->tableExists($tablename));
1103 $this->_db->dropTableName($tablename);
1106 public function testVersion()
1108 $ver = $this->_db->version();
1110 $this->assertTrue(is_string($ver));
1113 public function testTableExists()
1115 $tablename = 'test' . mt_rand();
1116 $this->_db->createTableParams($tablename,
1120 'type' => 'varchar',
1127 $this->assertTrue(in_array($tablename,$this->_db->getTablesArray()));
1129 $this->_db->dropTableName($tablename);
1132 public function providerCompareVardefs()
1134 $returnArray = array(
1138 'type' => 'varchar',
1143 'type' => 'varchar',
1155 'type' => 'varchar',
1177 'type' => 'varchar',
1184 'type' => 'varchar',
1189 'type' => 'varchar',
1195 return $returnArray;
1199 * @dataProvider providerCompareVarDefs
1201 public function testCompareVarDefs($fieldDef1,$fieldDef2,$expectedResult)
1203 if ( $expectedResult ) {
1204 $this->assertTrue($this->_db->compareVarDefs($fieldDef1,$fieldDef2));
1207 $this->assertFalse($this->_db->compareVarDefs($fieldDef1,$fieldDef2));
1211 public function providerConvert()
1213 $db = DBManagerFactory::getInstance();
1215 $returnArray = array(
1217 array('foo','nothing'),
1221 if ( $db instanceOf MysqlManager )
1222 $returnArray += array(
1224 array('foo','today'),
1228 array('foo','left'),
1232 array('foo','left',array('1','2','3')),
1236 array('foo','date_format'),
1240 array('foo','date_format',array('1','2','3')),
1241 'DATE_FORMAT(foo,1,2,3)'
1244 array('foo','datetime',array("'%Y-%m'")),
1245 'DATE_FORMAT(foo, \'%Y-%m-%d %H:%i:%s\')'
1248 array('foo','IFNULL'),
1252 array('foo','IFNULL',array('1','2','3')),
1256 array('foo','CONCAT',array('1','2','3')),
1260 array('foo','text2char'),
1264 if ( $db instanceOf MssqlManager )
1265 $returnArray += array(
1267 array('foo','today'),
1271 array('foo','left'),
1275 array('foo','left',array('1','2','3')),
1279 array('foo','date_format'),
1280 'CONVERT(varchar(10),foo,120)'
1283 array('foo','date_format',array('1','2','3')),
1284 'CONVERT(varchar(10),foo,120)'
1287 array('foo','date_format',array("'%Y-%m'")),
1288 'CONVERT(varchar(7),foo,120)'
1291 array('foo','IFNULL'),
1295 array('foo','IFNULL',array('1','2','3')),
1299 array('foo','CONCAT',array('1','2','3')),
1303 array('foo','text2char'),
1304 'CAST(foo AS varchar(8000))'
1307 if ( $db instanceOf SqlsrvManager )
1308 $returnArray += array(
1310 array('foo','datetime'),
1311 'CONVERT(varchar(20),foo,120)'
1315 return $returnArray;
1320 * @dataProvider providerConvert
1322 public function testConvert(
1327 if ( count($parameters) < 3 )
1328 $this->assertEquals(
1329 $this->_db->convert($parameters[0],$parameters[1]),
1331 elseif ( count($parameters) < 4 )
1332 $this->assertEquals(
1333 $this->_db->convert($parameters[0],$parameters[1],$parameters[2]),
1336 $this->assertEquals(
1337 $this->_db->convert($parameters[0],$parameters[1],$parameters[2],$parameters[3]),
1344 public function testConcat()
1346 $ret = $this->_db->concat('foo',array('col1','col2','col3'));
1348 if ( $this->_db instanceOf MysqlManager )
1349 $this->assertEquals($ret,
1350 "TRIM(CONCAT(IFNULL(foo.col1,''),' ',IFNULL(foo.col2,''),' ',IFNULL(foo.col3,'')))"
1352 if ( $this->_db instanceOf MssqlManager )
1353 $this->assertEquals($ret,
1354 "LTRIM(RTRIM(ISNULL(foo.col1,'') + ' ' + ISNULL(foo.col2,'') + ' ' + ISNULL(foo.col3,'')))"
1356 if ( $this->_db instanceOf OracleManager )
1357 $this->assertEquals($ret,
1358 "TRIM(CONCAT(CONCAT(CONCAT(NVL(foo.col1,''),' '), CONCAT(NVL(foo.col2,''),' ')), CONCAT(NVL(foo.col3,''),' ')))"
1362 public function providerFromConvert()
1364 $returnArray = array(
1366 array('foo','nothing'),
1370 if ( $this->_db instanceOf MssqlManager
1371 || $this->_db instanceOf OracleManager )
1372 $returnArray += array(
1374 array('2009-01-01 12:00:00','date'),
1378 array('2009-01-01 12:00:00','time'),
1383 return $returnArray;
1388 * @dataProvider providerFromConvert
1390 public function testFromConvert(
1395 $this->assertEquals(
1396 $this->_db->fromConvert($parameters[0],$parameters[1]),
1403 public function testMssqlNotClearingErrorResults()
1405 if ( get_class($this->_db) != 'MssqlManager' )
1406 $this->markTestSkipped('Skipping; only applies with php_mssql driver');
1408 // execute a bad query
1409 $this->_db->query("select dsdsdsdsdsdsdsdsdsd");
1410 // assert it found an error
1411 $this->assertTrue($this->_db->checkError());
1412 // now, execute a good query
1413 $this->_db->query("select * from config");
1414 // and make no error messages are asserted
1415 $this->assertFalse($this->_db->checkError());