Make WordPress Core

Changeset 127 in tests for wp-testcase/test_query.php


Ignore:
Timestamp:
12/07/2007 01:06:22 AM (19 years ago)
Author:
tellyworth
Message:

many more query tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wp-testcase/test_query.php

    r111 r127  
    22
    33// test the is_*() functions in query.php across the URL structure
     4
     5// this exercises both query.php and rewrite.php: urls are fed through the rewrite code,
     6// then we test the effects of each url on the wp_query object.
    47
    58class TestWPQuery extends _WPDataset1 {
     
    2023                parent::tearDown();
    2124        }
     25
     26        function _get_post_id_by_name($name) {
     27                global $wpdb;
     28                $name = $wpdb->escape($name);
     29                $page_id = $wpdb->get_var("SELECT ID from {$wpdb->posts} WHERE post_name = '{$name}' LIMIT 1");
     30                assert(is_numeric($page_id));
     31                return $page_id;
     32        }
     33
    2234
    2335        // this will check each of the wp_query is_* functions/properties
     
    6678        }
    6779
    68         function test_main_feed() {
    69 
    70                 $types = array('rss2', 'rss', 'atom');
    71                 foreach ($types as $type) {
    72                         $this->http(get_feed_link($type));
    73                         $this->assertQueryTrue('is_feed');
    74                 }
    75         }
    76 
    7780        function test_post_comments_feed() {
    7881                $this->http(get_post_comments_feed_link($this->_get_post_id_by_name('hello-world')));
    7982
    8083                $this->assertQueryTrue('is_feed', 'is_single', 'is_singular', 'is_comment_feed');
    81         }
    82 
    83         function _get_post_id_by_name($name) {
    84                 global $wpdb;
    85                 $name = $wpdb->escape($name);
    86                 $page_id = $wpdb->get_var("SELECT ID from {$wpdb->posts} WHERE post_name = '{$name}' LIMIT 1");
    87                 assert(is_numeric($page_id));
    88                 return $page_id;
    8984        }
    9085
     
    117112        }
    118113       
     114        // '(about)/trackback/?$' => 'index.php?pagename=$matches[1]&tb=1'
    119115        function test_page_trackback() {
    120                 $pages = array('about', 'lorem-ipsum', 'parent-page', 'parent-page/child-page-1', 'parent-page/child-page-1/child-page-2');
    121                 foreach ($pages as $page) {
    122                         $this->http("/{$page}/trackback/");
    123                
     116                $pages = array('about', 'lorem-ipsum', 'parent-page', 'child-page-1', 'child-page-2');
     117                foreach ($pages as $name) {
     118                        $page_id = $this->_get_post_id_by_name($name);
     119                        $url = get_permalink($page_id);
     120                        $this->http("{$url}trackback/");
     121               
     122                        // make sure the correct wp_query flags are set
    124123                        $this->assertQueryTrue('is_page', 'is_trackback');
    125                 }
    126         }
    127        
     124                       
     125                        // make sure the correct page was fetched
     126                        global $wp_query;
     127                        $this->assertEquals( $page_id, $wp_query->get_queried_object()->ID );
     128                }
     129        }
     130       
     131        //'(about)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?pagename=$matches[1]&feed=$matches[2]'
    128132        function test_page_feed() {
    129                 $pages = array('about', 'lorem-ipsum', 'parent-page', 'parent-page/child-page-1', 'parent-page/child-page-1/child-page-2');
    130                 foreach ($pages as $page) {
    131                         $this->http("/{$page}/feed/");
    132                
     133                $pages = array('about', 'lorem-ipsum', 'parent-page', 'child-page-1', 'child-page-2');
     134                foreach ($pages as $name) {
     135                        $page_id = $this->_get_post_id_by_name($name);
     136                        $url = get_permalink($page_id);
     137                        $this->http("{$url}feed/");
     138               
     139                        // make sure the correct wp_query flags are set
    133140                        $this->assertQueryTrue('is_page', 'is_feed', 'is_comment_feed');
    134                 }
    135         }
    136 
     141                       
     142                        // make sure the correct page was fetched
     143                        global $wp_query;
     144                        $this->assertEquals( $page_id, $wp_query->get_queried_object()->ID );
     145                }
     146
     147        }
     148
     149        // '(about)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?pagename=$matches[1]&feed=$matches[2]'
    137150        function test_page_feed_atom() {
    138                 $pages = array('about', 'lorem-ipsum', 'parent-page', 'parent-page/child-page-1', 'parent-page/child-page-1/child-page-2');
    139                 foreach ($pages as $page) {
    140                         $this->http("/{$page}/feed/atom/");
    141                
     151                $pages = array('about', 'lorem-ipsum', 'parent-page', 'child-page-1', 'child-page-2');
     152                foreach ($pages as $name) {
     153                        $page_id = $this->_get_post_id_by_name($name);
     154                        $url = get_permalink($page_id);
     155                        $this->http("{$url}feed/atom/");
     156               
     157                        // make sure the correct wp_query flags are set
    142158                        $this->assertQueryTrue('is_page', 'is_feed', 'is_comment_feed');
    143                 }
    144         }
    145        
     159                       
     160                        // make sure the correct page was fetched
     161                        global $wp_query;
     162                        $this->assertEquals( $page_id, $wp_query->get_queried_object()->ID );
     163                }
     164        }
     165
     166        // '(about)/page/?([0-9]{1,})/?$' => 'index.php?pagename=$matches[1]&paged=$matches[2]'
    146167        function test_page_page_2() {
    147                 $pages = array('about', 'lorem-ipsum', 'parent-page', 'parent-page/child-page-1', 'parent-page/child-page-1/child-page-2');
    148                 foreach ($pages as $page) {
    149                         $this->http("/{$page}/page/2/");
    150                
     168                $pages = array('about', 'lorem-ipsum', 'parent-page', 'child-page-1', 'child-page-2');
     169                foreach ($pages as $name) {
     170                        $page_id = $this->_get_post_id_by_name($name);
     171                        $url = get_permalink($page_id);
     172                        $this->http("{$url}page/2/");
     173               
     174                        // make sure the correct wp_query flags are set
    151175                        $this->assertQueryTrue('is_page', 'is_paged');
    152                 }
    153         }
    154 
     176                       
     177                        // make sure the correct page was fetched
     178                        global $wp_query;
     179                        $this->assertEquals( $page_id, $wp_query->get_queried_object()->ID );
     180                }
     181        }
     182
     183        // FIXME: what is this for?
     184        // '(about)(/[0-9]+)?/?$' => 'index.php?pagename=$matches[1]&page=$matches[2]'
    155185        function test_page_page_2_short() {
    156186                return $this->markTestSkipped();
     
    161191        }
    162192       
    163        
     193        // FIXME: no tests for these yet
     194        // 'about/attachment/([^/]+)/?$' => 'index.php?attachment=$matches[1]',
     195        // 'about/attachment/([^/]+)/trackback/?$' => 'index.php?attachment=$matches[1]&tb=1',
     196        // 'about/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?attachment=$matches[1]&feed=$matches[2]',
     197        // 'about/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?attachment=$matches[1]&feed=$matches[2]',
     198
     199        // 'feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?&feed=$matches[1]',
     200        // '(feed|rdf|rss|rss2|atom)/?$' => 'index.php?&feed=$matches[1]',
     201        function test_main_feed_2() {
     202                $feeds = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     203               
     204                // long version
     205                foreach ($feeds as $feed) {
     206                        $this->http("/feed/{$feed}/");
     207                       
     208                        $this->assertQueryTrue('is_feed');
     209                }
     210               
     211                // short version
     212                foreach ($feeds as $feed) {
     213                        $this->http("/{$feed}/");
     214                       
     215                        $this->assertQueryTrue('is_feed');
     216                }
     217               
     218        }
     219       
     220        function test_main_feed() {
     221
     222                $types = array('rss2', 'rss', 'atom');
     223                foreach ($types as $type) {
     224                        $this->http(get_feed_link($type));
     225                        $this->assertQueryTrue('is_feed');
     226                }
     227        }
     228
     229       
     230        // 'page/?([0-9]{1,})/?$' => 'index.php?&paged=$matches[1]',
     231        function test_paged() {
     232                for ($i=1; $i<4; $i++) {
     233                        $this->http("/page/{$i}/");
     234                        $this->assertQueryTrue('is_home', 'is_paged');
     235                }
     236        }
     237       
     238        // 'comments/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?&feed=$matches[1]&withcomments=1',
     239        // 'comments/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?&feed=$matches[1]&withcomments=1',
     240        function test_main_comments_feed() {
     241                // check the url as generated by get_post_comments_feed_link()
     242                $this->http(get_post_comments_feed_link($this->_get_post_id_by_name('hello-world')));
     243                $this->assertQueryTrue('is_feed', 'is_single', 'is_singular', 'is_comment_feed');
     244               
     245                // check the long form
     246                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     247                foreach ($types as $type) {
     248                                $this->http("/comments/feed/{$type}");
     249                                $this->assertQueryTrue('is_feed', 'is_comment_feed');
     250                }
     251
     252                // check the short form
     253                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     254                foreach ($types as $type) {
     255                                $this->http("/comments/{$type}");
     256                                $this->assertQueryTrue('is_feed', 'is_comment_feed');
     257                }
     258
     259        }
     260
     261        // 'comments/page/?([0-9]{1,})/?$' => 'index.php?&paged=$matches[1]',
     262        // FIXME: what is this used for?
     263        function test_comments_page() {
     264                $this->http('/comments/page/2/');
     265                $this->assertQueryTrue('is_home', 'is_paged');
     266        }
     267       
     268       
     269        // 'search/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?s=$matches[1]&feed=$matches[2]',
     270        // 'search/(.+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?s=$matches[1]&feed=$matches[2]',
     271        function test_search_feed() {
     272                // check the long form
     273                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     274                foreach ($types as $type) {
     275                                $this->http("/search/test/feed/{$type}");
     276                                $this->assertQueryTrue('is_feed', 'is_search');
     277                }
     278
     279                // check the short form
     280                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     281                foreach ($types as $type) {
     282                                $this->http("/search/test/{$type}");
     283                                $this->assertQueryTrue('is_feed', 'is_search');
     284                }
     285        }
     286       
     287        // 'search/(.+)/page/?([0-9]{1,})/?$' => 'index.php?s=$matches[1]&paged=$matches[2]',
     288        function test_search_paged() {
     289                $this->http('/search/test/page/2/');
     290                $this->assertQueryTrue('is_search', 'is_paged');
     291        }
     292       
     293        // 'search/(.+)/?$' => 'index.php?s=$matches[1]',
     294        function test_search() {
     295                $this->http('/search/test/');
     296                $this->assertQueryTrue('is_search');
     297        }
     298       
     299        // 'category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?category_name=$matches[1]&feed=$matches[2]',
     300        // 'category/(.+?)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?category_name=$matches[1]&feed=$matches[2]',
     301        function test_category_feed() {
     302                // check the long form
     303                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     304                foreach ($types as $type) {
     305                                $this->http("/category/cat-a/feed/{$type}");
     306                                $this->assertQueryTrue('is_archive', 'is_feed', 'is_category');
     307                }
     308
     309                // check the short form
     310                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     311                foreach ($types as $type) {
     312                                $this->http("/category/cat-a/{$type}");
     313                                $this->assertQueryTrue('is_archive', 'is_feed', 'is_category');
     314                }
     315        }
     316       
     317        // 'category/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?category_name=$matches[1]&paged=$matches[2]',
     318        function test_category_paged() {
     319                $this->http('/category/cat-a/page/2/');
     320                $this->assertQueryTrue('is_archive', 'is_category', 'is_paged');
     321        }
     322       
     323        // 'category/(.+?)/?$' => 'index.php?category_name=$matches[1]',
     324        function test_category() {
     325                $this->http('/category/cat-a/');
     326                $this->assertQueryTrue('is_archive', 'is_category');
     327        }
     328       
     329        // 'tag/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?tag=$matches[1]&feed=$matches[2]',
     330        // 'tag/(.+?)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?tag=$matches[1]&feed=$matches[2]',
     331        function test_tag_feed() {
     332                // check the long form
     333                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     334                foreach ($types as $type) {
     335                                $this->http("/tag/tag-a/feed/{$type}");
     336                                $this->assertQueryTrue('is_archive', 'is_feed', 'is_tag');
     337                }
     338
     339                // check the short form
     340                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     341                foreach ($types as $type) {
     342                                $this->http("/tag/tag-a/{$type}");
     343                                $this->assertQueryTrue('is_archive', 'is_feed', 'is_tag');
     344                }
     345        }
     346       
     347        // 'tag/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?tag=$matches[1]&paged=$matches[2]',
     348        function test_tag_paged() {
     349                $this->http('/tag/tag-a/page/2/');
     350                $this->assertQueryTrue('is_archive', 'is_tag', 'is_paged');
     351        }
     352       
     353        // 'tag/(.+?)/?$' => 'index.php?tag=$matches[1]',
     354        function test_tag() {
     355                $this->http('/tag/tag-a/');
     356                $this->assertQueryTrue('is_archive', 'is_tag');
     357        }
     358       
     359        // 'author/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?author_name=$matches[1]&feed=$matches[2]',
     360        // 'author/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?author_name=$matches[1]&feed=$matches[2]',
     361        function test_author_feed() {
     362                // check the long form
     363                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     364                foreach ($types as $type) {
     365                                $this->http("/author/user-a/feed/{$type}");
     366                                $this->assertQueryTrue('is_archive', 'is_feed', 'is_author');
     367                }
     368
     369                // check the short form
     370                $types = array('feed', 'rdf', 'rss', 'rss2', 'atom');
     371                foreach ($types as $type) {
     372                                $this->http("/author/user-a/{$type}");
     373                                $this->assertQueryTrue('is_archive', 'is_feed', 'is_author');
     374                }
     375        }
     376
     377        // 'author/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?author_name=$matches[1]&paged=$matches[2]',
     378        function test_author_paged() {
     379                $this->http('/author/user-a/page/2/');
     380                $this->assertQueryTrue('is_archive', 'is_author', 'is_paged');
     381        }
     382       
     383        // 'author/([^/]+)/?$' => 'index.php?author_name=$matches[1]',
     384        function test_author() {
     385                $this->http('/author/user-a/');
     386                $this->assertQueryTrue('is_archive', 'is_author');
     387        }
     388       
     389
     390        // '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]',
     391        // '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]',
     392        // '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/page/?([0-9]{1,})/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&paged=$matches[4]',
     393        // '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]',
     394        // '([0-9]{4})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]',
     395        // '([0-9]{4})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]',
     396        // '([0-9]{4})/([0-9]{1,2})/page/?([0-9]{1,})/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&paged=$matches[3]',
     397        // '([0-9]{4})/([0-9]{1,2})/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]',
     398        // '([0-9]{4})/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?year=$matches[1]&feed=$matches[2]',
     399        // '([0-9]{4})/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?year=$matches[1]&feed=$matches[2]',
     400        // '([0-9]{4})/page/?([0-9]{1,})/?$' => 'index.php?year=$matches[1]&paged=$matches[2]',
     401        // '([0-9]{4})/?$' => 'index.php?year=$matches[1]',
     402        // '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/trackback/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&tb=1',
     403        // '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&feed=$matches[5]',
     404        // '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&feed=$matches[5]',
     405        // '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/page/?([0-9]{1,})/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&paged=$matches[5]',
     406        // '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)(/[0-9]+)?/?$' => 'index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&page=$matches[5]',
     407        // '[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/?$' => 'index.php?attachment=$matches[1]',
     408        // '[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/trackback/?$' => 'index.php?attachment=$matches[1]&tb=1',
     409        // '[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?attachment=$matches[1]&feed=$matches[2]',
     410        // '[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?attachment=$matches[1]&feed=$matches[2]',
     411        // '[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/?$' => 'index.php?attachment=$matches[1]',
     412        // '[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/trackback/?$' => 'index.php?attachment=$matches[1]&tb=1',
     413        // '[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?attachment=$matches[1]&feed=$matches[2]',
     414        // '[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?attachment=$matches[1]&feed=$matches[2]',
     415        //
     416
     417               
    164418}
    165419
Note: See TracChangeset for help on using the changeset viewer.