Correcting type of DatabaseSqlite::insertId()
authorChristian Aistleitner <christian@quelltextlich.at>
Fri, 6 Apr 2012 18:54:24 +0000 (20:54 +0200)
committerChristian Aistleitner <christian@quelltextlich.at>
Fri, 6 Apr 2012 19:02:27 +0000 (21:02 +0200)
Change-Id: I37ebe291cf8c4fd66a1ee236fcfa063016efbc8d

includes/db/DatabaseSqlite.php
tests/phpunit/includes/db/DatabaseSqliteTest.php

index 3aa21b8..dc086b4 100644 (file)
@@ -342,7 +342,8 @@ class DatabaseSqlite extends DatabaseBase {
         * @return int
         */
        function insertId() {
-               return $this->mConn->lastInsertId();
+               // PDO::lastInsertId yields a string :(
+               return intval( $this->mConn->lastInsertId() );
        }
 
        /**
index 067c731..d226598 100644 (file)
@@ -250,6 +250,16 @@ class DatabaseSqliteTest extends MediaWikiTestCase {
                }
        }
 
+       public function testInsertIdType() {
+               $db = new DatabaseSqliteStandalone( ':memory:' );
+               $this->assertInstanceOf( 'ResultWrapper',
+                       $db->query( 'CREATE TABLE a ( a_1 )', __METHOD__ ), "Database creationg" );
+               $this->assertTrue( $db->insert( 'a', array( 'a_1' => 10 ), __METHOD__ ),
+                       "Insertion worked" );
+               $this->assertEquals( "integer", gettype( $db->insertId() ), "Actual typecheck" );
+               $this->assertTrue( $db->close(), "closing database" );
+       }
+
        private function prepareDB( $version ) {
                static $maint = null;
                if ( $maint === null ) {