WordPress.org

Make WordPress Core

Ticket #15155: ut.15155.diff

File ut.15155.diff, 2.4 KB (added by coffee2code, 3 years ago)

WP unit tests for proposed patch.

  • wp-testcase/test_shortcode.php

     
    1111        extract(shortcode_atts(array( 
    1212                'foo' => 'no foo', 
    1313                'baz' => 'default baz', 
    14         ), $atts)); 
     14        ), $atts, 'bartag')); 
    1515 
    1616        return "foo = {$foo}"; 
    1717} 
     
    5050                $this->atts = null; 
    5151                $this->content = null; 
    5252                $this->tagname = null; 
     53                $this->filter_atts_out = null; 
     54                $this->filter_atts_pairs = null; 
     55                $this->filter_atts_atts = null; 
    5356 
    5457        } 
    5558 
     
    319322                $this->assertEquals( $test_string, $actual ); 
    320323        } 
    321324 
     325        function _filter_atts( $out, $pairs, $atts ) { 
     326                $this->filter_atts_out = $out; 
     327                $this->filter_atts_pairs = $pairs; 
     328                $this->filter_atts_atts = $atts; 
     329                return $out; 
     330        } 
     331 
     332        function _filter_atts2( $out, $pairs, $atts ) { 
     333                // If foo attribute equals "foo1", change it to be default value 
     334                if ( isset( $out['foo'] ) && 'foo1' == $out['foo'] ) 
     335                        $out['foo'] = $pairs['foo']; 
     336                // If baz attribute is set, remove it 
     337                if ( isset( $out['baz'] ) ) 
     338                        unset( $out['baz'] ); 
     339                $this->filter_atts_out = $out; 
     340                return $out; 
     341        } 
     342 
     343        // Test to ensure the filter passes proper arguments 
     344        function test_shortcode_atts_filter_basics() { 
     345                add_filter( 'shortcode_atts_bartag', array( &$this, '_filter_atts' ), 10, 3 ); 
     346                do_shortcode('[bartag foo="foo1" /]'); 
     347                $this->assertEquals( array( 'foo' => 'foo1', 'baz' => 'default baz' ), $this->filter_atts_out ); 
     348                $this->assertEquals( array( 'foo' => 'no foo', 'baz' => 'default baz' ), $this->filter_atts_pairs ); 
     349                $this->assertEquals( array( 'foo' => 'foo1' ), $this->filter_atts_atts ); 
     350                remove_filter( 'shortcode_atts_bartag', array( &$this, '_filter_atts' ), 10, 3 ); 
     351        } 
     352 
     353        function test_shortcode_atts_filtering() { 
     354                add_filter( 'shortcode_atts_bartag', array( &$this, '_filter_atts2' ), 10, 3 ); 
     355                $out = do_shortcode('[bartag foo="foo1" baz="baz1" /]'); 
     356                $this->assertEquals( array( 'foo' => 'no foo' ), $this->filter_atts_out ); 
     357                $this->assertEquals( 'foo = no foo', $out ); 
     358                $out = do_shortcode('[bartag foo="foo2" /]'); 
     359                $this->assertEquals( 'foo = foo2', $out ); 
     360                remove_filter( 'shortcode_atts_bartag', array( &$this, '_filter_atts2' ), 10, 3 ); 
     361        } 
    322362} 
     363 
    323364//http://core.trac.wordpress.org/ticket/10326 
    324365class TestShortcodeStripping extends WPTestCase { 
    325366        function test_strip_shortcodes() {