#244662 by solotandem and catch: Fix taxonomy_vocabulary_load() when called multiple times.
parent
06d0d8c2a4
commit
9bc36524f2
|
@ -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;
|
||||
|
|
|
@ -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().
|
||||
|
|
Loading…
Reference in New Issue