WordPress.org

Make WordPress Core

Ticket #15155: ut.15155.diff

File ut.15155.diff, 2.4 KB (added by coffee2code, 6 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() {