WordPress.org

Make WordPress Core

Changeset 415 in tests


Ignore:
Timestamp:
08/12/11 09:02:55 (4 years ago)
Author:
dd32
Message:

More Canonicalisation tests.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wp-testcase/test_includes_canonical.php

    r407 r415  
    55 * 
    66 * In the process of doing so, it also tests WP, WP_Rewrite and WP_Query, A fail here may show a bug in any one of these areas. 
     7 * 
    78 */ 
    89 
    910class WP_Canonical extends _WPDataset2 { 
     11 
     12    // This can be defined in a subclass of this class which contains it's own data() method, those tests will be run against the specified permastruct 
     13    var $structure = '/%year%/%monthnum%/%day%/%postname%/'; 
    1014 
    1115    function SetUp() { 
    1216        parent::SetUp(); 
    1317 
    14         update_option('permalink_structure', '/%year%/%monthnum%/%day%/%postname%/'); 
     18        update_option('permalink_structure', $this->structure); 
     19        update_option('comments_per_page', 5); 
    1520 
    1621        global $wp_rewrite; 
    17         $wp_rewrite->set_permalink_structure('/%year%/%monthnum%/%day%/%postname%/'); 
     22        $wp_rewrite->set_permalink_structure($this->structure); 
    1823        create_initial_taxonomies(); 
    19         $wp_rewrite->add_rule('ccr/(.+?)/sort/(asc|desc)', 'index.php?category_name=$matches[1]&order=$matches[2]', 'top'); // ccr = Custom_Cat_Rule 
    2024 
    2125        $wp_rewrite->flush_rules(); 
    22  
    2326    } 
    2427 
     
    99102                        Format: [0]: $test_url, 
    100103                                [1]: expected results: Any of the following can be used 
    101                                         array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite OR $_GET ); 
    102                                         array( expected query vars to be hit ) 
    103                                         (string) 'expected redirect url' 
     104                                        array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET ); 
     105                                        array( expected query vars to be set, same as 'qv' above ) 
     106                                        (string) expected redirect location 
    104107                                [3]: (optional) The ticket the test refers to, Can be skipped if unknown. 
    105                                         */ 
     108                    */ 
     109 
     110                // Please Note: A few test cases are commented out below, Look at the test case following it, in most cases it's simple showing 2 options for the "proper" redirect. 
     111 
    106112                // Categories 
     113                array( '?cat=32', '/category/parent/', 15256 ), 
     114                array( '?cat=50', '/category/parent/child-1/', 15256 ), 
     115                array( '?cat=51', '/category/parent/child-1/child-2/' ), // no children 
    107116                array( '/category/uncategorized/', array( 'url' => '/category/uncategorized/', 'qv' => array( 'category_name' => 'uncategorized' ) ) ), 
    108117                array( '/category/uncategorized/page/2/', array( 'url' => '/category/uncategorized/page/2/', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2) ) ), 
     
    116125                // Categories with Dates 
    117126                array( '/category/uncategorized/?paged=2&year=2008', array( 'url' => '/category/uncategorized/page/2/?year=2008', 'qv' => array( 'category_name' => 'uncategorized', 'paged' => 2, 'year' => 2008) ), 17661 ), 
    118                 array( '/2008/04/?cat=1', array( 'url' => '/2008/04/?cat=1', 'qv' => array('cat' => '1', 'year' => '2008', 'monthnum' => '04' ) ), 17661 ), 
    119                 array( '/2008/?category_name=cat-a', array( 'url' => '/2008/?category_name=cat-a', 'qv' => array('category_name' => 'cat-a', 'year' => '2008' ) ), 17661 ), 
    120                 array( '/category/uncategorized/?year=2008', array( 'url' => '/2008/?category_name=uncategorized', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008' ) ), 17661 ), 
    121  
    122                 // Custom Rewrite rules leading to Categories 
    123                 array( '/ccr/uncategorized/sort/asc/', array( 'url' => '/ccr/uncategorized/sort/asc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'asc' ) ) ), 
    124                 array( '/ccr/uncategorized/sort/desc/', array( 'url' => '/ccr/uncategorized/sort/desc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc' ) ) ), 
    125                 array( '/ccr/uncategorized/sort/desc/?year=2008', array( 'url' => '/ccr/uncategorized/sort/desc/?year=2008', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc', 'year' => '2008' ) ), 17661 ), 
     127//              array( '/2008/04/?cat=1', array( 'url' => '/2008/04/?cat=1', 'qv' => array('cat' => '1', 'year' => '2008', 'monthnum' => '04' ) ), 17661 ), 
     128                array( '/2008/04/?cat=1', array( 'url' => '/category/uncategorized/?year=2008&monthnum=04', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008', 'monthnum' => '04' ) ), 17661 ), 
     129//              array( '/2008/?category_name=cat-a', array( 'url' => '/2008/?category_name=cat-a', 'qv' => array('category_name' => 'cat-a', 'year' => '2008' ) ) ), 
     130                array( '/2008/?category_name=cat-a', array( 'url' => '/category/cat-a/?year=2008', 'qv' => array('category_name' => 'cat-a', 'year' => '2008' ) ) ), 
     131//              array( '/category/uncategorized/?year=2008', array( 'url' => '/2008/?category_name=uncategorized', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008' ) ), 17661 ), 
     132                array( '/category/uncategorized/?year=2008', array( 'url' => '/category/uncategorized/?year=2008', 'qv' => array('category_name' => 'uncategorized', 'year' => '2008' ) ), 17661 ), 
     133 
     134                // Tags 
     135                array( '?tag_ID=56', '/tag/crushing/'), 
    126136 
    127137                // Pages 
     
    149159                array( '/2008/09/03/images-te?page=3', '/2008/09/03/images-test/3/' ), 
    150160 
     161                // Comments 
     162                array( '/2008/03/03/comment-test/?cpage=2', '/2008/03/03/comment-test/comment-page-2/'), 
     163                array( '/2008/03/03/comment-test/comment-page-20/', '/2008/03/03/comment-test/comment-page-3/'), // there's only 3 pages 
     164                array( '/2008/03/03/comment-test/?cpage=30', '/2008/03/03/comment-test/comment-page-3/'), // there's only 3 pages 
     165 
    151166                // Attachments 
    152167                array( '/?attachment_id=611', '/2008/06/10/post-format-test-gallery/canola2/' ), 
     
    158173                array( '/?m=200809', '/2008/09/'), 
    159174                array( '/?m=20080905', '/2008/09/05/'), 
    160                 array( '/?m=2008095', '/2008/09/'), // Invalid date, /09/ or /09/05/ perhaps? 
     175                array( '/?m=2008095', '/2008/09/05/'), // Invalid date, /09/ or /09/05/ perhaps? 
    161176 
    162177                array( '/2008/?day=05', '/2008/?day=05'), // no redirect 
     
    168183                // Authors 
    169184                array( '/?author=3', '/author/chip-bennett/' ), 
    170                 array( '/?author=3&year=2008', '/2008/?author=3'), 
    171                 array( '/author/chip-bennett/?year=2008', '/2008/?author=3'), //Either or, see previous testcase. 
     185//              array( '/?author=3&year=2008', '/2008/?author=3'), 
     186                array( '/?author=3&year=2008', '/author/chip-bennett/?year=2008'), 
     187//              array( '/author/chip-bennett/?year=2008', '/2008/?author=3'), //Either or, see previous testcase. 
     188                array( '/author/chip-bennett/?year=2008', '/author/chip-bennett/?year=2008'), 
     189 
     190                // Feeds 
     191                array( '/?feed=atom', '/feed/atom/' ), 
     192                array( '/?feed=rss2', '/feed/' ), 
     193                array( '/?feed=comments-rss2', '/comments/feed/'), 
     194                array( '/?feed=comments-atom', '/comments/feed/atom/'), 
     195 
     196                // Feeds (per-post) 
     197                array( '/2008/03/03/comment-test/?feed=comments-atom', '/2008/03/03/comment-test/feed/atom/'), 
     198                array( '/?p=149&feed=comments-atom', '/2008/03/03/comment-test/comments/feed/atom/'), 
     199                array( '/2008/03/03/comment-test/?feed=comments-atom', '/2008/03/03/comment-test/comments/feed/atom/' ), // Incorrect URL to an invalid URL? 
     200 
     201                // Misc 
     202                array( '/2008%20', '/2008/' ), 
     203                array( '//2008////', '/2008/' ), 
    172204 
    173205                // Todo: Endpoints (feeds, trackbacks, etc), More fuzzed mixed query variables, comment paging, Home page (Static) 
     
    177209 
    178210} 
     211 
     212class WP_Canonical_CustomRules extends WP_Canonical { 
     213    function SetUp() { 
     214        global $wp_rewrite; 
     215        parent::SetUp(); 
     216        // Add a custom Rewrite rule to test category redirections. 
     217        $wp_rewrite->add_rule('ccr/(.+?)/sort/(asc|desc)', 'index.php?category_name=$matches[1]&order=$matches[2]', 'top'); // ccr = Custom_Cat_Rule 
     218        $wp_rewrite->flush_rules(); 
     219    } 
     220 
     221    function data() { 
     222        return array( /* 
     223                        Format: [0]: $test_url, 
     224                                [1]: expected results: Any of the following can be used 
     225                                        array( 'url': expected redirection location, 'qv': expected query vars to be set via the rewrite AND $_GET ); 
     226                                        array( expected query vars to be set, same as 'qv' above ) 
     227                                        (string) expected redirect location 
     228                                [3]: (optional) The ticket the test refers to, Can be skipped if unknown. 
     229                    */ 
     230                // Custom Rewrite rules leading to Categories 
     231                array( '/ccr/uncategorized/sort/asc/', array( 'url' => '/ccr/uncategorized/sort/asc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'asc' ) ) ), 
     232                array( '/ccr/uncategorized/sort/desc/', array( 'url' => '/ccr/uncategorized/sort/desc/', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc' ) ) ), 
     233                array( '/ccr/uncategorized/sort/desc/?year=2008', array( 'url' => '/ccr/uncategorized/sort/desc/?year=2008', 'qv' => array( 'category_name' => 'uncategorized', 'order' => 'desc', 'year' => '2008' ) ), 17661 ), 
     234                ); 
     235    } 
     236} 
     237 
     238class WP_Canonical_NoRewrite extends WP_Canonical { 
     239     
     240    var $structure = ''; 
     241 
     242    // These test cases are run against the test handler in WP_Canonical 
     243 
     244    function data() { 
     245        return array( /* 
     246                        Format: [0]: $test_url, 
     247                                [1]: expected results: Any of the following can be used 
     248                                        array( 'url': expected redirection location, 'qv': expected query vars to be set via $_GET ); 
     249                                        array( expected query vars to be set, same as 'qv' above ) 
     250                                        (string) expected redirect location 
     251                                [3]: (optional) The ticket the test refers to, Can be skipped if unknown. 
     252                    */ 
     253 
     254                array( '/?p=123', '/?p=123' ), 
     255 
     256                array( '/?p=358 ', array('url' => '/?p=358',  'qv' => array('p' => '358') ) ), // Trailing spaces 
     257                array( '/?p=358%20', array('url' => '/?p=358',  'qv' => array('p' => '358') ) ), 
     258 
     259                // These Date rules use ?m= as the redirect as that's the style of Link WordPress creates for date based archives 
     260                array( '/?&year=2008', '/?m=2008' ), // Extra & 
     261                array( '/?year=2008&cat=', '/?m=2008' ), // Empty qv 
     262                array( '/?year=2008&cat=&monthnum=09', '/?m=200809' ), // Empty qv 
     263                array( '/?year=2008&monthnum=05', '/?m=200805' ), 
     264 
     265                array( '/?page_id=1', '/?p=1' ), // redirect page_id to p (should cover page_id|p|attachment_id to one another 
     266                array( '/?page_id=1&post_type=revision', '/?p=1' ), 
     267 
     268            ); 
     269    } 
     270} 
Note: See TracChangeset for help on using the changeset viewer.