rdbms: Complete coverage for Database::selectSQLText()
authorTimo Tijhof <krinklemail@gmail.com>
Fri, 28 Jul 2017 04:19:53 +0000 (21:19 -0700)
committerTimo Tijhof <krinklemail@gmail.com>
Fri, 28 Jul 2017 04:30:07 +0000 (21:30 -0700)
Only missing cases where 'USE INDEX' and 'IGNORE INDEX'.
The test doesn't do much since the underlying methods are no-ops
by default, but at least it ensures there are no PHP errors from
these branches.

We can later re-use some of these test cases in tests specific
to one backend.

Change-Id: Id004a2ae41efaa7a367f964013e25d98ecc591ff

tests/phpunit/includes/libs/rdbms/database/DatabaseSQLTest.php

index f519772..7b84117 100644 (file)
@@ -31,6 +31,8 @@ class DatabaseSQLTest extends PHPUnit_Framework_TestCase {
         * @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
@@ -151,6 +153,24 @@ 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',