Merge "Adjust print styles for thumb"
[lhc/web/wiklou.git] / tests / phpunit / includes / libs / rdbms / database / DatabaseSQLTest.php
index 57666bd..7b84117 100644 (file)
@@ -22,13 +22,20 @@ 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::useIndexClause
+        * @covers Wikimedia\Rdbms\Database::ignoreIndexClause
+        * @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 +61,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 +153,56 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
                                        "FROM table " .
                                        "WHERE alias IN ('1','2','3','4')"
                        ],
+                       [
+                               [
+                                       'tables' => 'table',
+                                       'fields' => [ 'field' ],
+                                       'options' => [ 'USE INDEX' => [ 'table' => 'X' ] ],
+                               ],
+                               // No-op by default
+                               "SELECT field FROM table"
+                       ],
+                       [
+                               [
+                                       'tables' => 'table',
+                                       'fields' => [ 'field' ],
+                                       'options' => [ 'IGNORE INDEX' => [ 'table' => 'X' ] ],
+                               ],
+                               // No-op by default
+                               "SELECT field FROM table"
+                       ],
+                       [
+                               [
+                                       '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 +371,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 +425,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 +743,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 +992,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 +1002,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 +1108,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' );