summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAngie Byron2008-09-24 02:59:42 (GMT)
committerAngie Byron2008-09-24 02:59:42 (GMT)
commit9bc36524f2782336e75e45b928db5d23da747c26 (patch)
tree02342bba09a01eee025b4bbafbe71fc3a233d14c
parent06d0d8c2a45da477480f667975fc0dcd48231df2 (diff)
#244662 by solotandem and catch: Fix taxonomy_vocabulary_load() when called multiple times.
-rw-r--r--modules/taxonomy/taxonomy.module2
-rw-r--r--modules/taxonomy/taxonomy.test60
2 files changed, 59 insertions, 3 deletions
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 45eab11..a93ef9f 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -994,7 +994,7 @@ function taxonomy_get_term_by_name($name) {
function taxonomy_vocabulary_load($vid) {
static $vocabularies = array();
- if (!isset($vocabularies[$vid])) {
+ if (empty($vocabularies[$vid])) {
// Initialize so if this vocabulary does not exist, we have
// that cached, and we will not try to load this later.
$vocabularies[$vid] = FALSE;
diff --git a/modules/taxonomy/taxonomy.test b/modules/taxonomy/taxonomy.test
index 4bb132f..1f96bda 100644
--- a/modules/taxonomy/taxonomy.test
+++ b/modules/taxonomy/taxonomy.test
@@ -1,6 +1,56 @@
<?php
// $Id$
+class TaxonomyVocabularyLoadTestCase extends DrupalWebTestCase {
+ /**
+ * Implementation of getInfo().
+ */
+ function getInfo() {
+ return array(
+ 'name' => t('Loading taxonomy vocabularies'),
+ 'description' => t('Test loading vocabularies under various conditions.'),
+ 'group' => t('Taxonomy'),
+ );
+ }
+
+ /**
+ * Implementation of setUp() {
+ */
+ function setUp() {
+ parent::setUp('taxonomy');
+ $admin_user = $this->drupalCreateUser(array('administer taxonomy'));
+ $this->drupalLogin($admin_user);
+ }
+
+ /**
+ * Ensure that when an invalid vocabulary vid is loaded, it is possible
+ * to load the same vid successfully if it subsequently becomes valid.
+ */
+ function testTaxonomyVocabularyLoadReturnFalse() {
+ // Load a vocabulary that doesn't exist.
+ $vocabularies = taxonomy_get_vocabularies();
+ $vid = count($vocabularies) + 1;
+ $vocabulary = taxonomy_vocabulary_load($vid);
+ // This should not return an object because no such vocabulary exists.
+ $this->assertTrue(!is_object($vocabulary), t('No object loaded.'));
+
+ // Create a new vocabulary.
+ $edit = array(
+ 'name' => $this->randomName(),
+ 'description' => $this->randomName(),
+ 'help' => '',
+ 'weight' => 0,
+ );
+ $this->drupalPost('admin/content/taxonomy/add/vocabulary', $edit, t('Save'));
+
+ // Load the vocabulary with the same $vid from earlier.
+ // This should return a vocabulary object since it now matches a real vid.
+ $vocabulary = taxonomy_vocabulary_load($vid);
+ $this->assertTrue(is_object($vocabulary), t('Vocabulary is an object'));
+ $this->assertTrue($vocabulary->vid == $vid, t('Valid vocabulary vid is the same as our previously invalid one.'));
+ }
+}
+
class TaxonomyVocabularyFunctionsTestCase extends DrupalWebTestCase {
/**
* Implementation of getInfo().
@@ -8,12 +58,19 @@ class TaxonomyVocabularyFunctionsTestCase extends DrupalWebTestCase {
function getInfo() {
return array(
'name' => t('Vocabulary functions'),
- 'description' => t('Create/Edit/Delete vocabulary and assert that all fields were properly saved.'),
+ 'description' => t('Test loading, saving, and deleting vocabularies.'),
'group' => t('Taxonomy')
);
}
/**
+ * Implementation of setUp().
+ */
+ function setUp() {
+ parent::setUp('taxonomy');
+ }
+
+ /**
* Create/Edit/Delete vocabulary and assert that all fields were properly saved.
*/
function testVocabularyFunctions() {
@@ -81,7 +138,6 @@ class TaxonomyVocabularyFunctionsTestCase extends DrupalWebTestCase {
}
}
-
class TaxonomyTermFunctionsTestCase extends DrupalWebTestCase {
/**
* Implementation of getInfo().