public function FeedsSyndicationParserTestCase::testRSSSourceElement in Feeds 7.2
Tests if the "<source>" element of a RSS feed is parsed correctly.
This element is optional according to the RSS 2.0 specification.
File
- tests/
feeds_parser_syndication.test, line 77 - Tests for plugins/FeedsSyndicationParser.inc.
Class
- FeedsSyndicationParserTestCase
- Test single feeds.
Code
public function testRSSSourceElement() {
// Do not use curl as that will result into HTTP requests returning a 404.
variable_set('feeds_never_use_curl', TRUE);
// Create content type with two text fields.
$typename = $this
->createContentType(array(), array(
'source_title' => 'text',
'source_url' => 'text',
));
// Create importer and map sources from source element to text fields.
$this
->createImporterConfiguration('Syndication', 'syndication');
$this
->setSettings('syndication', 'FeedsNodeProcessor', array(
'bundle' => $typename,
));
$this
->addMappings('syndication', array(
0 => array(
'source' => 'title',
'target' => 'title',
'unique' => FALSE,
),
1 => array(
'source' => 'source:title',
'target' => 'field_source_title',
),
2 => array(
'source' => 'source:url',
'target' => 'field_source_url',
),
));
// Import url.
$url = $GLOBALS['base_url'] . '/' . drupal_get_path('module', 'feeds') . '/tests/feeds/developmentseed.rss2';
$this
->createFeedNode('syndication', $url);
// Assert that the contents for the source element were imported for the
// first imported node.
$node = node_load(2);
$fields = array(
'field_source_title' => array(
'expected' => 'Technological Solutions for Progressive Organizations',
'actual' => $node->field_source_title[LANGUAGE_NONE][0]['value'],
),
'field_source_url' => array(
'expected' => 'http://developmentseed.org/node/974',
'actual' => $node->field_source_url[LANGUAGE_NONE][0]['value'],
),
);
foreach ($fields as $field_name => $value) {
$this
->assertEqual($value['expected'], $value['actual'], format_string('The field %field has the expected value (actual: @actual).', array(
'%field' => $field_name,
'@actual' => $value['actual'],
)));
}
// Assert that for the second imported node, no values were imported,
// because the second item does not contain a source element.
$node = node_load(3);
foreach ($fields as $field_name => $value) {
$this
->assertTrue(!isset($node->{$field_name}[LANGUAGE_NONE][0]['value']), format_string('The field %field does not contain a value (actual: @actual).', array(
'%field' => $field_name,
'@actual' => $value['actual'],
)));
}
}