WordPress.org

Make WordPress Core

Ticket #22192: 22192.2.diff

File 22192.2.diff, 1.7 KB (added by atimmer, 8 years ago)
  • tests/tests/meta.php

     
    99                $this->author = new WP_User( $this->factory->user->create( array( 'role' => 'author' ) ) );
    1010                $this->meta_id = add_metadata( 'user', $this->author->ID, 'meta_key', 'meta_value' );
    1111                $this->delete_meta_id = add_metadata( 'user', $this->author->ID, 'delete_meta_key', 'delete_meta_value' );
     12                $this->post_id = wp_insert_post( array( 'post_type' => 'page' ) );
    1213        }
    1314
    1415        function _meta_sanitize_cb ( $meta_value, $meta_key, $meta_type ) {
     
    8283                $this->assertFalse( metadata_exists( 'user',  1234567890, 'foobarbaz' ) );
    8384                $this->assertFalse( metadata_exists( 'user',  1234567890, 'meta_key' ) );
    8485        }
     86       
     87        /**
     88         * Tests if you don't hit the database if you update a meta right after you added it
     89         * @ticket 22192
     90         */
     91        function test_updating_after_saving() {
     92                global $wpdb;
     93               
     94                $start_count = $wpdb->num_queries;
     95                $values = array( 'somevalue', 1, 0, true, false, 60, array() );
     96                $update_result = false;
     97               
     98                foreach ( $values as $key => $value ) {
     99                        add_post_meta( $this->post_id, 'unique-' . $key, $value );
     100                        $update_result = $update_result || update_post_meta( $this->post_id, 'unique-' . $key, $value );
     101                }
     102               
     103                $total_queries = $wpdb->num_queries - $start_count;
     104               
     105                // There should be only 1 query each because we save with "add_post_meta"
     106                // and update_post_meta should see it in the cache
     107                //
     108                // And 1 query extra for filling the cache all the meta values ( filling the cache )
     109                $this->assertEquals( count( $values ) + 1, $total_queries );
     110                $this->assertFalse( $update_result );
     111               
     112        }
    85113
    86114        /**
    87115         * @ticket 18158