You are here

function FeedsMapperTaxonomyTestCase::testRSSCategoriesToTaxonomy in Feeds 7

Same name and namespace in other branches
  1. 6 tests/feeds_mapper_taxonomy.test \FeedsMapperTaxonomyTestCase::testRSSCategoriesToTaxonomy()

Test aggregating RSS categories to taxonomy.

File

tests/feeds_mapper_taxonomy.test, line 118

Class

FeedsMapperTaxonomyTestCase
Class for testing Feeds <em>content</em> mapper.

Code

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