X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Flibs%2Frdbms%2Fdatabase%2FDatabaseSQLTest.php;h=4a9603c8169e634044dca73ccf8c157a03919421;hb=c5a5b022400318e52638a4d34369ddbb74d7a21b;hp=0cb35b49c29e988ed1a46d540110e70dda6d9780;hpb=1828e901ab987157d78acedf52f607ebe21ddc6e;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 0cb35b49c2..4a9603c816 100644 --- a/tests/phpunit/includes/libs/rdbms/database/DatabaseSQLTest.php +++ b/tests/phpunit/includes/libs/rdbms/database/DatabaseSQLTest.php @@ -674,9 +674,9 @@ class DatabaseSQLTest extends PHPUnit\Framework\TestCase { "INSERT INTO insert_table " . "(field_insert,field) " . "SELECT field_select,field2 " . - "FROM select_table WHERE *", + "FROM select_table", "SELECT field_select AS field_insert,field2 AS field " . - "FROM select_table WHERE * FOR UPDATE", + "FROM select_table FOR UPDATE", "INSERT INTO insert_table (field_insert,field) VALUES ('0','1')" ], [ @@ -755,7 +755,7 @@ class DatabaseSQLTest extends PHPUnit\Framework\TestCase { __METHOD__ ); $this->assertLastSqlDb( implode( '; ', [ - 'SELECT field2 AS field FROM select_table WHERE * FOR UPDATE', + 'SELECT field2 AS field FROM select_table FOR UPDATE', 'BEGIN', "INSERT INTO insert_table (field) VALUES ('" . implode( "'),('", range( 0, 9999 ) ) . "')", "INSERT INTO insert_table (field) VALUES ('" . implode( "'),('", range( 10000, 19999 ) ) . "')", @@ -2057,11 +2057,22 @@ class DatabaseSQLTest extends PHPUnit\Framework\TestCase { $this->database->onTransactionCommitOrIdle( function () use ( $fname ) { $this->database->query( 'SELECT 1', $fname ); } ); + $this->database->onTransactionResolution( function () use ( $fname ) { + $this->database->query( 'SELECT 2', $fname ); + } ); $this->database->delete( 'x', [ 'field' => 3 ], __METHOD__ ); - $this->database->close(); + try { + $this->database->close(); + $this->fail( 'Expected exception not thrown' ); + } catch ( DBUnexpectedError $ex ) { + $this->assertSame( + "Wikimedia\Rdbms\Database::close: transaction is still open (from $fname).", + $ex->getMessage() + ); + } $this->assertFalse( $this->database->isOpen() ); - $this->assertLastSql( 'BEGIN; DELETE FROM x WHERE field = \'3\'; COMMIT; SELECT 1' ); + $this->assertLastSql( 'BEGIN; DELETE FROM x WHERE field = \'3\'; ROLLBACK; SELECT 2' ); $this->assertEquals( 0, $this->database->trxLevel() ); } @@ -2125,7 +2136,24 @@ class DatabaseSQLTest extends PHPUnit\Framework\TestCase { $this->database->clearFlag( IDatabase::DBO_TRX ); $this->assertFalse( $this->database->isOpen() ); - $this->assertLastSql( 'BEGIN; SELECT 1; COMMIT' ); + $this->assertLastSql( 'BEGIN; SELECT 1; ROLLBACK' ); $this->assertEquals( 0, $this->database->trxLevel() ); } + + /** + * @covers Wikimedia\Rdbms\Database::selectFieldValues() + */ + public function testSelectFieldValues() { + $this->database->forceNextResult( [ + (object)[ 'value' => 'row1' ], + (object)[ 'value' => 'row2' ], + (object)[ 'value' => 'row3' ], + ] ); + + $this->assertSame( + [ 'row1', 'row2', 'row3' ], + $this->database->selectFieldValues( 'table', 'table.field', 'conds', __METHOD__ ) + ); + $this->assertLastSql( 'SELECT table.field AS value FROM table WHERE conds' ); + } }