Merge "New parameters 'reverse' and 'sortbyvalue' for Special:PagesWithProp"
[lhc/web/wiklou.git] / tests / phpunit / includes / libs / rdbms / database / DatabaseSQLTest.php
index 57666bd..f519772 100644 (file)
@@ -22,13 +22,18 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
                );
        }
 
-       protected function assertLastSqlDb( $sqlText, $db ) {
+       protected function assertLastSqlDb( $sqlText, DatabaseTestHelper $db ) {
                $this->assertEquals( $sqlText, $db->getLastSqls() );
        }
 
        /**
         * @dataProvider provideSelect
         * @covers Wikimedia\Rdbms\Database::select
+        * @covers Wikimedia\Rdbms\Database::selectSQLText
+        * @covers Wikimedia\Rdbms\Database::tableNamesWithIndexClauseOrJOIN
+        * @covers Wikimedia\Rdbms\Database::makeSelectOptions
+        * @covers Wikimedia\Rdbms\Database::makeOrderBy
+        * @covers Wikimedia\Rdbms\Database::makeGroupByWithHaving
         */
        public function testSelect( $sql, $sqlText ) {
                $this->database->select(
@@ -54,6 +59,23 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
                                        "FROM table " .
                                        "WHERE alias = 'text'"
                        ],
+                       [
+                               [
+                                       // 'tables' with space prepended indicates pre-escaped table name
+                                       'tables' => ' table LEFT JOIN table2',
+                                       'fields' => [ 'field' ],
+                                       'conds' => [ 'field' => 'text' ],
+                               ],
+                               "SELECT field FROM  table LEFT JOIN table2 WHERE field = 'text'"
+                       ],
+                       [
+                               [
+                                       // Empty 'tables' is allowed
+                                       'tables' => '',
+                                       'fields' => [ 'SPECIAL_QUERY()' ],
+                               ],
+                               "SELECT SPECIAL_QUERY()"
+                       ],
                        [
                                [
                                        'tables' => 'table',
@@ -129,12 +151,38 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
                                        "FROM table " .
                                        "WHERE alias IN ('1','2','3','4')"
                        ],
+                       [
+                               [
+                                       'tables' => 'table',
+                                       'fields' => [ 'field' ],
+                                       'options' => [ 'DISTINCT', 'LOCK IN SHARE MODE' ],
+                               ],
+                               "SELECT DISTINCT field FROM table      LOCK IN SHARE MODE"
+                       ],
+                       [
+                               [
+                                       'tables' => 'table',
+                                       'fields' => [ 'field' ],
+                                       'options' => [ 'EXPLAIN' => true ],
+                               ],
+                               'EXPLAIN SELECT field FROM table'
+                       ],
+                       [
+                               [
+                                       'tables' => 'table',
+                                       'fields' => [ 'field' ],
+                                       'options' => [ 'FOR UPDATE' ],
+                               ],
+                               "SELECT field FROM table      FOR UPDATE"
+                       ],
                ];
        }
 
        /**
         * @dataProvider provideUpdate
         * @covers Wikimedia\Rdbms\Database::update
+        * @covers Wikimedia\Rdbms\Database::makeUpdateOptions
+        * @covers Wikimedia\Rdbms\Database::makeUpdateOptionsArray
         */
        public function testUpdate( $sql, $sqlText ) {
                $this->database->update(
@@ -303,6 +351,7 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
        /**
         * @dataProvider provideInsert
         * @covers Wikimedia\Rdbms\Database::insert
+        * @covers Wikimedia\Rdbms\Database::makeInsertOptions
         */
        public function testInsert( $sql, $sqlText ) {
                $this->database->insert(
@@ -356,6 +405,7 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
        /**
         * @dataProvider provideInsertSelect
         * @covers Wikimedia\Rdbms\Database::insertSelect
+        * @covers Wikimedia\Rdbms\Database::nativeInsertSelect
         */
        public function testInsertSelect( $sql, $sqlTextNative, $sqlSelect, $sqlInsert ) {
                $this->database->insertSelect(
@@ -673,6 +723,7 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
        /**
         * @dataProvider provideBuildLike
         * @covers Wikimedia\Rdbms\Database::buildLike
+        * @covers Wikimedia\Rdbms\Database::escapeLikeInternal
         */
        public function testBuildLike( $array, $sqlText ) {
                $this->assertEquals( trim( $this->database->buildLike(
@@ -921,6 +972,7 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
 
        /**
         * @covers Wikimedia\Rdbms\Database::commit
+        * @covers Wikimedia\Rdbms\Database::doCommit
         */
        public function testTransactionCommit() {
                $this->database->begin( __METHOD__ );
@@ -930,6 +982,7 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
 
        /**
         * @covers Wikimedia\Rdbms\Database::rollback
+        * @covers Wikimedia\Rdbms\Database::doRollback
         */
        public function testTransactionRollback() {
                $this->database->begin( __METHOD__ );
@@ -1035,6 +1088,9 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
                ];
        }
 
+       /**
+        * @covers Wikimedia\Rdbms\Database::registerTempTableOperation
+        */
        public function testSessionTempTables() {
                $temp1 = $this->database->tableName( 'tmp_table_1' );
                $temp2 = $this->database->tableName( 'tmp_table_2' );