X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Flibs%2Frdbms%2Fdatabase%2FDatabaseSQLTest.php;h=7b8411729fc0c2b4c480ce3fcc9e3e2a7b0a1f6f;hb=7911744c3d66256fc4cd187723156e7ef36fc412;hp=57666bdc0c3fe9a2b4daa2e5f5930b9b74e8b6dc;hpb=06752ff1807eb3c58f8d63be48f824f0a99f3d69;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/libs/rdbms/database/DatabaseSQLTest.php b/tests/phpunit/includes/libs/rdbms/database/DatabaseSQLTest.php index 57666bdc0c..7b8411729f 100644 --- a/tests/phpunit/includes/libs/rdbms/database/DatabaseSQLTest.php +++ b/tests/phpunit/includes/libs/rdbms/database/DatabaseSQLTest.php @@ -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' );