fix insertIfNotExist return value, update doc and corresponding test
This commit is contained in:
parent
f3c4a37a78
commit
00987feda1
2 changed files with 16 additions and 19 deletions
|
@ -702,7 +702,7 @@ class OC_DB {
|
|||
* @brief Insert a row if a matching row doesn't exists.
|
||||
* @param string $table. The table to insert into in the form '*PREFIX*tableName'
|
||||
* @param array $input. An array of fieldname/value pairs
|
||||
* @returns The return value from PDOStatementWrapper->execute()
|
||||
* @returns int number of updated rows
|
||||
*/
|
||||
public static function insertIfNotExist($table, $input) {
|
||||
self::connect();
|
||||
|
@ -736,7 +736,7 @@ class OC_DB {
|
|||
. implode('`,`', array_keys($input)) . '`) VALUES('
|
||||
. str_repeat('?,', count($input)-1).'? ' . ')';
|
||||
} else {
|
||||
return true;
|
||||
return 0; //no rows updated
|
||||
}
|
||||
} elseif( $type == 'pgsql' || $type == 'oci' || $type == 'mysql' || $type == 'mssql') {
|
||||
$query = 'INSERT INTO `' .$table . '` (`'
|
||||
|
@ -757,9 +757,6 @@ class OC_DB {
|
|||
} catch(PDOException $e) {
|
||||
OC_Template::printExceptionErrorPage( $e );
|
||||
}
|
||||
if ($result === 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
|
|||
$this->assertFalse((bool)$row); //PDO returns false, MDB2 returns null
|
||||
$query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`,`uri`) VALUES (?,?)');
|
||||
$result = $query->execute(array('fullname test', 'uri_1'));
|
||||
$this->assertEquals('1', $result);
|
||||
$this->assertEquals(1, $result);
|
||||
$query = OC_DB::prepare('SELECT `fullname`,`uri` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
|
||||
$result = $query->execute(array('uri_1'));
|
||||
$this->assertTrue((bool)$result);
|
||||
|
@ -57,7 +57,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
|
|||
public function testNOW() {
|
||||
$query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`,`uri`) VALUES (NOW(),?)');
|
||||
$result = $query->execute(array('uri_2'));
|
||||
$this->assertEquals('1', $result);
|
||||
$this->assertEquals(1, $result);
|
||||
$query = OC_DB::prepare('SELECT `fullname`,`uri` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
|
||||
$result = $query->execute(array('uri_2'));
|
||||
$this->assertTrue((bool)$result);
|
||||
|
@ -66,7 +66,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
|
|||
public function testUNIX_TIMESTAMP() {
|
||||
$query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`,`uri`) VALUES (UNIX_TIMESTAMP(),?)');
|
||||
$result = $query->execute(array('uri_3'));
|
||||
$this->assertEquals('1', $result);
|
||||
$this->assertEquals(1, $result);
|
||||
$query = OC_DB::prepare('SELECT `fullname`,`uri` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
|
||||
$result = $query->execute(array('uri_3'));
|
||||
$this->assertTrue((bool)$result);
|
||||
|
@ -74,11 +74,11 @@ class Test_DB extends PHPUnit_Framework_TestCase {
|
|||
|
||||
public function testinsertIfNotExist() {
|
||||
$categoryentries = array(
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'Family'),
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'Friends'),
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers'),
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers'),
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'School'),
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'Family', 'expectedResult' => 1),
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'Friends', 'expectedResult' => 1),
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers', 'expectedResult' => 1),
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers', 'expectedResult' => 0),
|
||||
array('user' => 'test', 'type' => 'contact', 'category' => 'School', 'expectedResult' => 1),
|
||||
);
|
||||
|
||||
foreach($categoryentries as $entry) {
|
||||
|
@ -88,13 +88,13 @@ class Test_DB extends PHPUnit_Framework_TestCase {
|
|||
'type' => $entry['type'],
|
||||
'category' => $entry['category'],
|
||||
));
|
||||
$this->assertTrue((bool)$result);
|
||||
$this->assertEquals($entry['expectedResult'], $result);
|
||||
}
|
||||
|
||||
$query = OC_DB::prepare('SELECT * FROM `*PREFIX*'.$this->table3.'`');
|
||||
$result = $query->execute();
|
||||
$this->assertTrue((bool)$result);
|
||||
$this->assertEquals('4', $result->numRows());
|
||||
$this->assertEquals(4, $result->numRows());
|
||||
}
|
||||
|
||||
public function testinsertIfNotExistDontOverwrite() {
|
||||
|
@ -105,14 +105,14 @@ class Test_DB extends PHPUnit_Framework_TestCase {
|
|||
// Normal test to have same known data inserted.
|
||||
$query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`, `uri`, `carddata`) VALUES (?, ?, ?)');
|
||||
$result = $query->execute(array($fullname, $uri, $carddata));
|
||||
$this->assertEquals('1', $result);
|
||||
$this->assertEquals(1, $result);
|
||||
$query = OC_DB::prepare('SELECT `fullname`, `uri`, `carddata` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
|
||||
$result = $query->execute(array($uri));
|
||||
$this->assertTrue((bool)$result);
|
||||
$row = $result->fetchRow();
|
||||
$this->assertArrayHasKey('carddata', $row);
|
||||
$this->assertEquals($carddata, $row['carddata']);
|
||||
$this->assertEquals('1', $result->numRows());
|
||||
$this->assertEquals(1, $result->numRows());
|
||||
|
||||
// Try to insert a new row
|
||||
$result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table2,
|
||||
|
@ -120,7 +120,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
|
|||
'fullname' => $fullname,
|
||||
'uri' => $uri,
|
||||
));
|
||||
$this->assertTrue((bool)$result);
|
||||
$this->assertEquals(0, $result);
|
||||
|
||||
$query = OC_DB::prepare('SELECT `fullname`, `uri`, `carddata` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
|
||||
$result = $query->execute(array($uri));
|
||||
|
@ -130,7 +130,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
|
|||
// Test that previously inserted data isn't overwritten
|
||||
$this->assertEquals($carddata, $row['carddata']);
|
||||
// And that a new row hasn't been inserted.
|
||||
$this->assertEquals('1', $result->numRows());
|
||||
$this->assertEquals(1, $result->numRows());
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue