123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- <?php
- /**
- * @file
- * Test case for taxonomy mapper mappers/taxonomy.inc.
- */
- /**
- * Class for testing Feeds <em>content</em> mapper.
- */
- class FeedsMapperTaxonomyTestCase extends FeedsMapperTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'Mapper: Taxonomy',
- 'description' => 'Test Feeds Mapper support for Taxonomy.',
- 'group' => 'Feeds',
- );
- }
- function setUp() {
- parent::setUp();
- // Add Tags vocabulary
- $edit = array(
- 'name' => 'Tags',
- 'machine_name' => 'tags',
- );
- $this->drupalPost('admin/structure/taxonomy/add', $edit, 'Save');
- $edit = array(
- 'name' => 'term1',
- );
- $this->drupalPost('admin/structure/taxonomy/tags/add', $edit, t('Save'));
- $this->assertText('Created new term term1.');
- // Create term reference field.
- $field = array(
- 'field_name' => 'field_tags',
- 'type' => 'taxonomy_term_reference',
- 'cardinality' => FIELD_CARDINALITY_UNLIMITED,
- 'settings' => array(
- 'allowed_values' => array(
- array(
- 'vocabulary' => 'tags',
- 'parent' => 0,
- ),
- ),
- ),
- );
- field_create_field($field);
- // Add term reference field to feed item bundle.
- $this->instance = array(
- 'field_name' => 'field_tags',
- 'bundle' => 'article',
- 'entity_type' => 'node',
- 'widget' => array(
- 'type' => 'options_select',
- ),
- 'display' => array(
- 'default' => array(
- 'type' => 'taxonomy_term_reference_link',
- ),
- ),
- );
- field_create_instance($this->instance);
- // Add term reference field to feed node bundle.
- $this->instance = array(
- 'field_name' => 'field_tags',
- 'bundle' => 'page',
- 'entity_type' => 'node',
- 'widget' => array(
- 'type' => 'options_select',
- ),
- 'display' => array(
- 'default' => array(
- 'type' => 'taxonomy_term_reference_link',
- ),
- ),
- );
- field_create_instance($this->instance);
- // Create an importer configuration with basic mapping.
- $this->createImporterConfiguration('Syndication', 'syndication');
- $this->addMappings('syndication',
- array(
- 0 => array(
- 'source' => 'title',
- 'target' => 'title',
- ),
- 1 => array(
- 'source' => 'description',
- 'target' => 'body',
- ),
- 2 => array(
- 'source' => 'timestamp',
- 'target' => 'created',
- ),
- 3 => array(
- 'source' => 'url',
- 'target' => 'url',
- 'unique' => TRUE,
- ),
- 4 => array(
- 'source' => 'guid',
- 'target' => 'guid',
- 'unique' => TRUE,
- ),
- )
- );
- }
- /**
- * Test inheriting taxonomy from the feed node.
- */
- function testInheritTaxonomy() {
- // Adjust importer settings
- $this->setSettings('syndication', NULL, array('import_period' => FEEDS_SCHEDULE_NEVER));
- $this->setSettings('syndication', NULL, array('import_on_create' => FALSE));
- $this->assertText('Do not import on submission');
- // Map feed node's taxonomy to feed item node's taxonomy.
- $mappings = array(
- 5 => array(
- 'source' => 'parent:taxonomy:tags',
- 'target' => 'field_tags',
- ),
- );
- $this->addMappings('syndication', $mappings);
- // Create feed node and add term term1.
- $langcode = LANGUAGE_NONE;
- $nid = $this->createFeedNode('syndication', NULL, 'Syndication');
- $term = taxonomy_get_term_by_name('term1');
- $term = reset($term);
- $edit = array(
- 'field_tags' . '[' . $langcode . '][]' => $term->tid,
- );
- $this->drupalPost("node/$nid/edit", $edit, t('Save'));
- $this->assertTaxonomyTerm($term->name);
- // Import nodes.
- $this->drupalPost("node/$nid/import", array(), 'Import');
- $this->assertText('Created 10 nodes.');
- $count = db_query("SELECT COUNT(*) FROM {taxonomy_index}")->fetchField();
- // There should be one term for each node imported plus the term on the feed node.
- $this->assertEqual(11, $count, 'Found correct number of tags for all feed nodes and feed items.');
- }
- /**
- * Test aggregating RSS categories to taxonomy.
- */
- /*
- function testRSSCategoriesToTaxonomy() {
- // Add mapping to tags vocabulary.
- $this->addMappings('syndication',
- array(
- array(
- 'source' => 'tags',
- 'target' => 'taxonomy:1',
- ),
- )
- );
- // Aggregate feed node with "Tag" vocabulary.
- $nid = $this->createFeedNode();
- // Assert 10 items aggregated after creation of the node.
- $this->assertText('Created 10 nodes');
- // There should be 30 terms and 44 term-node relations.
- $this->assertEqual(30, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
- $this->assertEqual(44, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
- // Take a look at the actual terms on frontpage.
- $this->drupalGet('node');
- $terms = array(
- 'authentication',
- 'custom mapping',
- 'data visualization',
- 'Drupal',
- 'Drupal planet',
- 'faceted search',
- 'GeoDC',
- 'graphs',
- 'interface',
- 'intranet',
- 'localization',
- 'localization client',
- 'localization server',
- 'map-basec browser',
- 'mapbox',
- 'microfinance',
- 'MIX Market',
- 'open atrium',
- 'open data',
- 'open source',
- 'Peru',
- 'salesforce',
- 'siteminder',
- 'siteminder module',
- 'software freedom day',
- 'translation',
- 'translation server',
- 'usability',
- 'Washington DC',
- 'World Bank',
- );
- foreach ($terms as $term) {
- $this->assertTaxonomyTerm($term);
- }
- // Delete all items, all associations are gone.
- $this->drupalPost("node/$nid/delete-items", array(), 'Delete');
- $this->assertText('Deleted 10 nodes');
- $this->assertEqual(30, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
- $this->assertEqual(0, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
- // Remove "Tag" setting, import again.
- $edit = array(
- 'tags' => FALSE,
- );
- $this->drupalPost('admin/content/taxonomy/edit/vocabulary/1', $edit, 'Save');
- $this->drupalPost("node/$nid/import", array(), 'Import');
- $this->assertText('Created 10 nodes');
- // We should only get one term-node association per node.
- $this->assertEqual(30, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
- $this->assertEqual(10, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
- // Delete all items.
- $this->drupalPost("node/$nid/delete-items", array(), 'Delete');
- // Set vocabulary to multiple terms, import again.
- $edit = array(
- 'multiple' => TRUE,
- );
- $this->drupalPost('admin/content/taxonomy/edit/vocabulary/1', $edit, 'Save');
- $this->drupalPost("node/$nid/import", array(), 'Import');
- $this->assertText('Created 10 nodes');
- // We should get all term-node associations again.
- $this->assertEqual(30, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
- $this->assertEqual(44, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
- // Delete all items.
- $this->drupalPost("node/$nid/delete-items", array(), 'Delete');
- // Remove a term, import again.
- $this->drupalPost('admin/content/taxonomy/edit/term/1', array(), 'Delete');
- $this->drupalPost(NULL, array(), 'Delete');
- $this->assertText('Deleted term');
- $this->drupalPost("node/$nid/import", array(), 'Import');
- $this->assertText('Created 10 nodes');
- // This term should now be missing from term-node associations.
- $this->assertEqual(29, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
- $this->assertEqual(39, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
- }
- */
- /**
- * Helper, finds node style taxonomy term markup in DOM.
- */
- public function assertTaxonomyTerm($term) {
- $term = check_plain($term);
- $this->assertPattern('/<a href="\/.*taxonomy\/term\/[0-9]+">' . $term . '<\/a>/', 'Found ' . $term);
- }
- }
|