You are here

public function FeedsHooksTestCase::testHookPluginTypeConfigDefaults in Feeds 7.2

Tests the hook hook_PLUGIN_TYPE_config_defaults().

File

tests/feeds_hooks.test, line 122
Contains FeedsHooksTestCase.

Class

FeedsHooksTestCase
Tests for hooks invoked by Feeds not related to mapping.

Code

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'.");
}