diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index 45eab11cae7525fddcd9ca3e68a0f7975b55fa12..a93ef9fb0aee945914cd6852303a70874950827e 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 4bb132f73f3f68724054d0d9e9a5777011ec1e1e..1f96bdaaf129a58625a8a58e454ed8b108a150bc 100644 --- a/modules/taxonomy/taxonomy.test +++ b/modules/taxonomy/taxonomy.test @@ -1,6 +1,56 @@ 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,11 +58,18 @@ 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. */ @@ -81,7 +138,6 @@ class TaxonomyVocabularyFunctionsTestCase extends DrupalWebTestCase { } } - class TaxonomyTermFunctionsTestCase extends DrupalWebTestCase { /** * Implementation of getInfo().