Make WordPress Core

Ticket #15155: ut.15155.2.diff

File ut.15155.2.diff, 2.4 KB (added by coffee2code, 12 years ago)

Refresh of unit tests

  • tests/shortcode.php

     
    2929                $this->atts = $atts;
    3030                $this->content = $content;
    3131                $this->tagname = $tagname;
     32                $this->filter_atts_out = null;
     33                $this->filter_atts_pairs = null;
     34                $this->filter_atts_atts = null;
    3235        }
    3336
    3437        // [footag foo="bar"]
     
    4144                extract(shortcode_atts(array(
    4245                        'foo' => 'no foo',
    4346                        'baz' => 'default baz',
    44                 ), $atts));
     47                ), $atts, 'bartag'));
    4548
    4649                return "foo = {$foo}";
    4750        }
     
    324327                $this->assertEquals('after', strip_shortcodes('[gallery]after'));
    325328                $this->assertEquals('beforeafter', strip_shortcodes('before[gallery]after'));
    326329        }
     330
     331
     332        // Store passed in shortcode_atts_{$shortcode} args
     333        function _filter_atts( $out, $pairs, $atts ) {
     334                $this->filter_atts_out = $out;
     335                $this->filter_atts_pairs = $pairs;
     336                $this->filter_atts_atts = $atts;
     337                return $out;
     338        }
     339
     340        // Filter shortcode atts in various ways
     341        function _filter_atts2( $out, $pairs, $atts ) {
     342                // If foo attribute equals "foo1", change it to be default value
     343                if ( isset( $out['foo'] ) && 'foo1' == $out['foo'] )
     344                        $out['foo'] = $pairs['foo'];
     345
     346                // If baz attribute is set, remove it
     347                if ( isset( $out['baz'] ) )
     348                        unset( $out['baz'] );
     349
     350                $this->filter_atts_out = $out;
     351                return $out;
     352        }
     353
     354        function test_shortcode_atts_filter_passes_original_arguments() {
     355                add_filter( 'shortcode_atts_bartag', array( $this, '_filter_atts' ), 10, 3 );
     356
     357                do_shortcode('[bartag foo="foo1" /]');
     358                $this->assertEquals( array( 'foo' => 'foo1', 'baz' => 'default baz' ), $this->filter_atts_out );
     359                $this->assertEquals( array( 'foo' => 'no foo', 'baz' => 'default baz' ), $this->filter_atts_pairs );
     360                $this->assertEquals( array( 'foo' => 'foo1' ), $this->filter_atts_atts );
     361
     362                remove_filter( 'shortcode_atts_bartag', array( $this, '_filter_atts' ), 10, 3 );
     363        }
     364
     365        function test_shortcode_atts_filtering() {
     366                add_filter( 'shortcode_atts_bartag', array( $this, '_filter_atts2' ), 10, 3 );
     367
     368                $out = do_shortcode('[bartag foo="foo1" baz="baz1" /]');
     369                $this->assertEquals( array( 'foo' => 'no foo' ), $this->filter_atts_out );
     370                $this->assertEquals( 'foo = no foo', $out );
     371
     372                $out = do_shortcode('[bartag foo="foo2" /]');
     373                $this->assertEquals( 'foo = foo2', $out );
     374
     375                remove_filter( 'shortcode_atts_bartag', array( $this, '_filter_atts2' ), 10, 3 );
     376        }
     377
    327378}