Changeset 12 in tests
- Timestamp:
- 09/20/2007 09:06:36 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
wp-testcase/test_includes_feed_rss2.php
r11 r12 4 4 5 5 // test the RSS 2.0 feed by generating a feed, parsing it, and checking that the 6 // contents are correct. Since we're using a real XML parser, this also ensures7 // that the feed is valid XML, and that the contents are correctly escaped and8 // encoded.6 // parsed contents match the contents of the posts stored in the database. Since 7 // we're using a real XML parser, this confirms that the feed is valid, well formed, 8 // and contains the right stuff. 9 9 10 10 class TestFeedRss2 extends _WPMediumBlog { 11 11 12 function setUp() { 13 parent::setUp(); 14 $this->post_count = get_option('posts_per_rss'); 15 $this->excerpt_only = get_option('rss_use_excerpt'); 16 // this seems to break something 17 update_option('use_smilies', false); 18 } 19 12 20 function do_rss2() { 13 21 ob_start(); 22 // nasty hack 23 global $post; 14 24 require(ABSPATH.'wp-includes/feed-rss2.php'); 15 25 $out = ob_get_clean(); … … 64 74 $this->http('/feed/'); 65 75 $feed = $this->do_rss2(); 66 $ data= xml_to_array($feed);76 $xml = xml_to_array($feed); 67 77 68 // get all the rss -> channel -> item -> title elements 69 $titles = xml_find($data, 'rss', 'channel', 'item', 'title'); 78 // get all the rss -> channel -> item elements 79 $items = xml_find($xml, 'rss', 'channel', 'item'); 80 $posts = get_posts('numberposts='.$this->post_count); 70 81 71 $this->assertEquals('post title 24', $titles[0]['content']); 72 $this->assertEquals('post title 23', $titles[1]['content']); 73 $this->assertEquals('post title 22', $titles[2]['content']); 74 $this->assertEquals('post title 21', $titles[3]['content']); 75 $this->assertEquals('post title 20', $titles[4]['content']); 76 $this->assertEquals('post title 19', $titles[5]['content']); 77 $this->assertEquals('post title 18', $titles[6]['content']); 78 $this->assertEquals('post title 17', $titles[7]['content']); 79 $this->assertEquals('post title 16', $titles[8]['content']); 80 $this->assertEquals('post title 15', $titles[9]['content']); 82 // check each of the items against the known post data 83 for ($i=0; $i < $this->post_count; $i++) { 84 85 // title 86 $title = xml_find($items[$i]['child'], 'title'); 87 $this->assertEquals($posts[$i]->post_title, $title[0]['content']); 88 89 // link 90 $link = xml_find($items[$i]['child'], 'link'); 91 $this->assertEquals(get_permalink($posts[$i]->ID), $link[0]['content']); 92 93 // comment link 94 $comments_link = xml_find($items[$i]['child'], 'comments'); 95 $this->assertEquals(get_permalink($posts[$i]->ID) . '#comments', $comments_link[0]['content']); 96 97 // pub date 98 $pubdate = xml_find($items[$i]['child'], 'pubDate'); 99 $this->assertEquals(strtotime($posts[$i]->post_date), strtotime($pubdate[0]['content'])); 100 101 // author 102 $creator = xml_find($items[$i]['child'], 'dc:creator'); 103 $this->assertEquals($this->author->user_nicename, $creator[0]['content']); 104 105 // categories (perhaps multiple) 106 $categories = xml_find($items[$i]['child'], 'category'); 107 $cat_ids = wp_get_post_categories($post->ID); 108 if (empty($cat_ids)) $cat_ids = array(1); 109 // should be the same number of categories 110 $this->assertEquals(count($cat_ids), count($categories)); 111 // ..with the same names 112 for ($j=0; $j < count($cat_ids); $j++) 113 $this->assertEquals(get_cat_name($cat_ids[$j]), $categories[$j]['content']); 114 115 // GUID 116 $guid = xml_find($items[$i]['child'], 'guid'); 117 $this->assertEquals('false', $guid[0]['attributes']['isPermaLink']); 118 $this->assertEquals($posts[$i]->guid, $guid[0]['content']); 119 120 // description/excerpt 121 $description = xml_find($items[$i]['child'], 'description'); 122 $this->assertEquals(trim($posts[$i]->post_excerpt), trim($description[0]['content'])); 123 124 // post content 125 if (!$this->excerpt_only) { 126 $content = xml_find($items[$i]['child'], 'content:encoded'); 127 $this->assertEquals(trim(apply_filters('the_content', $posts[$i]->post_content)), trim($content[0]['content'])); 128 } 129 130 // comment rss 131 $comment_rss = xml_find($items[$i]['child'], 'wfw:commentRss'); 132 $this->assertEquals(html_entity_decode(get_post_comments_feed_link($posts[$i]->ID)), $comment_rss[0]['content']); 133 } 134 81 135 } 82 136 }
Note: See TracChangeset
for help on using the changeset viewer.