Projet

Général

Profil

Paste
Télécharger (5 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / feeds / tests / feeds_parser_sitemap.test @ 41cc1b08

1
<?php
2

    
3
/**
4
 * @file
5
 * Tests for plugins/FeedsSitemapParser.inc
6
 */
7

    
8
/**
9
 * Test Sitemap parser.
10
 */
11
class FeedsSitemapParserTestCase extends FeedsWebTestCase {
12
  public static function getInfo() {
13
    return array(
14
      'name' => 'Sitemap parser',
15
      'description' => 'Regression tests for Sitemap XML format parser.',
16
      'group' => 'Feeds',
17
    );
18
  }
19

    
20
  /**
21
   * Run tests.
22
   */
23
  public function test() {
24
    $this->createImporterConfiguration('Sitemap', 'sitemap');
25
    $this->setPlugin('sitemap', 'FeedsSitemapParser');
26

    
27
    $this->addMappings('sitemap',
28
      array(
29
        0 => array(
30
          'source' => 'changefreq',
31
          'target' => 'title',
32
        ),
33
        1 => array(
34
          'source' => 'priority',
35
          'target' => 'body',
36
        ),
37
        2 => array(
38
          'source' => 'lastmod',
39
          'target' => 'created',
40
        ),
41
        3 => array(
42
          'source' => 'url',
43
          'target' => 'url',
44
          'unique' => TRUE,
45
        ),
46
        4 => array(
47
          'source' => 'url',
48
          'target' => 'guid',
49
          'unique' => TRUE,
50
        ),
51
      )
52
    );
53

    
54
    $path = $GLOBALS['base_url'] . '/' . drupal_get_path('module', 'feeds') . '/tests/feeds/';
55
    $nid = $this->createFeedNode('sitemap', $path . 'sitemap-example.xml', 'Testing Sitemap Parser');
56
    $this->assertText('Created 5 nodes');
57

    
58
    // Assert DB status.
59
    $count = db_query("SELECT COUNT(*) FROM {feeds_item} WHERE entity_type = 'node'")->fetchField();
60
    $this->assertEqual($count, 5, 'Accurate number of items in database.');
61

    
62
    // Check items against known content of feed.
63
    $items = db_query("SELECT * FROM {feeds_item} WHERE entity_type = 'node' AND feed_nid = :nid ORDER BY entity_id", array(':nid' => $nid));
64

    
65
    // Check first item.
66
    date_default_timezone_set('GMT');
67
    $item = $items->fetchObject();
68
    $node = node_load($item->entity_id);
69
    $this->assertEqual($node->title, 'monthly', 'Feed item 1 changefreq is correct.');
70
    $this->assertEqual($node->body[LANGUAGE_NONE][0]['value'], '0.8', 'Feed item 1 priority is correct.');
71
    $this->assertEqual($node->created, strtotime('2005-01-01'), 'Feed item 1 lastmod is correct.');
72
    $info = feeds_item_info_load('node', $node->nid);
73
    $this->assertEqual($info->url, 'http://www.example.com/', 'Feed item 1 url is correct.');
74
    $this->assertEqual($info->url, $info->guid, 'Feed item 1 guid is correct.');
75

    
76
    // Check second item.
77
    $item = $items->fetchObject();
78
    $node = node_load($item->entity_id);
79
    $this->assertEqual($node->title, 'weekly', 'Feed item 2 changefreq is correct.');
80
    $this->assertTrue(empty($node->body[LANGUAGE_NONE]), 'Feed item 2 priority is correct.');
81
    // $node->created is... recently
82
    $info = feeds_item_info_load('node', $node->nid);
83
    $this->assertEqual($info->url, 'http://www.example.com/catalog?item=12&desc=vacation_hawaii', 'Feed item 2 url is correct.');
84
    $this->assertEqual($info->url, $info->guid, 'Feed item 2 guid is correct.');
85

    
86
    // Check third item.
87
    $item = $items->fetchObject();
88
    $node = node_load($item->entity_id);
89
    $this->assertEqual($node->title, 'weekly', 'Feed item 3 changefreq is correct.');
90
    $this->assertTrue(empty($node->body[LANGUAGE_NONE]), 'Feed item 3 priority is correct.');
91
    $this->assertEqual($node->created, strtotime('2004-12-23'), 'Feed item 3 lastmod is correct.');
92
    $info = feeds_item_info_load('node', $node->nid);
93
    $this->assertEqual($info->url, 'http://www.example.com/catalog?item=73&desc=vacation_new_zealand', 'Feed item 3 url is correct.');
94
    $this->assertEqual($info->url, $info->guid, 'Feed item 3 guid is correct.');
95

    
96
    // Check fourth item.
97
    $item = $items->fetchObject();
98
    $node = node_load($item->entity_id);
99
    $this->assertEqual($node->title, '', 'Feed item 4 changefreq is correct.');
100
    $this->assertEqual($node->body[LANGUAGE_NONE][0]['value'], '0.3', 'Feed item 4 priority is correct.');
101
    $this->assertEqual($node->created, strtotime('2004-12-23T18:00:15+00:00'), 'Feed item 4 lastmod is correct.');
102
    $info = feeds_item_info_load('node', $node->nid);
103
    $this->assertEqual($info->url, 'http://www.example.com/catalog?item=74&desc=vacation_newfoundland', 'Feed item 4 url is correct.');
104
    $this->assertEqual($info->url, $info->guid, 'Feed item 1 guid is correct.');
105

    
106
    // Check fifth item.
107
    $item = $items->fetchObject();
108
    $node = node_load($item->entity_id);
109
    $this->assertEqual($node->title, '', 'Feed item 5 changefreq is correct.');
110
    $this->assertTrue(empty($node->body[LANGUAGE_NONE]), 'Feed item 5 priority is correct.');
111
    $this->assertEqual($node->created, strtotime('2004-11-23'), 'Feed item 5 lastmod is correct.');
112
    $info = feeds_item_info_load('node', $node->nid);
113
    $this->assertEqual($info->url, 'http://www.example.com/catalog?item=83&desc=vacation_usa', 'Feed item 5 url is correct.');
114
    $this->assertEqual($info->url, $info->guid, 'Feed item 5 guid is correct.');
115

    
116
    // Check for more items.
117
    $item = $items->fetchObject();
118
    $this->assertFalse($item, 'Correct number of feed items recorded.');
119
  }
120
}