summaryrefslogtreecommitdiff
path: root/modules/simpletest
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2010-10-06 21:53:41 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2010-10-06 21:53:41 +0000
commit8e4d4ec6d922635002e455404189e899665d0126 (patch)
tree043de3dd070b6a59782c9d9f3814201cff6585d5 /modules/simpletest
parent1af4618908bb9b54df93165ac645a45834203e1a (diff)
downloadbrdo-8e4d4ec6d922635002e455404189e899665d0126.tar.gz
brdo-8e4d4ec6d922635002e455404189e899665d0126.tar.bz2
#933270 by Damien Tournoud, catch: Fixed Taxonomy terms are incorrectly put in the 'Taxonomy upgrade vocabulary' in some cases. (beta blocker)
Diffstat (limited to 'modules/simpletest')
-rw-r--r--modules/simpletest/tests/upgrade/upgrade.taxonomy.test50
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));