/**
* @group Database
- * @group DatabaseBase
+ * @group Database
*/
class DatabaseTest extends MediaWikiTestCase {
/**
- * @var DatabaseBase
+ * @var Database
*/
protected $db;
}
/**
- * @covers DatabaseBase::dropTable
+ * @covers Database::dropTable
*/
public function testAddQuotesNull() {
$check = "NULL";
);
}
- public function testFillPreparedEmpty() {
- $sql = $this->db->fillPrepared(
- 'SELECT * FROM interwiki', [] );
- $this->assertEquals(
- "SELECT * FROM interwiki",
- $sql );
- }
-
- public function testFillPreparedQuestion() {
- $sql = $this->db->fillPrepared(
- 'SELECT * FROM cur WHERE cur_namespace=? AND cur_title=?',
- [ 4, "Snicker's_paradox" ] );
-
- $check = "SELECT * FROM cur WHERE cur_namespace='4' AND cur_title='Snicker''s_paradox'";
- if ( $this->db->getType() === 'mysql' ) {
- $check = "SELECT * FROM cur WHERE cur_namespace='4' AND cur_title='Snicker\'s_paradox'";
- }
- $this->assertEquals( $check, $sql );
- }
-
- public function testFillPreparedBang() {
- $sql = $this->db->fillPrepared(
- 'SELECT user_id FROM ! WHERE user_name=?',
- [ '"user"', "Slash's Dot" ] );
-
- $check = "SELECT user_id FROM \"user\" WHERE user_name='Slash''s Dot'";
- if ( $this->db->getType() === 'mysql' ) {
- $check = "SELECT user_id FROM \"user\" WHERE user_name='Slash\'s Dot'";
- }
- $this->assertEquals( $check, $sql );
- }
-
- public function testFillPreparedRaw() {
- $sql = $this->db->fillPrepared(
- "SELECT * FROM cur WHERE cur_title='This_\\&_that,_WTF\\?\\!'",
- [ '"user"', "Slash's Dot" ] );
- $this->assertEquals(
- "SELECT * FROM cur WHERE cur_title='This_&_that,_WTF?!'",
- $sql );
- }
-
public function testStoredFunctions() {
if ( !in_array( wfGetDB( DB_MASTER )->getType(), [ 'mysql', 'postgres' ] ) ) {
$this->markTestSkipped( 'MySQL or Postgres required' );
}
/**
- * @covers DatabaseBase::setTransactionListener()
+ * @covers Database::setTransactionListener()
*/
public function testTransactionListener() {
$db = $this->db;
}
/**
- * @covers DatabaseBase::flushSnapshot()
+ * @covers Database::flushSnapshot()
*/
public function testFlushSnapshot() {
$db = $this->db;
}
/**
- * @covers DatabaseBase::getFlag(
- * @covers DatabaseBase::setFlag()
- * @covers DatabaseBase::restoreFlags()
+ * @covers Database::getFlag(
+ * @covers Database::setFlag()
+ * @covers Database::restoreFlags()
*/
public function testFlagSetting() {
$db = $this->db;
$origTrx = $db->getFlag( DBO_TRX );
$origSsl = $db->getFlag( DBO_SSL );
- if ( $origTrx ) {
- $db->clearFlag( DBO_TRX, $db::REMEMBER_PRIOR );
- } else {
- $db->setFlag( DBO_TRX, $db::REMEMBER_PRIOR );
- }
+ $origTrx
+ ? $db->clearFlag( DBO_TRX, $db::REMEMBER_PRIOR )
+ : $db->setFlag( DBO_TRX, $db::REMEMBER_PRIOR );
$this->assertEquals( !$origTrx, $db->getFlag( DBO_TRX ) );
- if ( $origSsl ) {
- $db->clearFlag( DBO_SSL, $db::REMEMBER_PRIOR );
- } else {
- $db->setFlag( DBO_SSL, $db::REMEMBER_PRIOR );
- }
+ $origSsl
+ ? $db->clearFlag( DBO_SSL, $db::REMEMBER_PRIOR )
+ : $db->setFlag( DBO_SSL, $db::REMEMBER_PRIOR );
$this->assertEquals( !$origSsl, $db->getFlag( DBO_SSL ) );
- $db2 = clone $db;
- $db2->restoreFlags( $db::RESTORE_INITIAL );
- $this->assertEquals( $origTrx, $db2->getFlag( DBO_TRX ) );
- $this->assertEquals( $origSsl, $db2->getFlag( DBO_SSL ) );
+ $db->restoreFlags( $db::RESTORE_INITIAL );
+ $this->assertEquals( $origTrx, $db->getFlag( DBO_TRX ) );
+ $this->assertEquals( $origSsl, $db->getFlag( DBO_SSL ) );
+
+ $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 );
$db->restoreFlags();
$this->assertEquals( $origSsl, $db->getFlag( DBO_SSL ) );
$this->assertEquals( $origSsl, $db->getFlag( DBO_SSL ) );
$this->assertEquals( $origTrx, $db->getFlag( DBO_TRX ) );
}
+
+ /**
+ * @covers Database::tablePrefix()
+ * @covers Database::dbSchema()
+ */
+ public function testMutators() {
+ $old = $this->db->tablePrefix();
+ $this->assertType( 'string', $old, 'Prefix is string' );
+ $this->assertEquals( $old, $this->db->tablePrefix(), "Prefix unchanged" );
+ $this->assertEquals( $old, $this->db->tablePrefix( 'xxx' ) );
+ $this->assertEquals( 'xxx', $this->db->tablePrefix(), "Prefix set" );
+ $this->db->tablePrefix( $old );
+ $this->assertNotEquals( 'xxx', $this->db->tablePrefix() );
+
+ $old = $this->db->dbSchema();
+ $this->assertType( 'string', $old, 'Schema is string' );
+ $this->assertEquals( $old, $this->db->dbSchema(), "Schema unchanged" );
+ $this->assertEquals( $old, $this->db->dbSchema( 'xxx' ) );
+ $this->assertEquals( 'xxx', $this->db->dbSchema(), "Schema set" );
+ $this->db->dbSchema( $old );
+ $this->assertNotEquals( 'xxx', $this->db->dbSchema() );
+ }
}