Add more test coverage for wpdb.

See #26999.


git-svn-id: https://develop.svn.wordpress.org/trunk@28635 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor
2014-05-30 19:17:15 +00:00
parent de685a9f73
commit 273fd5ca4c
+111
View File
@@ -226,4 +226,115 @@ class Tests_DB extends WP_UnitTestCase {
$prepared = $wpdb->prepare( "SELECT * FROM $wpdb->users WHERE id = $id", $id );
$this->assertEquals( "SELECT * FROM $wpdb->users WHERE id = 0", $prepared );
}
function test_db_version() {
global $wpdb;
$this->assertTrue( version_compare( $wpdb->db_version(), '5.0', '>=' ) );
}
function test_get_caller() {
global $wpdb;
$str = $wpdb->get_caller();
$calls = explode( ', ', $str );
$called = join( '->', array( __CLASS__, __FUNCTION__ ) );
$this->assertEquals( $called, end( $calls ) );
}
function test_has_cap() {
global $wpdb;
$this->assertTrue( $wpdb->has_cap( 'collation' ) );
$this->assertTrue( $wpdb->has_cap( 'group_concat' ) );
$this->assertTrue( $wpdb->has_cap( 'subqueries' ) );
$this->assertTrue( $wpdb->has_cap( 'COLLATION' ) );
$this->assertTrue( $wpdb->has_cap( 'GROUP_CONCAT' ) );
$this->assertTrue( $wpdb->has_cap( 'SUBQUERIES' ) );
$this->assertEquals(
version_compare( $wpdb->db_version(), '5.0.7', '>=' ),
$wpdb->has_cap( 'set_charset' )
);
$this->assertEquals(
version_compare( $wpdb->db_version(), '5.0.7', '>=' ),
$wpdb->has_cap( 'SET_CHARSET' )
);
}
/**
* @expectedDeprecated supports_collation
*/
function test_supports_collation() {
global $wpdb;
$this->assertTrue( $wpdb->supports_collation() );
}
function test_check_database_version() {
global $wpdb;
$this->assertEmpty( $wpdb->check_database_version() );
}
/**
* @expectedException WPDieException
*/
function test_bail() {
global $wpdb;
$wpdb->bail( 'Database is dead.' );
}
function test_timers() {
global $wpdb;
$wpdb->timer_start();
usleep( 5 );
$stop = $wpdb->timer_stop();
$this->assertNotEquals( $wpdb->time_start, $stop );
$this->assertGreaterThan( $stop, $wpdb->time_start );
}
function test_get_col_info() {
global $wpdb;
$wpdb->get_results( "SELECT ID FROM $wpdb->users" );
$this->assertEquals( array( 'ID' ), $wpdb->get_col_info() );
$this->assertEquals( array( $wpdb->users ), $wpdb->get_col_info( 'table' ) );
$this->assertEquals( $wpdb->users, $wpdb->get_col_info( 'table', 0 ) );
}
function test_query_and_delete() {
global $wpdb;
$rows = $wpdb->query( "INSERT INTO $wpdb->users (display_name) VALUES ('Walter Sobchak')" );
$this->assertEquals( 1, $rows );
$this->assertNotEmpty( $wpdb->insert_id );
$d_rows = $wpdb->delete( $wpdb->users, array( 'ID' => $wpdb->insert_id ) );
$this->assertEquals( 1, $d_rows );
}
function test_get_row() {
global $wpdb;
$rows = $wpdb->query( "INSERT INTO $wpdb->users (display_name) VALUES ('Walter Sobchak')" );
$this->assertEquals( 1, $rows );
$this->assertNotEmpty( $wpdb->insert_id );
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->users WHERE ID = %d", $wpdb->insert_id ) );
$this->assertInternalType( 'object', $row );
$this->assertEquals( 'Walter Sobchak', $row->display_name );
}
function test_replace() {
global $wpdb;
$rows1 = $wpdb->insert( $wpdb->users, array( 'display_name' => 'Walter Sobchak' ) );
$this->assertEquals( 1, $rows1 );
$this->assertNotEmpty( $wpdb->insert_id );
$last = $wpdb->insert_id;
$rows2 = $wpdb->replace( $wpdb->users, array( 'ID' => $last, 'display_name' => 'Walter Replace Sobchak' ) );
$this->assertEquals( 2, $rows2 );
$this->assertNotEmpty( $wpdb->insert_id );
$this->assertEquals( $last, $wpdb->insert_id );
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->users WHERE ID = %d", $last ) );
$this->assertEquals( 'Walter Replace Sobchak', $row->display_name );
}
}