WordPress.org

Make WordPress Core

Ticket #17923: 17923_unit_test.2.patch

File 17923_unit_test.2.patch, 3.4 KB (added by kurtpayne, 15 months 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         */