diff options
Diffstat (limited to 'modules/simpletest/tests/upgrade/upgrade.taxonomy.test')
-rw-r--r-- | modules/simpletest/tests/upgrade/upgrade.taxonomy.test | 50 |
1 files changed, 43 insertions, 7 deletions
diff --git a/modules/simpletest/tests/upgrade/upgrade.taxonomy.test b/modules/simpletest/tests/upgrade/upgrade.taxonomy.test index d4c47f8de..92db17e48 100644 --- a/modules/simpletest/tests/upgrade/upgrade.taxonomy.test +++ b/modules/simpletest/tests/upgrade/upgrade.taxonomy.test @@ -90,6 +90,8 @@ class UpgradePathTaxonomyTestCase extends UpgradePathTestCase { $nodes += node_load_multiple(array(), array('type' => 'story')); $terms = db_select('taxonomy_term_data', 'td') ->fields('td') + ->orderBy('vid') + ->orderBy('tid') ->execute() ->fetchAllAssoc('tid'); field_attach_prepare_view('node', $nodes, 'full'); @@ -98,22 +100,56 @@ class UpgradePathTaxonomyTestCase extends UpgradePathTestCase { $render = drupal_render($node->content); $this->drupalSetContent($render); $this->verbose($render); + + $vocabulary_seen = array(); foreach ($terms as $tid => $term) { + // In our test database, each node is arbitrary associated with all + // terms except two: one whose tid is ($nid) and one whose tid is + // (49 - $nid). + $should_be_displayed = ($tid != $nid) && ($tid + $nid != 49); + + // Only vocabularies 13 to 24 are properly associated with the node + // type 'page'. All other node types are not associated with any + // vocabulary, but still are associated with terms. Those terms + // will be moved to the taxonomy extra field. + if ($node->type == 'page' && $term->vid >= 13 && $term->vid <= 24) { + $vocabulary = taxonomy_vocabulary_load($term->vid); + $field_class = 'field-name-' . strtr('taxonomy_' . $vocabulary->machine_name, '_', '-');; + } + else { + $field_class = 'field-name-taxonomyextra'; + } + + // Odd vocabularies are single, so any additional term will be moved + // to the taxonomy extra field. + if ($should_be_displayed) { + if ($term->vid % 2 == 1 && !empty($vocabulary_seen[$term->vid])) { + $field_class = 'field-name-taxonomyextra'; + } + $vocabulary_seen[$term->vid] = TRUE; + } + $args = array( '%name' => $term->name, - '@tid' => $tid, + '@field' => $field_class, '%nid' => $nid, ); // Use link rather than term name because migrated term names can be // substrings of other term names. e.g. "term 1 of vocabulary 2" is // found when "term 1 of vocabulary 20" is output. - $link = l($term->name, 'taxonomy/term/' . $term->tid); - if (($tid == $nid) || ($tid + $nid == 49)) { - $this->assertNoRaw($link, t('Term %name (@tid) is not displayed on node %nid', $args)); + $term_path = url('taxonomy/term/' . $term->tid); + if (!$should_be_displayed) { + // Look for any link with the term path. + $links = $this->xpath('//a[@href=:term_path]', array(':term_path' => $term_path)); + $this->assertFalse($links, t('Term %name (@field) is not displayed on node %nid', $args)); } else { - $this->assertRaw($link, t('Term %name (@tid) is displayed on node %nid', $args)); + // Look for a link with the term path inside the correct field. + // We search for "SPACE + class + SPACE" to avoid matching a substring + // of the class. + $links = $this->xpath('//div[contains(concat(" ", normalize-space(@class), " "), :field_class)]//a[@href=:term_path]', array(':field_class' => ' ' . $field_class . ' ', ':term_path' => $term_path)); + $this->assertTrue($links, t('Term %name (@field) is displayed on node %nid', $args)); } } @@ -142,10 +178,10 @@ class UpgradePathTaxonomyTestCase extends UpgradePathTestCase { $term = $terms[$node->nid]; $link = l($term->name, 'taxonomy/term/' . $term->tid); - $this->assertRaw($link, t('Term %name (@tid) is displayed on node %nid vid %old_vid.', $args)); + $this->assertRaw($link, t('Term %name (@field) is displayed on node %nid vid %old_vid.', $args)); $term = $terms[49-$node->nid]; $link = l($term->name, 'taxonomy/term/' . $term->tid); - $this->assertRaw($link, t('Term %name (@tid) is displayed on node %nid %old_vid.', $args)); + $this->assertRaw($link, t('Term %name (@field) is displayed on node %nid %old_vid.', $args)); } else { $this->assertEqual(count($revisions), 1, t('Node %nid has one revision.', $args)); |