WordPress.org

Make WordPress Core

Ticket #17923: 17923_unit_test.patch

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

Unit test for add_query_arg and remove_query_arg

  • wp-testcase/test_includes_functions.php

     
    430430        } 
    431431} 
    432432 
     433class TestQueryArgs extends WPTestCase { 
     434 
     435        private $_backup_request_uri = ''; 
     436 
     437        public function setup(){ 
     438                $this->_backup_request_uri = $_SERVER['REQUEST_URI']; 
     439        } 
     440         
     441        public function teardown() { 
     442                $_SERVER['REQUEST_URI'] = $this->_backup_request_uri; 
     443        } 
     444 
     445        public function test_array_usage() { 
     446                $urls = array( 
     447                        '/wordpress/?p=123'                 => '/wordpress/?p=456&q=abc&r&s&t=u&v&w=@', 
     448                        '/wordpress/2011/12/08/sample-post' => '/wordpress/2011/12/08/sample-post?p=456&q=abc&r&s&t=u&v&w=@', 
     449                ); 
     450                $encode_urls = array( 
     451                        '/wordpress/?p=123'                 => '/wordpress/?p=456&q=abc&r=%26s&t=u%26v&w=%40', 
     452                        '/wordpress/2011/12/08/sample-post' => '/wordpress/2011/12/08/sample-post?p=456&q=abc&r=%26s&t=u%26v&w=%40', 
     453                ); 
     454                $args = array( 
     455                        'p' => '456', 
     456                        'q' => 'abc', 
     457                        'r' => '&s', 
     458                        't' => 'u&v', 
     459                        'w' => '@' 
     460                ); 
     461                foreach ( $urls as $k => $v ) { 
     462                        $_SERVER['REQUEST_URI'] = $k; 
     463                        $this->assertEquals( $v, add_query_arg( $args ) ); 
     464                } 
     465                foreach ( $encode_urls as $k => $v ) { 
     466                        $_SERVER['REQUEST_URI'] = $k; 
     467                        $this->assertEquals( $v, add_query_arg( $args, false, false, true ) ); 
     468                } 
     469        } 
     470 
     471        public function test_key_value_usage() { 
     472                $urls = array( 
     473                        '/wordpress/?p=123'                 => '/wordpress/?p=456&q=abc&r&s&t=u&v&w=@', 
     474                        '/wordpress/2011/12/08/sample-post' => '/wordpress/2011/12/08/sample-post?p=456&q=abc&r&s&t=u&v&w=@', 
     475                ); 
     476                $encode_urls = array( 
     477                        '/wordpress/?p=123'                 => '/wordpress/?p=456&q=abc&r=%26s&t=u%26v&w=%40', 
     478                        '/wordpress/2011/12/08/sample-post' => '/wordpress/2011/12/08/sample-post?p=456&q=abc&r=%26s&t=u%26v&w=%40', 
     479                ); 
     480                $args = array( 
     481                        'p' => '456', 
     482                        'q' => 'abc', 
     483                        'r' => '&s', 
     484                        't' => 'u&v', 
     485                        'w' => '@' 
     486                ); 
     487                foreach ( $urls as $k => $v ) { 
     488                        $url = $k; 
     489                        foreach ( $args as $_k => $_v ) 
     490                                $url = add_query_arg( $_k, $_v, $url ); 
     491                        $this->assertEquals( $v, $url ); 
     492                } 
     493                foreach ( $encode_urls as $k => $v ) { 
     494                        $url = $k; 
     495                        foreach ( $args as $_k => $_v ) 
     496                                $url = add_query_arg( $_k, $_v, $url, true ); 
     497                        $this->assertEquals( $v, $url ); 
     498                } 
     499        } 
     500         
     501        public function test_encoding() { 
     502                $url = '/wordpress/'; 
     503                $args = '!@#$%^&*()_+=-[]{}\|";:\',.<>/?`~'; 
     504                $this->assertEquals( $url . '?args=' . $args, add_query_arg('args', $args, $url) ); 
     505                $this->assertEquals( $url . '?args=' . rawurlencode($args), add_query_arg('args', $args, $url, true) ); 
     506        } 
     507 
     508        public function test_remove_arg() { 
     509 
     510                // Arg from the end 
     511                $url = '/wordpress/?p=123'; 
     512                $this->assertEquals( '/wordpress/', remove_query_arg('p', $url) ); 
     513 
     514                // Arg from the middle 
     515                $url = '/wordpress/?p=123&q=456&r&s'; 
     516                $this->assertEquals( '/wordpress/?p=123&q=456&s', remove_query_arg('r', $url) );         
     517 
     518                // Multiple calls 
     519                $url = '/wordpress/?p=123&q=456&r&s'; 
     520                $url = remove_query_arg('s', $url); 
     521                $url = remove_query_arg('r', $url); 
     522                $url = remove_query_arg('q', $url); 
     523                $url = remove_query_arg('p', $url); 
     524                $this->assertEquals( '/wordpress/', $url );      
     525         
     526                // Trailing ampersand 
     527                $url = '/wordpress/?p=123&'; 
     528                $this->assertEquals( '/wordpress/', remove_query_arg('p', $url) ); 
     529        } 
     530} 
     531 
    433532?>