X-Git-Url: https://git.cyclocoop.org/%242?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Flibs%2Frdbms%2Fdatabase%2FDatabaseTest.php;h=482ab4b5f5cbe935de8fa515e9f0feb7d38822b9;hb=fe412e0c6adfdbb5a99a44164686019d30dbdb5a;hp=bd1c1126c9885889ecb43785ae592bb606b7b6d7;hpb=f96aaf6833d052d10d46af47540fff995362433e;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 bd1c1126c9..482ab4b5f5 100644 --- a/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php +++ b/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php @@ -13,6 +13,8 @@ use Wikimedia\Rdbms\DatabaseMssql; use Wikimedia\Rdbms\DBUnexpectedError; class DatabaseTest extends PHPUnit\Framework\TestCase { + /** @var DatabaseTestHelper */ + private $db; use MediaWikiCoversValidator; @@ -629,25 +631,45 @@ class DatabaseTest extends PHPUnit\Framework\TestCase { * @covers Wikimedia\Rdbms\Database::dbSchema */ public function testSchemaAndPrefixMutators() { + $ud = DatabaseDomain::newUnspecified(); + + $this->assertEquals( $ud->getId(), $this->db->getDomainID() ); + $old = $this->db->tablePrefix(); $oldDomain = $this->db->getDomainId(); $this->assertInternalType( 'string', $old, 'Prefix is string' ); $this->assertSame( $old, $this->db->tablePrefix(), "Prefix unchanged" ); - $this->assertSame( $old, $this->db->tablePrefix( 'xxx' ) ); - $this->assertSame( 'xxx', $this->db->tablePrefix(), "Prefix set" ); + $this->assertSame( $old, $this->db->tablePrefix( 'xxx_' ) ); + $this->assertSame( 'xxx_', $this->db->tablePrefix(), "Prefix set" ); $this->db->tablePrefix( $old ); - $this->assertNotEquals( 'xxx', $this->db->tablePrefix() ); + $this->assertNotEquals( 'xxx_', $this->db->tablePrefix() ); $this->assertSame( $oldDomain, $this->db->getDomainId() ); $old = $this->db->dbSchema(); $oldDomain = $this->db->getDomainId(); $this->assertInternalType( 'string', $old, 'Schema is string' ); $this->assertSame( $old, $this->db->dbSchema(), "Schema unchanged" ); + + $this->db->selectDB( 'y' ); $this->assertSame( $old, $this->db->dbSchema( 'xxx' ) ); $this->assertSame( 'xxx', $this->db->dbSchema(), "Schema set" ); $this->db->dbSchema( $old ); $this->assertNotEquals( 'xxx', $this->db->dbSchema() ); - $this->assertSame( $oldDomain, $this->db->getDomainId() ); + $this->assertSame( "y", $this->db->getDomainId() ); + } + + /** + * @covers Wikimedia\Rdbms\Database::tablePrefix + * @covers Wikimedia\Rdbms\Database::dbSchema + * @expectedException DBUnexpectedError + */ + public function testSchemaWithNoDB() { + $ud = DatabaseDomain::newUnspecified(); + + $this->assertEquals( $ud->getId(), $this->db->getDomainID() ); + $this->assertSame( '', $this->db->dbSchema() ); + + $this->db->dbSchema( 'xxx' ); } /** @@ -659,10 +681,10 @@ class DatabaseTest extends PHPUnit\Framework\TestCase { $oldSchema = $this->db->dbSchema(); $oldPrefix = $this->db->tablePrefix(); - $this->db->selectDomain( 'testselectdb-xxx' ); + $this->db->selectDomain( 'testselectdb-xxx_' ); $this->assertSame( 'testselectdb', $this->db->getDBname() ); $this->assertSame( '', $this->db->dbSchema() ); - $this->assertSame( 'xxx', $this->db->tablePrefix() ); + $this->assertSame( 'xxx_', $this->db->tablePrefix() ); $this->db->selectDomain( $oldDomain ); $this->assertSame( $oldDatabase, $this->db->getDBname() ); @@ -670,10 +692,10 @@ class DatabaseTest extends PHPUnit\Framework\TestCase { $this->assertSame( $oldPrefix, $this->db->tablePrefix() ); $this->assertSame( $oldDomain, $this->db->getDomainId() ); - $this->db->selectDomain( 'testselectdb-schema-xxx' ); + $this->db->selectDomain( 'testselectdb-schema-xxx_' ); $this->assertSame( 'testselectdb', $this->db->getDBname() ); $this->assertSame( 'schema', $this->db->dbSchema() ); - $this->assertSame( 'xxx', $this->db->tablePrefix() ); + $this->assertSame( 'xxx_', $this->db->tablePrefix() ); $this->db->selectDomain( $oldDomain ); $this->assertSame( $oldDatabase, $this->db->getDBname() ); @@ -682,4 +704,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() ); + } }