Changeset 53804 for trunk/tests/phpunit/tests/actions.php
- Timestamp:
- 07/31/2022 03:03:46 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/actions.php
r52389 r53804 12 12 */ 13 13 public function test_simple_action() { 14 $a = new MockAction();15 $ tag= __FUNCTION__;16 17 add_action( $ tag, array( &$a, 'action' ) );18 do_action( $ tag);14 $a = new MockAction(); 15 $hook_name = __FUNCTION__; 16 17 add_action( $hook_name, array( &$a, 'action' ) ); 18 do_action( $hook_name ); 19 19 20 20 // Only one event occurred for the hook, with empty args. 21 21 $this->assertSame( 1, $a->get_call_count() ); 22 22 // Only our hook was called. 23 $this->assertSame( array( $ tag), $a->get_tags() );23 $this->assertSame( array( $hook_name ), $a->get_tags() ); 24 24 25 25 $argsvar = $a->get_args(); … … 32 32 */ 33 33 public function test_remove_action() { 34 $a = new MockAction();35 $ tag= __FUNCTION__;36 37 add_action( $ tag, array( &$a, 'action' ) );38 do_action( $ tag);34 $a = new MockAction(); 35 $hook_name = __FUNCTION__; 36 37 add_action( $hook_name, array( &$a, 'action' ) ); 38 do_action( $hook_name ); 39 39 40 40 // Make sure our hook was called correctly. 41 41 $this->assertSame( 1, $a->get_call_count() ); 42 $this->assertSame( array( $ tag), $a->get_tags() );42 $this->assertSame( array( $hook_name ), $a->get_tags() ); 43 43 44 44 // Now remove the action, do it again, and make sure it's not called this time. 45 remove_action( $ tag, array( &$a, 'action' ) );46 do_action( $ tag);45 remove_action( $hook_name, array( &$a, 'action' ) ); 46 do_action( $hook_name ); 47 47 $this->assertSame( 1, $a->get_call_count() ); 48 $this->assertSame( array( $ tag), $a->get_tags() );48 $this->assertSame( array( $hook_name ), $a->get_tags() ); 49 49 50 50 } … … 54 54 */ 55 55 public function test_has_action() { 56 $tag = __FUNCTION__; 57 $func = __FUNCTION__ . '_func'; 58 59 $this->assertFalse( has_action( $tag, $func ) ); 60 $this->assertFalse( has_action( $tag ) ); 61 add_action( $tag, $func ); 62 $this->assertSame( 10, has_action( $tag, $func ) ); 63 $this->assertTrue( has_action( $tag ) ); 64 remove_action( $tag, $func ); 65 $this->assertFalse( has_action( $tag, $func ) ); 66 $this->assertFalse( has_action( $tag ) ); 56 $hook_name = __FUNCTION__; 57 $callback = __FUNCTION__ . '_func'; 58 59 $this->assertFalse( has_action( $hook_name, $callback ) ); 60 $this->assertFalse( has_action( $hook_name ) ); 61 62 add_action( $hook_name, $callback ); 63 $this->assertSame( 10, has_action( $hook_name, $callback ) ); 64 $this->assertTrue( has_action( $hook_name ) ); 65 66 remove_action( $hook_name, $callback ); 67 $this->assertFalse( has_action( $hook_name, $callback ) ); 68 $this->assertFalse( has_action( $hook_name ) ); 67 69 } 68 70 … … 73 75 */ 74 76 public function test_multiple_actions() { 75 $a1 = new MockAction();76 $a2 = new MockAction();77 $ tag= __FUNCTION__;77 $a1 = new MockAction(); 78 $a2 = new MockAction(); 79 $hook_name = __FUNCTION__; 78 80 79 81 // Add both actions to the hook. 80 add_action( $ tag, array( &$a1, 'action' ) );81 add_action( $ tag, array( &$a2, 'action' ) );82 83 do_action( $ tag);82 add_action( $hook_name, array( &$a1, 'action' ) ); 83 add_action( $hook_name, array( &$a2, 'action' ) ); 84 85 do_action( $hook_name ); 84 86 85 87 // Both actions called once each. … … 94 96 */ 95 97 public function test_action_args_1() { 96 $a = new MockAction();97 $ tag= __FUNCTION__;98 $val = __FUNCTION__ . '_val';99 100 add_action( $ tag, array( &$a, 'action' ) );98 $a = new MockAction(); 99 $hook_name = __FUNCTION__; 100 $val = __FUNCTION__ . '_val'; 101 102 add_action( $hook_name, array( &$a, 'action' ) ); 101 103 // Call the action with a single argument. 102 do_action( $ tag, $val );104 do_action( $hook_name, $val ); 103 105 104 106 $call_count = $a->get_call_count(); … … 114 116 */ 115 117 public function test_action_args_2() { 116 $a1 = new MockAction();117 $a2 = new MockAction();118 $ tag= __FUNCTION__;119 $val1 = __FUNCTION__ . '_val1';120 $val2 = __FUNCTION__ . '_val2';118 $a1 = new MockAction(); 119 $a2 = new MockAction(); 120 $hook_name = __FUNCTION__; 121 $val1 = __FUNCTION__ . '_val1'; 122 $val2 = __FUNCTION__ . '_val2'; 121 123 122 124 // $a1 accepts two arguments, $a2 doesn't. 123 add_action( $ tag, array( &$a1, 'action' ), 10, 2 );124 add_action( $ tag, array( &$a2, 'action' ) );125 add_action( $hook_name, array( &$a1, 'action' ), 10, 2 ); 126 add_action( $hook_name, array( &$a2, 'action' ) ); 125 127 // Call the action with two arguments. 126 do_action( $ tag, $val1, $val2 );128 do_action( $hook_name, $val1, $val2 ); 127 129 128 130 $call_count = $a1->get_call_count(); … … 148 150 */ 149 151 public function test_action_args_3() { 150 $a1 = new MockAction();151 $a2 = new MockAction();152 $a3 = new MockAction();153 $ tag= __FUNCTION__;154 $val1 = __FUNCTION__ . '_val1';155 $val2 = __FUNCTION__ . '_val2';152 $a1 = new MockAction(); 153 $a2 = new MockAction(); 154 $a3 = new MockAction(); 155 $hook_name = __FUNCTION__; 156 $val1 = __FUNCTION__ . '_val1'; 157 $val2 = __FUNCTION__ . '_val2'; 156 158 157 159 // $a1 accepts two arguments, $a2 doesn't, $a3 accepts two arguments. 158 add_action( $ tag, array( &$a1, 'action' ), 10, 2 );159 add_action( $ tag, array( &$a2, 'action' ) );160 add_action( $ tag, array( &$a3, 'action' ), 10, 2 );160 add_action( $hook_name, array( &$a1, 'action' ), 10, 2 ); 161 add_action( $hook_name, array( &$a2, 'action' ) ); 162 add_action( $hook_name, array( &$a3, 'action' ), 10, 2 ); 161 163 // Call the action with two arguments. 162 do_action( $ tag, $val1, $val2 );164 do_action( $hook_name, $val1, $val2 ); 163 165 164 166 $call_count = $a1->get_call_count(); … … 187 189 */ 188 190 public function test_action_args_with_php4_syntax() { 189 $a = new MockAction();190 $ tag= __FUNCTION__;191 $val = new stdClass();192 193 add_action( $ tag, array( &$a, 'action' ) );191 $a = new MockAction(); 192 $hook_name = __FUNCTION__; 193 $val = new stdClass(); 194 195 add_action( $hook_name, array( &$a, 'action' ) ); 194 196 // Call the action with PHP 4 notation for passing object by reference. 195 do_action( $ tag, array( &$val ) );197 do_action( $hook_name, array( &$val ) ); 196 198 197 199 $call_count = $a->get_call_count(); … … 201 203 202 204 public function test_action_priority() { 203 $a = new MockAction();204 $ tag= __FUNCTION__;205 206 add_action( $ tag, array( &$a, 'action' ), 10 );207 add_action( $ tag, array( &$a, 'action2' ), 9 );208 do_action( $ tag);205 $a = new MockAction(); 206 $hook_name = __FUNCTION__; 207 208 add_action( $hook_name, array( &$a, 'action' ), 10 ); 209 add_action( $hook_name, array( &$a, 'action2' ), 9 ); 210 do_action( $hook_name ); 209 211 210 212 // Two events, one per action. … … 215 217 array( 216 218 'action' => 'action2', 217 'tag' => $ tag,219 'tag' => $hook_name, 218 220 'args' => array( '' ), 219 221 ), … … 221 223 array( 222 224 'action' => 'action', 223 'tag' => $ tag,225 'tag' => $hook_name, 224 226 'args' => array( '' ), 225 227 ), … … 233 235 */ 234 236 public function test_did_action() { 235 $ tag1 = 'action1';236 $ tag2 = 'action2';237 238 // Do action $ tag1 but not $tag2.239 do_action( $ tag1 );240 $this->assertSame( 1, did_action( $ tag1 ) );241 $this->assertSame( 0, did_action( $ tag2 ) );242 243 // Do action $ tag2 10 times.237 $hook_name1 = 'action1'; 238 $hook_name2 = 'action2'; 239 240 // Do action $hook_name1 but not $hook_name2. 241 do_action( $hook_name1 ); 242 $this->assertSame( 1, did_action( $hook_name1 ) ); 243 $this->assertSame( 0, did_action( $hook_name2 ) ); 244 245 // Do action $hook_name2 10 times. 244 246 $count = 10; 245 247 for ( $i = 0; $i < $count; $i++ ) { 246 do_action( $ tag2 );248 do_action( $hook_name2 ); 247 249 } 248 250 249 // $ tag1's count hasn't changed, $tag2 should be correct.250 $this->assertSame( 1, did_action( $ tag1 ) );251 $this->assertSame( $count, did_action( $ tag2 ) );251 // $hook_name1's count hasn't changed, $hook_name2 should be correct. 252 $this->assertSame( 1, did_action( $hook_name1 ) ); 253 $this->assertSame( $count, did_action( $hook_name2 ) ); 252 254 253 255 } … … 257 259 */ 258 260 public function test_all_action() { 259 $a = new MockAction();260 $ tag1 = __FUNCTION__ . '_1';261 $ tag2 = __FUNCTION__ . '_2';261 $a = new MockAction(); 262 $hook_name1 = __FUNCTION__ . '_1'; 263 $hook_name2 = __FUNCTION__ . '_2'; 262 264 263 265 // Add an 'all' action. … … 265 267 $this->assertSame( 10, has_filter( 'all', array( &$a, 'action' ) ) ); 266 268 // Do some actions. 267 do_action( $ tag1 );268 do_action( $ tag2 );269 do_action( $ tag1 );270 do_action( $ tag1 );269 do_action( $hook_name1 ); 270 do_action( $hook_name2 ); 271 do_action( $hook_name1 ); 272 do_action( $hook_name1 ); 271 273 272 274 // Our action should have been called once for each tag. 273 275 $this->assertSame( 4, $a->get_call_count() ); 274 276 // Only our hook was called. 275 $this->assertSame( array( $ tag1, $tag2, $tag1, $tag1 ), $a->get_tags() );277 $this->assertSame( array( $hook_name1, $hook_name2, $hook_name1, $hook_name1 ), $a->get_tags() ); 276 278 277 279 remove_action( 'all', array( &$a, 'action' ) ); … … 284 286 */ 285 287 public function test_remove_all_action() { 286 $a = new MockAction();287 $ tag= __FUNCTION__;288 $a = new MockAction(); 289 $hook_name = __FUNCTION__; 288 290 289 291 add_action( 'all', array( &$a, 'action' ) ); 290 292 $this->assertSame( 10, has_filter( 'all', array( &$a, 'action' ) ) ); 291 do_action( $ tag);293 do_action( $hook_name ); 292 294 293 295 // Make sure our hook was called correctly. 294 296 $this->assertSame( 1, $a->get_call_count() ); 295 $this->assertSame( array( $ tag), $a->get_tags() );297 $this->assertSame( array( $hook_name ), $a->get_tags() ); 296 298 297 299 // Now remove the action, do it again, and make sure it's not called this time. 298 300 remove_action( 'all', array( &$a, 'action' ) ); 299 301 $this->assertFalse( has_filter( 'all', array( &$a, 'action' ) ) ); 300 do_action( $ tag);302 do_action( $hook_name ); 301 303 $this->assertSame( 1, $a->get_call_count() ); 302 $this->assertSame( array( $ tag), $a->get_tags() );304 $this->assertSame( array( $hook_name ), $a->get_tags() ); 303 305 } 304 306 … … 307 309 */ 308 310 public function test_action_ref_array() { 309 $obj = new stdClass();310 $a = new MockAction();311 $ tag= __FUNCTION__;312 313 add_action( $ tag, array( &$a, 'action' ) );314 315 do_action_ref_array( $ tag, array( &$obj ) );311 $obj = new stdClass(); 312 $a = new MockAction(); 313 $hook_name = __FUNCTION__; 314 315 add_action( $hook_name, array( &$a, 'action' ) ); 316 317 do_action_ref_array( $hook_name, array( &$obj ) ); 316 318 317 319 $args = $a->get_args(); … … 330 332 $a = new MockAction(); 331 333 332 $ tag= __FUNCTION__;333 334 add_action( $ tag, array( &$a, 'action' ) );334 $hook_name = __FUNCTION__; 335 336 add_action( $hook_name, array( &$a, 'action' ) ); 335 337 336 338 $context = array( 'key1' => 'val1' ); 337 do_action( $ tag, $context );339 do_action( $hook_name, $context ); 338 340 339 341 $args = $a->get_args(); … … 344 346 'key3' => 'val3', 345 347 ); 346 do_action( $ tag, $context2 );348 do_action( $hook_name, $context2 ); 347 349 348 350 $args = $a->get_args(); … … 370 372 */ 371 373 public function test_action_recursion() { 372 $ tag= __FUNCTION__;373 $a = new MockAction();374 $b = new MockAction();375 376 add_action( $ tag, array( $a, 'action' ), 11, 1 );377 add_action( $ tag, array( $b, 'action' ), 13, 1 );378 add_action( $ tag, array( $this, 'action_that_causes_recursion' ), 12, 1 );379 do_action( $ tag, $tag);374 $hook_name = __FUNCTION__; 375 $a = new MockAction(); 376 $b = new MockAction(); 377 378 add_action( $hook_name, array( $a, 'action' ), 11, 1 ); 379 add_action( $hook_name, array( $b, 'action' ), 13, 1 ); 380 add_action( $hook_name, array( $this, 'action_that_causes_recursion' ), 12, 1 ); 381 do_action( $hook_name, $hook_name ); 380 382 381 383 $this->assertSame( 2, $a->get_call_count(), 'recursive actions should call all callbacks with earlier priority' ); … … 386 388 * @covers ::do_action 387 389 */ 388 public function action_that_causes_recursion( $ tag) {390 public function action_that_causes_recursion( $hook_name ) { 389 391 static $recursing = false; 390 392 if ( ! $recursing ) { 391 393 $recursing = true; 392 do_action( $ tag, $tag);394 do_action( $hook_name, $hook_name ); 393 395 } 394 396 $recursing = false; … … 403 405 */ 404 406 public function test_action_callback_manipulation_while_running() { 405 $ tag= __FUNCTION__;406 $a = new MockAction();407 $b = new MockAction();408 $c = new MockAction();409 $d = new MockAction();410 $e = new MockAction();411 412 add_action( $ tag, array( $a, 'action' ), 11, 2 );413 add_action( $ tag, array( $this, 'action_that_manipulates_a_running_hook' ), 12, 2 );414 add_action( $ tag, array( $b, 'action' ), 12, 2 );415 416 do_action( $ tag, $tag, array( $a, $b, $c, $d, $e ) );417 do_action( $ tag, $tag, array( $a, $b, $c, $d, $e ) );407 $hook_name = __FUNCTION__; 408 $a = new MockAction(); 409 $b = new MockAction(); 410 $c = new MockAction(); 411 $d = new MockAction(); 412 $e = new MockAction(); 413 414 add_action( $hook_name, array( $a, 'action' ), 11, 2 ); 415 add_action( $hook_name, array( $this, 'action_that_manipulates_a_running_hook' ), 12, 2 ); 416 add_action( $hook_name, array( $b, 'action' ), 12, 2 ); 417 418 do_action( $hook_name, $hook_name, array( $a, $b, $c, $d, $e ) ); 419 do_action( $hook_name, $hook_name, array( $a, $b, $c, $d, $e ) ); 418 420 419 421 $this->assertSame( 2, $a->get_call_count(), 'callbacks should run unless otherwise instructed' ); … … 424 426 } 425 427 426 public function action_that_manipulates_a_running_hook( $ tag, $mocks ) {427 remove_action( $ tag, array( $mocks[1], 'action' ), 12, 2 );428 add_action( $ tag, array( $mocks[2], 'action' ), 12, 2 );429 add_action( $ tag, array( $mocks[3], 'action' ), 13, 2 );430 add_action( $ tag, array( $mocks[4], 'action' ), 10, 2 );428 public function action_that_manipulates_a_running_hook( $hook_name, $mocks ) { 429 remove_action( $hook_name, array( $mocks[1], 'action' ), 12, 2 ); 430 add_action( $hook_name, array( $mocks[2], 'action' ), 12, 2 ); 431 add_action( $hook_name, array( $mocks[3], 'action' ), 13, 2 ); 432 add_action( $hook_name, array( $mocks[4], 'action' ), 10, 2 ); 431 433 } 432 434 … … 440 442 */ 441 443 public function test_remove_anonymous_callback() { 442 $ tag= __FUNCTION__;443 $a = new MockAction();444 add_action( $ tag, array( $a, 'action' ), 12, 1 );445 $this->assertTrue( has_action( $ tag) );446 447 $hook = $GLOBALS['wp_filter'][ $ tag];444 $hook_name = __FUNCTION__; 445 $a = new MockAction(); 446 add_action( $hook_name, array( $a, 'action' ), 12, 1 ); 447 $this->assertTrue( has_action( $hook_name ) ); 448 449 $hook = $GLOBALS['wp_filter'][ $hook_name ]; 448 450 449 451 // From http://wordpress.stackexchange.com/a/57088/6445 … … 455 457 ) { 456 458 remove_filter( 457 $ tag,459 $hook_name, 458 460 array( $function['function'][0], 'action' ), 459 461 $priority … … 463 465 } 464 466 465 $this->assertFalse( has_action( $ tag) );467 $this->assertFalse( has_action( $hook_name ) ); 466 468 } 467 469 … … 478 480 public function test_array_access_of_wp_filter_global() { 479 481 global $wp_filter; 480 $tag = __FUNCTION__; 481 482 add_action( $tag, '__return_null', 11, 1 ); 483 484 $this->assertArrayHasKey( 11, $wp_filter[ $tag ] ); 485 $this->assertArrayHasKey( '__return_null', $wp_filter[ $tag ][11] ); 486 487 unset( $wp_filter[ $tag ][11] ); 488 $this->assertFalse( has_action( $tag, '__return_null' ) ); 489 490 $wp_filter[ $tag ][11] = array( 482 483 $hook_name = __FUNCTION__; 484 485 add_action( $hook_name, '__return_null', 11, 1 ); 486 487 $this->assertArrayHasKey( 11, $wp_filter[ $hook_name ] ); 488 $this->assertArrayHasKey( '__return_null', $wp_filter[ $hook_name ][11] ); 489 490 unset( $wp_filter[ $hook_name ][11] ); 491 $this->assertFalse( has_action( $hook_name, '__return_null' ) ); 492 493 $wp_filter[ $hook_name ][11] = array( 491 494 '__return_null' => array( 492 495 'function' => '__return_null', … … 494 497 ), 495 498 ); 496 $this->assertSame( 11, has_action( $ tag, '__return_null' ) );499 $this->assertSame( 11, has_action( $hook_name, '__return_null' ) ); 497 500 } 498 501 … … 506 509 public function test_current_action() { 507 510 global $wp_current_filter; 511 508 512 $wp_current_filter[] = 'first'; 509 513 $wp_current_filter[] = 'second'; // Let's say a second action was invoked. … … 519 523 public function test_doing_filter() { 520 524 global $wp_current_filter; 525 521 526 $wp_current_filter = array(); // Set to an empty array first. 522 527 … … 540 545 public function test_doing_action() { 541 546 global $wp_current_filter; 547 542 548 $wp_current_filter = array(); // Set to an empty array first. 543 549
Note: See TracChangeset
for help on using the changeset viewer.