diff --git a/entityreference.info b/entityreference.info index a56e215..9772c69 100644 --- a/entityreference.info +++ b/entityreference.info @@ -21,3 +21,4 @@ files[] = views/entityreference_plugin_row_fields.inc files[] = tests/entityreference.handlers.test files[] = tests/entityreference.taxonomy.test files[] = tests/entityreference.admin.test +files[] = tests/entityreference.feeds.test diff --git a/tests/entityreference.feeds.test b/tests/entityreference.feeds.test new file mode 100644 index 0000000..80ad912 --- /dev/null +++ b/tests/entityreference.feeds.test @@ -0,0 +1,105 @@ + 'Feeds integration (field mapper)', + 'description' => 'Test Feeds Mapper support for fields.', + 'group' => 'Entity Reference', + ); + } + + /** + * Set-up function. + */ + public function setUp() { + parent::setUp(array('entityreference_feeds_test')); + } + + /** + * Basic test loading a double entry CSV file. + */ + public function test() { + if (!module_exists('feeds')) { + return; + } + + $this->drupalLogin($this->admin_user); + $this->drupalGet('admin/structure/types/manage/article/fields'); + $this->assertText('Ref - entity ID', t('Found Entity reference field %field.', array('%field' => 'field_er_id'))); + $this->assertText('Ref - entity label', t('Found Entity reference field %field.', array('%field' => 'field_er_label'))); + $this->assertText('Ref - feeds GUID', t('Found Entity reference field %field.', array('%field' => 'field_er_guid'))); + $this->assertText('Ref - feeds URL', t('Found Entity reference field %field.', array('%field' => 'field_er_url'))); + + $this->createImporterConfiguration('Nodes', 'nodes'); + $this->setSettings('nodes', NULL, array('content_type' => '', 'import_period' => FEEDS_SCHEDULE_NEVER)); + $this->setPlugin('nodes', 'FeedsFileFetcher'); + $this->setPlugin('nodes', 'FeedsCSVParser'); + $this->setSettings('nodes', 'FeedsNodeProcessor', array('content_type' => 'article')); + $this->addMappings('nodes', + array( + 0 => array( + 'source' => 'title', + 'target' => 'title', + ), + 1 => array( + 'source' => 'nid', + 'target' => 'nid', + 'unique' => TRUE, + ), + 2 => array( + 'source' => 'permalink', + 'target' => 'url', + 'unique' => TRUE, + ), + 3 => array( + 'source' => 'nid', + 'target' => 'guid', + 'unique' => TRUE, + ), + 4 => array( + 'source' => 'parent_nid', + 'target' => 'field_er_id:etid', + ), + 5 => array( + 'source' => 'parent_title', + 'target' => 'field_er_label:label', + ), + 6 => array( + 'source' => 'parent_url', + 'target' => 'field_er_url:url', + ), + 7 => array( + 'source' => 'parent_guid', + 'target' => 'field_er_guid', + ), + ) + ); + + $this->importFile('nodes', $this->absolute() . '/' . drupal_get_path('module', 'entityreference') . '/tests/feeds_test.csv'); + $this->assertText('Created 2 nodes'); + + $parent = node_load(1); + $this->assertTrue(empty($parent->field_er_id['und'][0]['target_id']), t('Parent node: Import by entity ID OK.')); + $this->assertTrue(empty($parent->field_er_label['und'][0]['target_id']), t('Parent node: Import by entity label OK.')); + $this->assertTrue(empty($parent->field_er_guid['und'][0]['target_id']), t('Parent node: Import by feeds GUID OK.')); + $this->assertTrue(empty($parent->field_er_url['und'][0]['target_id']), t('Parent node: Import by feeds URL OK.')); + + $child = node_load(2); + $this->assertTrue($child->field_er_id['und'][0]['target_id'] == 1, t('Child node: Import by entity ID OK.')); + $this->assertTrue($child->field_er_label['und'][0]['target_id'] == 1, t('Child node: Import by entity label OK.')); + $this->assertTrue($child->field_er_guid['und'][0]['target_id'] == 1, t('Child node: Import by feeds GUID OK.')); + $this->assertTrue($child->field_er_url['und'][0]['target_id'] == 1, t('Child node: Import by feeds URL OK.')); + } +} diff --git a/tests/feeds_test.csv b/tests/feeds_test.csv new file mode 100644 index 0000000..c145ce3 --- /dev/null +++ b/tests/feeds_test.csv @@ -0,0 +1,3 @@ +"nid","title","permalink","parent_nid","parent_title","parent_url","parent_guid" +"1","Views","http://drupal.org/project/views","","","","" +"2","Views bulk operations","http://drupal.org/project/views_bulk_operations","1","Views","http://drupal.org/project/views","1" diff --git a/tests/modules/entityreference_feeds_test/entityreference_feeds_test.info b/tests/modules/entityreference_feeds_test/entityreference_feeds_test.info new file mode 100644 index 0000000..99a9ef1 --- /dev/null +++ b/tests/modules/entityreference_feeds_test/entityreference_feeds_test.info @@ -0,0 +1,8 @@ +name = "Entityreference - Feeds integration tests" +description = "Support module for the Entityreference - Feeds integration tests." +package = Testing +core = 7.x +hidden = TRUE + +dependencies[] = feeds +dependencies[] = entityreference diff --git a/tests/modules/entityreference_feeds_test/entityreference_feeds_test.module b/tests/modules/entityreference_feeds_test/entityreference_feeds_test.module new file mode 100644 index 0000000..a0cf3df --- /dev/null +++ b/tests/modules/entityreference_feeds_test/entityreference_feeds_test.module @@ -0,0 +1,103 @@ + 'field_er_id', + 'type' => 'entityreference', + 'cardinality' => 1, + 'settings' => array( + 'target_type' => 'node', + 'handler' => 'base', + 'handler_settings' => array( + 'target_bundles' => array('article' => 'article'), + ), + ), + ); + field_create_field($field); + + $instance = array( + 'field_name' => 'field_er_id', + 'entity_type' => 'node', + 'label' => 'Ref - entity ID', + 'bundle' => 'article', + ); + field_create_instance($instance); + + // Entity reference field - mapped by Feeds GUID. + $field = array( + 'field_name' => 'field_er_guid', + 'type' => 'entityreference', + 'cardinality' => 1, + 'settings' => array( + 'target_type' => 'node', + 'handler' => 'base', + 'handler_settings' => array( + 'target_bundles' => array('article' => 'article'), + ), + ), + ); + field_create_field($field); + + $instance = array( + 'field_name' => 'field_er_guid', + 'entity_type' => 'node', + 'label' => 'Ref - feeds GUID', + 'bundle' => 'article', + ); + field_create_instance($instance); + + // Entity reference field - mapped by Feeds URL. + $field = array( + 'field_name' => 'field_er_url', + 'type' => 'entityreference', + 'cardinality' => 1, + 'settings' => array( + 'target_type' => 'node', + 'handler' => 'base', + 'handler_settings' => array( + 'target_bundles' => array('article' => 'article'), + ), + ), + ); + field_create_field($field); + + $instance = array( + 'field_name' => 'field_er_url', + 'entity_type' => 'node', + 'label' => 'Ref - feeds URL', + 'bundle' => 'article', + ); + field_create_instance($instance); + + // Entity reference field - mapped by Label. + $field = array( + 'field_name' => 'field_er_label', + 'type' => 'entityreference', + 'cardinality' => 1, + 'settings' => array( + 'target_type' => 'node', + 'handler' => 'base', + 'handler_settings' => array( + 'target_bundles' => array('article' => 'article'), + ), + ), + ); + field_create_field($field); + + $instance = array( + 'field_name' => 'field_er_label', + 'entity_type' => 'node', + 'label' => 'Ref - entity label', + 'bundle' => 'article', + ); + field_create_instance($instance); +}