1 | <?php |
---|
2 | module_load_include('test', 'feeds', 'tests/feeds'); |
---|
3 | |
---|
4 | /** |
---|
5 | * @file |
---|
6 | * Tests for plugins/FeedsSitemapParser.inc |
---|
7 | */ |
---|
8 | |
---|
9 | /** |
---|
10 | * Test Sitemap parser. |
---|
11 | */ |
---|
12 | class FeedsSitemapParserTestCase extends FeedsWebTestCase { |
---|
13 | public static function getInfo() { |
---|
14 | return array( |
---|
15 | 'name' => 'Sitemap parser', |
---|
16 | 'description' => 'Regression tests for Sitemap XML format parser.', |
---|
17 | 'group' => 'Feeds', |
---|
18 | ); |
---|
19 | } |
---|
20 | |
---|
21 | /** |
---|
22 | * Run tests. |
---|
23 | */ |
---|
24 | public function test() { |
---|
25 | $this->createImporterConfiguration('Sitemap', 'sitemap'); |
---|
26 | $this->setPlugin('sitemap', 'FeedsSitemapParser'); |
---|
27 | |
---|
28 | $this->addMappings('sitemap', |
---|
29 | array( |
---|
30 | array( |
---|
31 | 'source' => 'changefreq', |
---|
32 | 'target' => 'title', |
---|
33 | 'unique' => FALSE, |
---|
34 | ), |
---|
35 | array( |
---|
36 | 'source' => 'priority', |
---|
37 | 'target' => 'body', |
---|
38 | 'unique' => FALSE, |
---|
39 | ), |
---|
40 | array( |
---|
41 | 'source' => 'lastmod', |
---|
42 | 'target' => 'created', |
---|
43 | 'unique' => FALSE, |
---|
44 | ), |
---|
45 | array( |
---|
46 | 'source' => 'url', |
---|
47 | 'target' => 'url', |
---|
48 | 'unique' => TRUE, |
---|
49 | ), |
---|
50 | array( |
---|
51 | 'source' => 'url', |
---|
52 | 'target' => 'guid', |
---|
53 | 'unique' => TRUE, |
---|
54 | ), |
---|
55 | ) |
---|
56 | ); |
---|
57 | |
---|
58 | |
---|
59 | $path = $GLOBALS['base_url'] .'/'. drupal_get_path('module', 'feeds') .'/tests/feeds/'; |
---|
60 | $nid = $this->createFeedNode('sitemap', $path .'sitemap-example.xml', 'Testing Sitemap Parser'); |
---|
61 | $this->assertText('Created 5 Story nodes.'); |
---|
62 | |
---|
63 | // Assert DB status. |
---|
64 | $count = db_result(db_query("SELECT COUNT(*) FROM {feeds_node_item}")); |
---|
65 | $this->assertEqual($count, 5, 'Accurate number of items in database.'); |
---|
66 | |
---|
67 | // Check items against known content of feed. |
---|
68 | $result = db_query('SELECT * FROM {feeds_node_item} WHERE feed_nid = %d ORDER BY nid', $nid); |
---|
69 | |
---|
70 | // Check first item. |
---|
71 | date_default_timezone_set('GMT'); |
---|
72 | $item = db_fetch_object($result); |
---|
73 | $node = node_load($item->nid); |
---|
74 | $this->assertEqual($node->title, 'monthly', 'Feed item 1 changefreq is correct.'); |
---|
75 | $this->assertEqual($node->body, '0.8', 'Feed item 1 priority is correct.'); |
---|
76 | $this->assertEqual($node->created, strtotime('2005-01-01'), 'Feed item 1 lastmod is correct.'); |
---|
77 | $this->assertEqual($node->feeds_node_item->url, 'http://www.example.com/', 'Feed item 1 url is correct.'); |
---|
78 | $this->assertEqual($node->feeds_node_item->url, $node->feeds_node_item->guid, 'Feed item 1 guid is correct.'); |
---|
79 | |
---|
80 | // Check second item. |
---|
81 | $item = db_fetch_object($result); |
---|
82 | $node = node_load($item->nid); |
---|
83 | $this->assertEqual($node->title, 'weekly', 'Feed item 2 changefreq is correct.'); |
---|
84 | $this->assertEqual($node->body, '', 'Feed item 2 priority is correct.'); |
---|
85 | // $node->created is... recently |
---|
86 | $this->assertEqual($node->feeds_node_item->url, 'http://www.example.com/catalog?item=12&desc=vacation_hawaii', 'Feed item 2 url is correct.'); |
---|
87 | $this->assertEqual($node->feeds_node_item->url, $node->feeds_node_item->guid, 'Feed item 2 guid is correct.'); |
---|
88 | |
---|
89 | // Check third item. |
---|
90 | $item = db_fetch_object($result); |
---|
91 | $node = node_load($item->nid); |
---|
92 | $this->assertEqual($node->title, 'weekly', 'Feed item 3 changefreq is correct.'); |
---|
93 | $this->assertEqual($node->body, '', 'Feed item 3 priority is correct.'); |
---|
94 | $this->assertEqual($node->created, strtotime('2004-12-23'), 'Feed item 3 lastmod is correct.'); |
---|
95 | $this->assertEqual($node->feeds_node_item->url, 'http://www.example.com/catalog?item=73&desc=vacation_new_zealand', 'Feed item 3 url is correct.'); |
---|
96 | $this->assertEqual($node->feeds_node_item->url, $node->feeds_node_item->guid, 'Feed item 3 guid is correct.'); |
---|
97 | |
---|
98 | // Check fourth item. |
---|
99 | $item = db_fetch_object($result); |
---|
100 | $node = node_load($item->nid); |
---|
101 | $this->assertEqual($node->title, '', 'Feed item 4 changefreq is correct.'); |
---|
102 | $this->assertEqual($node->body, '0.3', 'Feed item 4 priority is correct.'); |
---|
103 | $this->assertEqual($node->created, strtotime('2004-12-23T18:00:15+00:00'), 'Feed item 4 lastmod is correct.'); |
---|
104 | $this->assertEqual($node->feeds_node_item->url, 'http://www.example.com/catalog?item=74&desc=vacation_newfoundland', 'Feed item 4 url is correct.'); |
---|
105 | $this->assertEqual($node->feeds_node_item->url, $node->feeds_node_item->guid, 'Feed item 1 guid is correct.'); |
---|
106 | |
---|
107 | // Check fifth item. |
---|
108 | $item = db_fetch_object($result); |
---|
109 | $node = node_load($item->nid); |
---|
110 | $this->assertEqual($node->title, '', 'Feed item 5 changefreq is correct.'); |
---|
111 | $this->assertEqual($node->body, '', 'Feed item 5 priority is correct.'); |
---|
112 | $this->assertEqual($node->created, strtotime('2004-11-23'), 'Feed item 5 lastmod is correct.'); |
---|
113 | $this->assertEqual($node->feeds_node_item->url, 'http://www.example.com/catalog?item=83&desc=vacation_usa', 'Feed item 5 url is correct.'); |
---|
114 | $this->assertEqual($node->feeds_node_item->url, $node->feeds_node_item->guid, 'Feed item 5 guid is correct.'); |
---|
115 | |
---|
116 | // Check for more items. |
---|
117 | $item = db_fetch_object($result); |
---|
118 | $this->assertFalse($item, 'Correct number of feed items recorded.'); |
---|
119 | } |
---|
120 | } |
---|