X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Flibs%2Frdbms%2Fdatabase%2FDatabaseTest.php;h=93b1bf82baaddccee741b37ed8dc162b7905283a;hb=f6207905dc68b4a890450d11e6833a9979051a2b;hp=8b24791ca6003ba35828c631d86abd777780b9b2;hpb=c7c908e68fb85b2a00b1dda2d7d26f80d82c55d9;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php b/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php index 8b24791ca6..93b1bf82ba 100644 --- a/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php +++ b/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php @@ -9,7 +9,6 @@ use Wikimedia\Rdbms\TransactionProfiler; use Wikimedia\TestingAccessWrapper; use Wikimedia\Rdbms\DatabaseSqlite; use Wikimedia\Rdbms\DatabasePostgres; -use Wikimedia\Rdbms\DatabaseMssql; use Wikimedia\Rdbms\DBUnexpectedError; class DatabaseTest extends PHPUnit\Framework\TestCase { @@ -37,7 +36,6 @@ class DatabaseTest extends PHPUnit\Framework\TestCase { $this->assertInstanceOf( DatabasePostgres::class, Database::factory( 'Postgres', $p, $m ) ); $x = $p + [ 'port' => 10000, 'UseWindowsAuth' => false ]; - $this->assertInstanceOf( DatabaseMssql::class, Database::factory( 'mssql', $x, $m ) ); $x = $p + [ 'dbFilePath' => 'some/file.sqlite' ]; $this->assertInstanceOf( DatabaseSqlite::class, Database::factory( 'sqlite', $x, $m ) ); @@ -568,62 +566,74 @@ class DatabaseTest extends PHPUnit\Framework\TestCase { public function testFlagSetting() { $db = $this->db; $origTrx = $db->getFlag( DBO_TRX ); - $origSsl = $db->getFlag( DBO_SSL ); + $origNoBuffer = $db->getFlag( DBO_NOBUFFER ); $origTrx ? $db->clearFlag( DBO_TRX, $db::REMEMBER_PRIOR ) : $db->setFlag( DBO_TRX, $db::REMEMBER_PRIOR ); $this->assertEquals( !$origTrx, $db->getFlag( DBO_TRX ) ); - $origSsl - ? $db->clearFlag( DBO_SSL, $db::REMEMBER_PRIOR ) - : $db->setFlag( DBO_SSL, $db::REMEMBER_PRIOR ); - $this->assertEquals( !$origSsl, $db->getFlag( DBO_SSL ) ); + $origNoBuffer + ? $db->clearFlag( DBO_NOBUFFER, $db::REMEMBER_PRIOR ) + : $db->setFlag( DBO_NOBUFFER, $db::REMEMBER_PRIOR ); + $this->assertEquals( !$origNoBuffer, $db->getFlag( DBO_NOBUFFER ) ); $db->restoreFlags( $db::RESTORE_INITIAL ); $this->assertEquals( $origTrx, $db->getFlag( DBO_TRX ) ); - $this->assertEquals( $origSsl, $db->getFlag( DBO_SSL ) ); + $this->assertEquals( $origNoBuffer, $db->getFlag( DBO_NOBUFFER ) ); $origTrx ? $db->clearFlag( DBO_TRX, $db::REMEMBER_PRIOR ) : $db->setFlag( DBO_TRX, $db::REMEMBER_PRIOR ); - $origSsl - ? $db->clearFlag( DBO_SSL, $db::REMEMBER_PRIOR ) - : $db->setFlag( DBO_SSL, $db::REMEMBER_PRIOR ); + $origNoBuffer + ? $db->clearFlag( DBO_NOBUFFER, $db::REMEMBER_PRIOR ) + : $db->setFlag( DBO_NOBUFFER, $db::REMEMBER_PRIOR ); $db->restoreFlags(); - $this->assertEquals( $origSsl, $db->getFlag( DBO_SSL ) ); + $this->assertEquals( $origNoBuffer, $db->getFlag( DBO_NOBUFFER ) ); $this->assertEquals( !$origTrx, $db->getFlag( DBO_TRX ) ); $db->restoreFlags(); - $this->assertEquals( $origSsl, $db->getFlag( DBO_SSL ) ); + $this->assertEquals( $origNoBuffer, $db->getFlag( DBO_NOBUFFER ) ); $this->assertEquals( $origTrx, $db->getFlag( DBO_TRX ) ); } + public function provideImmutableDBOFlags() { + return [ + [ Database::DBO_IGNORE ], + [ Database::DBO_DEFAULT ], + [ Database::DBO_PERSISTENT ] + ]; + } + /** - * @expectedException UnexpectedValueException + * @expectedException DBUnexpectedError * @covers Wikimedia\Rdbms\Database::setFlag + * @dataProvider provideImmutableDBOFlags + * @param int $flag */ - public function testDBOIgnoreSet() { + public function testDBOCannotSet( $flag ) { $db = $this->getMockBuilder( DatabaseMysqli::class ) ->disableOriginalConstructor() ->setMethods( null ) ->getMock(); - $db->setFlag( Database::DBO_IGNORE ); + $db->setFlag( $flag ); } /** - * @expectedException UnexpectedValueException + * @expectedException DBUnexpectedError * @covers Wikimedia\Rdbms\Database::clearFlag + * @dataProvider provideImmutableDBOFlags + * @param int $flag */ - public function testDBOIgnoreClear() { + public function testDBOCannotClear( $flag ) { $db = $this->getMockBuilder( DatabaseMysqli::class ) ->disableOriginalConstructor() ->setMethods( null ) ->getMock(); - $db->clearFlag( Database::DBO_IGNORE ); + $db->clearFlag( $flag ); } /** @@ -704,4 +714,31 @@ class DatabaseTest extends PHPUnit\Framework\TestCase { $this->assertSame( $oldDomain, $this->db->getDomainId() ); } + /** + * @covers Wikimedia\Rdbms\Database::getLBInfo + * @covers Wikimedia\Rdbms\Database::setLBInfo + */ + public function testGetSetLBInfo() { + $db = $this->getMockDB(); + + $this->assertEquals( [], $db->getLBInfo() ); + $this->assertNull( $db->getLBInfo( 'pringles' ) ); + + $db->setLBInfo( 'soda', 'water' ); + $this->assertEquals( [ 'soda' => 'water' ], $db->getLBInfo() ); + $this->assertNull( $db->getLBInfo( 'pringles' ) ); + $this->assertEquals( 'water', $db->getLBInfo( 'soda' ) ); + + $db->setLBInfo( 'basketball', 'Lebron' ); + $this->assertEquals( [ 'soda' => 'water', 'basketball' => 'Lebron' ], $db->getLBInfo() ); + $this->assertEquals( 'water', $db->getLBInfo( 'soda' ) ); + $this->assertEquals( 'Lebron', $db->getLBInfo( 'basketball' ) ); + + $db->setLBInfo( 'soda', null ); + $this->assertEquals( [ 'basketball' => 'Lebron' ], $db->getLBInfo() ); + + $db->setLBInfo( [ 'King' => 'James' ] ); + $this->assertNull( $db->getLBInfo( 'basketball' ) ); + $this->assertEquals( [ 'King' => 'James' ], $db->getLBInfo() ); + } }