WordPress.org

Make WordPress Core

Changeset 415 in tests


Ignore:
Timestamp:
08/12/2011 09:02:55 AM (7 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.