Changeset 38677 for trunk/tests/phpunit/tests/term/cache.php
- Timestamp:
- 09/29/2016 10:35:32 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/term/cache.php
r36323 r38677 220 220 } 221 221 } 222 223 /** 224 * @ticket 21760 225 */ 226 function test_get_term_by_slug_cache() { 227 global $wpdb; 228 229 $term_id = $this->factory->term->create( array( 'slug' => 'burrito', 'name' => 'Taco', 'taxonomy' => 'post_tag' ) ); 230 231 clean_term_cache( $term_id, 'post_tag' ); 232 $num_queries = $wpdb->num_queries; 233 234 $term = get_term_by( 'slug', 'burrito', 'post_tag' ); 235 $num_queries++; 236 $this->assertEquals( 'Taco', $term->name ); 237 $this->assertEquals( $num_queries, $wpdb->num_queries ); 238 239 // This should now hit cache. 240 $term = get_term_by( 'slug', 'burrito', 'post_tag' ); 241 $this->assertEquals( 'Taco', $term->name ); 242 $this->assertEquals( $num_queries, $wpdb->num_queries ); 243 244 $this->assertEquals( get_term( $term_id, 'post_tag' ), $term ); 245 $this->assertEquals( $num_queries, $wpdb->num_queries ); 246 } 247 248 /** 249 * @ticket 21760 250 */ 251 function test_get_term_by_slug_cache_update() { 252 global $wpdb; 253 254 $term_id = $this->factory->term->create( array( 'slug' => 'burrito', 'name' => 'Taco', 'taxonomy' => 'post_tag' ) ); 255 256 clean_term_cache( $term_id, 'post_tag' ); 257 $num_queries = $wpdb->num_queries; 258 259 $term = get_term_by( 'slug', 'burrito', 'post_tag' ); 260 $num_queries++; 261 $this->assertEquals( 'Taco', $term->name ); 262 $this->assertEquals( $num_queries, $wpdb->num_queries ); 263 264 // This should now hit cache. 265 $term = get_term_by( 'slug', 'burrito', 'post_tag' ); 266 $this->assertEquals( 'Taco', $term->name ); 267 $this->assertEquals( $num_queries, $wpdb->num_queries ); 268 269 // Update the tag which invalidates the cache. 270 wp_update_term( $term_id, 'post_tag', array( 'name' => 'No Taco' ) ); 271 $num_queries = $wpdb->num_queries; 272 273 // This should not hit cache. 274 $term = get_term_by( 'slug', 'burrito', 'post_tag' ); 275 $num_queries++; 276 $this->assertEquals( 'No Taco', $term->name ); 277 $this->assertEquals( $num_queries, $wpdb->num_queries ); 278 } 279 280 /** 281 * @ticket 21760 282 */ 283 function test_get_term_by_name_cache() { 284 global $wpdb; 285 286 $term_id = $this->factory->term->create( array( 'name' => 'Burrito', 'slug' => 'noburrito', 'taxonomy' => 'post_tag' ) ); 287 288 clean_term_cache( $term_id, 'post_tag' ); 289 $num_queries = $wpdb->num_queries; 290 291 get_term_by( 'name', 'Burrito', 'post_tag' ); 292 $num_queries++; 293 $this->assertEquals( $num_queries, $wpdb->num_queries ); 294 295 // This should now hit cache. 296 $term = get_term_by( 'name', 'Burrito', 'post_tag' ); 297 $this->assertEquals( $num_queries, $wpdb->num_queries ); 298 299 $this->assertEquals( get_term( $term_id, 'post_tag' ), $term ); 300 $this->assertEquals( $num_queries, $wpdb->num_queries ); 301 } 302 303 /** 304 * @ticket 21760 305 */ 306 function test_get_term_by_name_cache_update() { 307 global $wpdb; 308 309 $term_id = $this->factory->term->create( array( 'name' => 'Burrito', 'slug' => 'noburrito', 'taxonomy' => 'post_tag' ) ); 310 311 clean_term_cache( $term_id, 'post_tag' ); 312 $num_queries = $wpdb->num_queries; 313 314 get_term_by( 'name', 'Burrito', 'post_tag' ); 315 $num_queries++; 316 $this->assertEquals( $num_queries, $wpdb->num_queries ); 317 318 // This should now hit cache. 319 get_term_by( 'name', 'Burrito', 'post_tag' ); 320 $this->assertEquals( $num_queries, $wpdb->num_queries ); 321 322 // Update the tag which invalidates the cache. 323 wp_update_term( $term_id, 'post_tag', array( 'slug' => 'taco' ) ); 324 $num_queries = $wpdb->num_queries; 325 326 // This should not hit cache. 327 get_term_by( 'name', 'burrito', 'post_tag' ); 328 $num_queries++; 329 $this->assertEquals( $num_queries, $wpdb->num_queries ); 330 } 331 332 /** 333 * @ticket 21760 334 */ 335 function test_invalidating_term_caches_should_fail_when_invalidation_is_suspended() { 336 global $wpdb; 337 338 $term_id = $this->factory->term->create( array( 'name' => 'Burrito', 'taxonomy' => 'post_tag' ) ); 339 340 clean_term_cache( $term_id, 'post_tag' ); 341 $num_queries = $wpdb->num_queries; 342 $last_changed = wp_cache_get( 'last_changed', 'terms' ); 343 344 $term1 = get_term_by( 'name', 'Burrito', 'post_tag' ); 345 $num_queries++; 346 347 // Verify the term is cached. 348 $term2 = get_term_by( 'name', 'Burrito', 'post_tag' ); 349 $this->assertEquals( $num_queries, $wpdb->num_queries ); 350 $this->assertEquals( $term1, $term2 ); 351 352 $suspend = wp_suspend_cache_invalidation(); 353 354 // Update the tag. 355 wp_update_term( $term_id, 'post_tag', array( 'name' => 'Taco' ) ); 356 $num_queries = $wpdb->num_queries; 357 358 // Verify that the cached term still matches the initial cached term. 359 $term3 = get_term_by( 'name', 'Burrito', 'post_tag' ); 360 $this->assertEquals( $num_queries, $wpdb->num_queries ); 361 $this->assertEquals( $term1, $term3 ); 362 363 // Verify that last changed has not been updated as part of an invalidation routine. 364 $this->assertSame( $last_changed, wp_cache_get( 'last_changed', 'terms' ) ); 365 366 // Clean up. 367 wp_suspend_cache_invalidation( $suspend ); 368 } 369 370 /** 371 * @ticket 21760 372 */ 373 public function test_get_term_by_does_not_prime_term_meta_cache() { 374 global $wpdb; 375 376 $term_id = $this->factory->term->create( array( 'name' => 'Burrito', 'taxonomy' => 'post_tag' ) ); 377 add_term_meta( $term_id, 'foo', 'bar' ); 378 379 clean_term_cache( $term_id, 'post_tag' ); 380 $num_queries = $wpdb->num_queries; 381 382 $term = get_term_by( 'name', 'Burrito', 'post_tag' ); 383 $num_queries++; 384 $this->assertTrue( $term instanceof WP_Term ); 385 $this->assertSame( $term_id, $term->term_id ); 386 $this->assertEquals( $num_queries, $wpdb->num_queries ); 387 388 $term_meta = get_term_meta( $term_id, 'foo', true ); 389 $num_queries++; 390 $this->assertSame( $term_meta, 'bar' ); 391 $this->assertEquals( $num_queries, $wpdb->num_queries ); 392 } 222 393 }
Note: See TracChangeset
for help on using the changeset viewer.