#244662 by solotandem and catch: Fix taxonomy_vocabulary_load() when called multiple times.

merge-requests/26/head
Angie Byron 2008-09-24 02:59:42 +00:00
parent 06d0d8c2a4
commit 9bc36524f2
2 changed files with 59 additions and 3 deletions

View File

@ -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;

View File

@ -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,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().