diff options
-rw-r--r-- | modules/taxonomy/taxonomy.module | 6 | ||||
-rw-r--r-- | modules/taxonomy/taxonomy.test | 14 |
2 files changed, 18 insertions, 2 deletions
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index 7c6889c03..1db756458 100644 --- a/modules/taxonomy/taxonomy.module +++ b/modules/taxonomy/taxonomy.module @@ -1639,8 +1639,10 @@ function taxonomy_node_validate($node, $form) { */ function taxonomy_node_update_index($node) { $output = array(); - foreach ($node->taxonomy as $term) { - $output[] = $term->name; + if (isset($node->taxonomy) && is_array($node->taxonomy)) { + foreach ($node->taxonomy as $term) { + $output[] = $term->name; + } } if (count($output)) { return '<strong>(' . implode(', ', $output) . ')</strong>'; diff --git a/modules/taxonomy/taxonomy.test b/modules/taxonomy/taxonomy.test index 24f12bd50..87123bc39 100644 --- a/modules/taxonomy/taxonomy.test +++ b/modules/taxonomy/taxonomy.test @@ -354,6 +354,20 @@ class TaxonomyTermUnitTest extends TaxonomyWebTestCase { // Confirm that the node type argument returns a single node association. $this->assertEqual(taxonomy_term_count_nodes($term3->tid, 'page'), 1, t("Term is associated with one node of type 'page'.")); + + // Test hook_nodeapi_update_index(). + // Load the node so taxonomy terms are fully populated. + $node = node_load($node1->nid); + $output = taxonomy_node_update_index($node); + $this->assertFalse(empty($output), t('Node with taxonomy has content when calling update index')); + // Remove all taxonomy. + unset($node->taxonomy); + $output = taxonomy_node_update_index($node); + $this->assertTrue(empty($output), t('Node with no taxonomy has no content when calling update index')); + // Set taxonomy to a scalar (non-array). + $node->taxonomy = 1; + $output = taxonomy_node_update_index($node); + $this->assertTrue(empty($output), t('Node with non-array taxonomy has no content when calling update index')); } } |