Merge pull request #3982 from owncloud/test_lastinsertid

test lastinsertid
This commit is contained in:
Morris Jobke 2013-07-31 00:03:29 -07:00
commit 50101a85a6
2 changed files with 17 additions and 3 deletions

View File

@ -344,7 +344,7 @@ class OC_DB {
$result = self::executeAudited('SELECT lastval() AS id');
$row = $result->fetchRow();
self::raiseExceptionOnError($row, 'fetching row for insertid failed');
return $row['id'];
return (int)$row['id'];
} else if( $type === 'mssql') {
if($table !== null) {
$prefix = OC_Config::getValue( "dbtableprefix", "oc_" );
@ -368,7 +368,7 @@ class OC_DB {
$result = self::$connection->lastInsertId($table);
}
self::raiseExceptionOnError($result, 'insertid failed');
return $result;
return (int)$result;
}
/**

View File

@ -71,7 +71,21 @@ class Test_DB extends PHPUnit_Framework_TestCase {
$result = $query->execute(array('uri_3'));
$this->assertTrue((bool)$result);
}
public function testLastInsertId() {
$query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`,`uri`) VALUES (?,?)');
$result1 = OC_DB::executeAudited($query, array('insertid 1','uri_1'));
$id1 = OC_DB::insertid('*PREFIX*'.$this->table2);
$this->assertInternalType('int', $id1);
// we don't know the id we should expect, so insert another row
$result2 = OC_DB::executeAudited($query, array('insertid 2','uri_2'));
$id2 = OC_DB::insertid('*PREFIX*'.$this->table2);
// now we can check if the two ids are in correct order
$this->assertInternalType('int', $id2);
$this->assertGreaterThan($id1, $id2);
}
public function testinsertIfNotExist() {
$categoryentries = array(
array('user' => 'test', 'type' => 'contact', 'category' => 'Family', 'expectedResult' => 1),