#595876 by c960657: Fixed taxonomy term reordering (with tests).
parent
6c5e31abcb
commit
dec6514c3b
|
@ -1581,6 +1581,7 @@ class DrupalWebTestCase extends DrupalTestCase {
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'text':
|
case 'text':
|
||||||
case 'textarea':
|
case 'textarea':
|
||||||
|
case 'hidden':
|
||||||
case 'password':
|
case 'password':
|
||||||
$post[$name] = $edit[$name];
|
$post[$name] = $edit[$name];
|
||||||
unset($edit[$name]);
|
unset($edit[$name]);
|
||||||
|
|
|
@ -240,7 +240,7 @@ function taxonomy_overview_terms($form, &$form_state, $vocabulary) {
|
||||||
|
|
||||||
// Check for confirmation forms.
|
// Check for confirmation forms.
|
||||||
if (isset($form_state['confirm_reset_alphabetical'])) {
|
if (isset($form_state['confirm_reset_alphabetical'])) {
|
||||||
return taxonomy_vocabulary_confirm_reset_alphabetical($form_state, $vocabulary->vid);
|
return taxonomy_vocabulary_confirm_reset_alphabetical($form, $form_state, $vocabulary->vid);
|
||||||
}
|
}
|
||||||
|
|
||||||
$form['#vocabulary'] = $vocabulary;
|
$form['#vocabulary'] = $vocabulary;
|
||||||
|
|
|
@ -478,6 +478,69 @@ class TaxonomyTermTestCase extends TaxonomyWebTestCase {
|
||||||
$this->assertResponse(404, t('The taxonomy term page was not found'));
|
$this->assertResponse(404, t('The taxonomy term page was not found'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save, edit and delete a term using the user interface.
|
||||||
|
*/
|
||||||
|
function testTermReorder() {
|
||||||
|
$this->createTerm($this->vocabulary);
|
||||||
|
$this->createTerm($this->vocabulary);
|
||||||
|
$this->createTerm($this->vocabulary);
|
||||||
|
|
||||||
|
// Fetch the created terms in the default alphabetical order, i.e. term1
|
||||||
|
// precedes term2 alphabetically, and term2 precedes term3.
|
||||||
|
drupal_static_reset('taxonomy_get_tree');
|
||||||
|
drupal_static_reset('taxonomy_get_treeparent');
|
||||||
|
drupal_static_reset('taxonomy_get_treeterms');
|
||||||
|
list($term1, $term2, $term3) = taxonomy_get_tree($this->vocabulary->vid);
|
||||||
|
|
||||||
|
// Change the order to term2, term3, term1. Emulate the reordering done by
|
||||||
|
// tabledrag.js by changing the page HTML source. Each term has three hidden
|
||||||
|
// fields, "tid:1:0[tid]", "tid:1:0[parent]", and "tid:1:0[depth]". The
|
||||||
|
// order of the input fields in the page is used when the form is processed.
|
||||||
|
$this->drupalGet('admin/structure/taxonomy/' . $this->vocabulary->vid . '/list');
|
||||||
|
$reorder = array(
|
||||||
|
'tid:' . $term1->tid . ':0' => 'tid:' . $term2->tid . ':0',
|
||||||
|
'tid:' . $term2->tid . ':0' => 'tid:' . $term3->tid . ':0',
|
||||||
|
'tid:' . $term3->tid . ':0' => 'tid:' . $term1->tid . ':0',
|
||||||
|
);
|
||||||
|
$this->drupalSetContent(strtr($this->drupalGetContent(), $reorder));
|
||||||
|
|
||||||
|
// Make term3 a child of term2, and update all hidden fields.
|
||||||
|
$edit = array(
|
||||||
|
'tid:' . $term2->tid . ':0[tid]' => $term2->tid,
|
||||||
|
'tid:' . $term2->tid . ':0[parent]' => 0,
|
||||||
|
'tid:' . $term2->tid . ':0[depth]' => 0,
|
||||||
|
'tid:' . $term3->tid . ':0[tid]' => $term3->tid,
|
||||||
|
'tid:' . $term3->tid . ':0[parent]' => $term2->tid,
|
||||||
|
'tid:' . $term3->tid . ':0[depth]' => 1,
|
||||||
|
'tid:' . $term1->tid . ':0[tid]' => $term1->tid,
|
||||||
|
'tid:' . $term1->tid . ':0[parent]' => 0,
|
||||||
|
'tid:' . $term1->tid . ':0[depth]' => 0,
|
||||||
|
);
|
||||||
|
$this->drupalPost(NULL, $edit, t('Save'));
|
||||||
|
|
||||||
|
drupal_static_reset('taxonomy_get_tree');
|
||||||
|
drupal_static_reset('taxonomy_get_treeparent');
|
||||||
|
drupal_static_reset('taxonomy_get_treeterms');
|
||||||
|
$terms = taxonomy_get_tree($this->vocabulary->vid);
|
||||||
|
$this->assertEqual($terms[0]->tid, $term2->tid, t('Term 2 was moved above term 1.'));
|
||||||
|
$this->assertEqual($terms[1]->parents, array($term2->tid), t('Term 3 was made a child of term 2.'));
|
||||||
|
$this->assertEqual($terms[2]->tid, $term1->tid, t('Term 1 was moved below term 2.'));
|
||||||
|
|
||||||
|
$this->drupalPost('admin/structure/taxonomy/' . $this->vocabulary->vid . '/list', array(), t('Reset to alphabetical'));
|
||||||
|
// Submit confirmation form.
|
||||||
|
$this->drupalPost(NULL, array(), t('Reset to alphabetical'));
|
||||||
|
|
||||||
|
drupal_static_reset('taxonomy_get_tree');
|
||||||
|
drupal_static_reset('taxonomy_get_treeparent');
|
||||||
|
drupal_static_reset('taxonomy_get_treeterms');
|
||||||
|
$terms = taxonomy_get_tree($this->vocabulary->vid);
|
||||||
|
$this->assertEqual($terms[0]->tid, $term1->tid, t('Term 1 was moved to back above term 2.'));
|
||||||
|
$this->assertEqual($terms[1]->tid, $term2->tid, t('Term 2 was moved to back below term 1.'));
|
||||||
|
$this->assertEqual($terms[2]->tid, $term3->tid, t('Term 3 is still below term 2.'));
|
||||||
|
$this->assertEqual($terms[2]->parents, array($term2->tid), t('Term 3 is still a child of term 2.').var_export($terms[1]->tid,1));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test taxonomy_get_term_by_name().
|
* Test taxonomy_get_term_by_name().
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue