Make WordPress Core

Changeset 25 in tests


Ignore:
Timestamp:
09/22/2007 11:45:08 PM (19 years ago)
Author:
tellyworth
Message:

add test_actions

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • wp-testcase/test_actions.php

    r24 r25  
    2020        }
    2121
     22        // one tag with multiple actions
    2223        function test_multiple_actions() {
    2324                $a1 = new MockAction();
    … …  
    4849                $this->assertEquals(array($val), array_pop($a->get_args()));
    4950        }
     51       
     52        function test_action_args_2() {
     53                $a1 = new MockAction();
     54                $a2 = new MockAction();
     55                $tag = rand_str();
     56                $val1 = rand_str();
     57                $val2 = rand_str();
     58
     59                // a1 accepts two arguments, a2 doesn't
     60                add_action($tag, array(&$a1, 'action'), 10, 2);
     61                add_action($tag, array(&$a2, 'action'));
     62                // call the action with two arguments
     63                do_action($tag, $val1, $val2);
     64
     65                // a1 should be called with both args
     66                $this->assertEquals(1, $a1->get_call_count());
     67                $this->assertEquals(array($val1, $val2), array_pop($a1->get_args()));
     68
     69                // a2 should be called with one only
     70                $this->assertEquals(1, $a2->get_call_count());
     71                $this->assertEquals(array($val1), array_pop($a2->get_args()));
     72        }
     73
     74        function test_action_priority() {
     75                $a = new MockAction();
     76                $tag = rand_str();
     77               
     78                add_action($tag, array(&$a, 'action'), 10);
     79                add_action($tag, array(&$a, 'action2'), 9);
     80                do_action($tag);
     81
     82                // two events, one per action
     83                $this->assertEquals(2, $a->get_call_count());
     84
     85                $expected = array (
     86                        // action2 is called first because it has priority 9
     87                        array (
     88                                'action' => 'action2',
     89                                'tag' => $tag,
     90                                'args' => array('')
     91                        ),
     92                        // action 1 is called second
     93                        array (
     94                                'action' => 'action',
     95                                'tag' => $tag,
     96                                'args' => array('')
     97                        ),
     98                );
     99
     100                $this->assertEquals($expected, $a->get_events());
     101        }
     102
    50103}
    51104
  • wp-testlib/utils.php

    r24 r25  
    3838                $args = func_get_args();
    3939                $current_action = $wp_actions[count($wp_actions)-1];
    40                 $this->events[] = array('tag'=>$current_action, 'args'=>$args);
     40                $this->events[] = array('action' => __FUNCTION__, 'tag'=>$current_action, 'args'=>$args);
     41        }
     42
     43        function action2() {
     44                global $wp_actions;
     45
     46                $args = func_get_args();
     47                $current_action = $wp_actions[count($wp_actions)-1];
     48                $this->events[] = array('action' => __FUNCTION__, 'tag'=>$current_action, 'args'=>$args);
     49        }
     50       
     51        // return a list of all the actions, tags and args
     52        function get_events() {
     53                return $this->events;
    4154        }
    4255
    … …  
    5669        function get_tags() {
    5770                $out = array();
    58                 foreach ($this->events as $e)
     71                foreach ($this->events as $e) {
    5972                        $out[] = $e['tag'];
     73                }
    6074                return $out;
    6175        }
Note: See TracChangeset for help on using the changeset viewer.