From 273fd5ca4c74415ba99b0efab193819b9644b27f Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Fri, 30 May 2014 19:17:15 +0000 Subject: [PATCH] Add more test coverage for `wpdb`. See #26999. git-svn-id: https://develop.svn.wordpress.org/trunk@28635 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/db.php | 111 +++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/tests/phpunit/tests/db.php b/tests/phpunit/tests/db.php index 367abea17e..b019bc9592 100644 --- a/tests/phpunit/tests/db.php +++ b/tests/phpunit/tests/db.php @@ -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 ); + } }