WordPress.org

Make WordPress Core

Ticket #17923: 17923_unit_test.2.patch

File 17923_unit_test.2.patch, 3.4 KB (added by kurtpayne, 8 years ago)

Updated for new phpunit framework

  • tests/functions.php

     
    321321                        $this->assertEquals( "$url&foo=2", add_query_arg( array( 'foo' => '1', 'foo' => '2' ) ) );
    322322                        $this->assertEquals( "$url&foo=1&bar=2", add_query_arg( array( 'foo' => '1', 'bar' => '2' ) ) );
    323323                }
     324               
     325                $_SERVER['REQUEST_URI'] = $old_req_uri;
     326        }
    324327
     328        /**
     329         * Test that encoded URLs work when adding as an array of key=>value
     330         * @ticket 17923
     331         */
     332        public function test_add_query_arg_with_encoding() {
     333                $old_req_uri = $_SERVER['REQUEST_URI'];
     334
     335                $qs_urls = array(
     336                        '/?baz',
     337                        '/2012/07/30/?baz',
     338                        'edit.php?baz',
     339                        admin_url( 'edit.php?baz' ),
     340                        admin_url( 'edit.php?baz', 'https' ),
     341                        admin_url( 'edit.php?baz&za=1' ),
     342                        admin_url( 'edit.php?baz=1&za=1' ),
     343                        admin_url( 'edit.php?baz=0&za=0' ),
     344                );
     345                $args = array(
     346                        'p' => '456',
     347                        'q' => 'abc',
     348                        'r' => '&s',
     349                        't' => 'u&v',
     350                        'w' => '@'
     351                );
     352                $args_str = 'p=456&q=abc&r&s&t=u&v&w=@';
     353                $encoded_args_str = 'p=456&q=abc&r=%26s&t=u%26v&w=%40';
     354                foreach ( $qs_urls as $url ) {
     355                        $_SERVER['REQUEST_URI'] = $url;
     356                        $this->assertEquals( "$url&$args_str", add_query_arg( $args ) );
     357                        $this->assertEquals( "$url&$args_str", add_query_arg( $args, $url ) );
     358                        $this->assertEquals( "$url&$args_str", add_query_arg( $args, $url ) );
     359                        $this->assertEquals( "$url&$encoded_args_str", add_query_arg( $args, false, false, true ) );
     360                        $this->assertEquals( "$url&$encoded_args_str", add_query_arg( $args, $url, false, true ) );
     361                }
     362
     363                // Test that encoded URLs work when adding one-by-one
     364                $url = '/wordpress/2011/12/08/sample-post';
     365                foreach ( $args as $_k => $_v )
     366                        $url = add_query_arg( $_k, $_v, $url, true );
     367                $this->assertEquals( '/wordpress/2011/12/08/sample-post?p=456&q=abc&r=%26s&t=u%26v&w=%40', $url );
     368
     369                // Encoded URLs work (e.g. output matches rawurlencode)
     370                $url = '/wordpress/';
     371                $args = '!@#$%^&*()_+=-[]{}\|";:\',.<>/?`~';
     372                $this->assertEquals( $url . '?args=' . $args, add_query_arg('args', $args, $url) );
     373                $this->assertEquals( $url . '?args=' . rawurlencode($args), add_query_arg('args', $args, $url, true) );
     374
    325375                $_SERVER['REQUEST_URI'] = $old_req_uri;
    326376        }
     377       
     378        public function test_remove_arg() {
    327379
     380                // Arg from the end
     381                $url = '/wordpress/?p=123';
     382                $this->assertEquals( '/wordpress/', remove_query_arg('p', $url) );
     383
     384                // Arg from the middle
     385                $url = '/wordpress/?p=123&q=456&r&s';
     386                $this->assertEquals( '/wordpress/?p=123&q=456&s', remove_query_arg('r', $url) );       
     387
     388                // Multiple calls
     389                $url = '/wordpress/?p=123&q=456&r&s';
     390                $url = remove_query_arg('s', $url);
     391                $url = remove_query_arg('r', $url);
     392                $url = remove_query_arg('q', $url);
     393                $url = remove_query_arg('p', $url);
     394                $this->assertEquals( '/wordpress/', $url );     
     395       
     396                // Trailing ampersand
     397                $url = '/wordpress/?p=123&';
     398                $this->assertEquals( '/wordpress/', remove_query_arg('p', $url) );
     399               
     400                // From REQUEST_URI
     401                $old_request_uri = $_SERVER['REQUEST_URI'];
     402                $_SERVER['REQUEST_URI'] = '/wordpress/?p=123&q=456&r&s';
     403                $url = remove_query_arg('s');
     404                $url = remove_query_arg('r', $url);
     405                $url = remove_query_arg('q', $url);
     406                $url = remove_query_arg('p', $url);
     407                $this->assertEquals( '/wordpress/', $url );
     408                $_SERVER['REQUEST_URI'] = $old_request_uri;
     409        }
     410
    328411        /**
    329412         * @ticket 21594
    330413         */