feeds_hooks.test in Feeds 7.2
Contains FeedsHooksTestCase.
File
tests/feeds_hooks.testView source
<?php
/**
* @file
* Contains FeedsHooksTestCase.
*/
/**
* Tests for hooks invoked by Feeds not related to mapping.
*/
class FeedsHooksTestCase extends FeedsWebTestCase {
/**
* {@inheritdoc}
*/
public static function getInfo() {
return array(
'name' => 'Hooks',
'description' => 'Tests for hooks invoked by Feeds not related to mapping.',
'group' => 'Feeds',
);
}
/**
* Ensure that the prevalidate hook is invoked.
*
* @see feeds_tests_feeds_prevalidate()
*/
public function testPrevalidateHook() {
// Include FeedsProcessor.inc to make its constants available.
module_load_include('inc', 'feeds', 'plugins/FeedsProcessor');
// Set flag to test prevalidate hook.
variable_set('feeds_tests_hook_feeds_prevalidate', TRUE);
// Create CSV importer.
$this
->createImporterConfiguration('Content CSV', 'csv');
$this
->setSettings('csv', NULL, array(
'content_type' => '',
'import_period' => FEEDS_SCHEDULE_NEVER,
));
$this
->setPlugin('csv', 'FeedsFileFetcher');
$this
->setPlugin('csv', 'FeedsCSVParser');
$this
->setSettings('csv', 'FeedsNodeProcessor', array(
'bundle' => 'article',
'update_existing' => FEEDS_UPDATE_EXISTING,
));
$this
->addMappings('csv', array(
0 => array(
'source' => 'title',
'target' => 'title',
'unique' => TRUE,
),
));
// Create an article node that gets updated.
$node = $this
->drupalCreateNode(array(
'type' => 'article',
'title' => 'Lorem ipsum',
));
// Import CSV file.
$this
->importFile('csv', $this
->absolutePath() . '/tests/feeds/content.csv');
$this
->assertText('Created 1 node');
$this
->assertText('Updated 1 node');
$expected_result = array(
array(
'importer_id' => 'csv',
'title' => 'Lorem ipsum',
'item_guid' => 1,
'entity_id' => $node->nid,
),
array(
'importer_id' => 'csv',
'title' => 'Ut wisi enim ad minim veniam',
'item_guid' => 2,
'entity_id' => NULL,
),
);
// Assert that the hook was invoked. The variable should have been set in
// feeds_tests_feeds_prevalidate().
$this
->assertEqual($expected_result, variable_get('feeds_tests_hook_feeds_prevalidate_results'));
}
/**
* Tests the hook hook_config_defaults().
*/
public function testHookConfigDefaults() {
// Switch on hook implementations in the feeds_tests module.
variable_set('feeds_tests_hook_config_defaults', TRUE);
$this
->createImporterConfiguration('Config defaults test', 'config_defaults_test');
// Load the importer and check the default value for
// 'feeds_tests_extra_setting'.
$importer = feeds_importer_load('config_defaults_test');
$importer_config = $importer
->getConfig();
$this
->assertFalse($importer_config['feeds_tests_extra_setting'], "Option 'Extra setting' is disabled.");
// Assert that other configurables do not have this setting.
$fetcher_config = $importer->fetcher
->getConfig();
$parser_config = $importer->fetcher
->getConfig();
$processor_config = $importer->fetcher
->getConfig();
$this
->assertFalse(isset($fetcher_config['feeds_tests_extra_setting']));
$this
->assertFalse(isset($parser_config['feeds_tests_extra_setting']));
$this
->assertFalse(isset($processor_config['feeds_tests_extra_setting']));
// Now change this setting.
$this
->setSettings('config_defaults_test', NULL, array(
'feeds_tests_extra_setting' => TRUE,
));
// Reload the importer and assert that the configuration option changed.
drupal_static_reset();
$importer = feeds_importer_load('config_defaults_test');
$importer_config = $importer
->getConfig();
$this
->assertTrue($importer_config['feeds_tests_extra_setting'], "Option 'Extra setting' is enabled.");
}
/**
* Tests the hook hook_PLUGIN_TYPE_config_defaults().
*/
public function testHookPluginTypeConfigDefaults() {
// Switch on hook implementations in the feeds_tests module.
variable_set('feeds_tests_hook_config_defaults', TRUE);
$this
->createImporterConfiguration('Config defaults test', 'config_defaults_test');
// Change parser plugin to CSV as the common syndication parser does not
// have a config form.
$this
->setPlugin('config_defaults_test', 'FeedsCSVParser');
// Load the importer and check default values for each plugin.
$importer = feeds_importer_load('config_defaults_test');
$fetcher_config = $importer->fetcher
->getConfig();
$parser_config = $importer->parser
->getConfig();
$processor_config = $importer->processor
->getConfig();
$this
->assertFalse($fetcher_config['feeds_tests_fetcher_extra_setting'], "Option 'Extra setting' is disabled for the fetcher.");
$this
->assertTrue($parser_config['feeds_tests_parser_extra_setting'], "Option 'Extra setting' is enabled for the parser.");
$this
->assertEqual('', $processor_config['feeds_tests_processor_extra_setting'], "Setting 'Extra setting' is empty.");
// Assert that the setting for a particular plugin does not exists for other
// configurables.
$importer_config = $importer
->getConfig();
$this
->assertFalse(isset($importer_config['feeds_tests_fetcher_extra_setting']));
$this
->assertFalse(isset($importer_config['feeds_tests_parser_extra_setting']));
$this
->assertFalse(isset($importer_config['feeds_tests_processor_extra_setting']));
$this
->assertFalse(isset($fetcher_config['feeds_tests_parser_extra_setting']));
$this
->assertFalse(isset($fetcher_config['feeds_tests_processor_extra_setting']));
$this
->assertFalse(isset($parser_config['feeds_tests_fetcher_extra_setting']));
$this
->assertFalse(isset($parser_config['feeds_tests_processor_extra_setting']));
$this
->assertFalse(isset($processor_config['feeds_tests_fetcher_extra_setting']));
$this
->assertFalse(isset($processor_config['feeds_tests_parser_extra_setting']));
// Now change the settings for each plugin.
$this
->setSettings('config_defaults_test', 'FeedsHTTPFetcher', array(
'feeds_tests_fetcher_extra_setting' => TRUE,
));
$this
->setSettings('config_defaults_test', 'FeedsCSVParser', array(
'feeds_tests_parser_extra_setting' => FALSE,
));
$this
->setSettings('config_defaults_test', 'FeedsNodeProcessor', array(
'feeds_tests_processor_extra_setting' => 'my setting',
));
// Reload the importer and assert that the configuration changed.
drupal_static_reset();
$importer = feeds_importer_load('config_defaults_test');
$fetcher_config = $importer->fetcher
->getConfig();
$parser_config = $importer->parser
->getConfig();
$processor_config = $importer->processor
->getConfig();
$this
->assertTrue($fetcher_config['feeds_tests_fetcher_extra_setting'], "Option 'Extra setting' is enabled for the fetcher.");
$this
->assertFalse($parser_config['feeds_tests_parser_extra_setting'], "Option 'Extra setting' is disabled for the parser.");
$this
->assertEqual('my setting', $processor_config['feeds_tests_processor_extra_setting'], "Setting 'Extra setting' is 'my setting'.");
}
}
Classes
Name![]() |
Description |
---|---|
FeedsHooksTestCase | Tests for hooks invoked by Feeds not related to mapping. |