function ContentTaxonomyTest::testContentTaxonomySaving in Content Taxonomy 6
Same name and namespace in other branches
- 6.2 tests/content_taxonomy.test \ContentTaxonomyTest::testContentTaxonomySaving()
File
- tests/
content_taxonomy.test, line 83
Class
- ContentTaxonomyTest
- Base Class for testing Content Taxonomy, extends the ContentCrudTestCase Class from CCK, which provides many useful helper functions
Code
function testContentTaxonomySaving() {
$type = $this->content_types[0];
$type_url = str_replace('_', '-', $type->type);
$terms = $this
->createTerms(4);
$settings = array(
'type' => 'content_taxonomy',
'widget_type' => 'content_taxonomy_options',
'vid' => $terms[0]->vid,
'parent' => 0,
'parent_php_code' => '',
'show_depth' => 0,
'save_term_node' => FALSE,
'depth' => NULL,
'hide_taxonomy_fields' => TRUE,
);
$field = $this
->createField($settings, 0);
$field_name = $field['field_name'];
//Check if field get's exposed to the content type
$this
->drupalGET('node/add/' . $type_url);
$this
->assertRaw($field_name, 'Field found on content type form');
$this
->assertRaw($terms[0]->name, 'Option value found on content type form');
$this
->assertRaw($terms[1]->name, 'Option value found on content type form');
$this
->assertRaw($terms[2]->name, 'Option value found on content type form');
$this
->assertRaw($terms[3]->name, 'Option value found on content type form');
// Create a node with one value selected
$edit = array();
$edit['title'] = $this
->randomName(20);
$edit['body'] = $this
->randomName(20);
$edit[$field_name . '[value]'] = $terms[0]->tid;
$this
->drupalPost('node/add/' . $type_url, $edit, 'Save');
$node = node_load(array(
'title' => $edit['title'],
));
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
$this
->assertFalse($in_term_node, "Terms not in term_node table");
$this
->assertEqual($node->{$field_name}[0]['value'], $terms[0]->tid, 'Terms saved');
$this
->drupalGet('node/' . $node->nid);
$this
->assertText($terms[0]->name, 'Terms displayed');
$this
->assertNoText($terms[1]->name, 'Term not displayed');
//Edit the node and select a different value
$edit = array();
$edit[$field_name . '[value]'] = $terms[1]->tid;
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
$this
->assertFalse($in_term_node, "Terms not in term_node table");
$this
->assertIdentical($node->{$field_name}[0]['value'], $terms[1]->tid, 'Terms updated');
$this
->drupalGet('node/' . $node->nid);
$this
->assertText($terms[1]->name, 'Terms displayed');
$this
->assertNoText($terms[0]->name, 'Term not displayed');
//Edit the node and unselect the value (selecting '- None -').
$edit = array();
$edit[$field_name . '[value]'] = '';
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
$this
->assertFalse($in_term_node, "Terms not in term_node table");
$this
->assertIdentical($node->{$field_name}[0]['value'], NULL, 'Terms deleted');
$this
->drupalGet('node/' . $node->nid);
$this
->assertNoText($terms[0]->name, 'Terms not displayed');
$this
->assertNoText($terms[1]->name, 'Terms not displayed');
//CREATE NEW FIELD MULTIPLE
$settings['multiple'] = TRUE;
$field = $this
->createField($settings, 0);
$field_name = $field['field_name'];
//Check if field get's exposed to the content type
$this
->drupalGET('node/add/' . $type_url);
$this
->assertRaw($field_name, 'Field found on content type form');
$this
->assertRaw($terms[0]->name, 'Option value found on content type form');
$this
->assertRaw($terms[1]->name, 'Option value found on content type form');
$this
->assertRaw($terms[2]->name, 'Option value found on content type form');
$this
->assertRaw($terms[3]->name, 'Option value found on content type form');
// Edit the node and select multiple values.
$edit[$field_name . '[value][' . $terms[0]->tid . ']'] = $terms[0]->tid;
$edit[$field_name . '[value][' . $terms[1]->tid . ']'] = $terms[1]->tid;
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
$this
->assertFalse($in_term_node, "Terms not in term_node table");
$tids = array();
foreach ($node->{$field_name} as $key => $value) {
$tids[$value['value']] = $value['value'];
}
if (!in_array($terms[0]->tid, $tids) || !in_array($terms[1]->tid, $tids)) {
$this
->fail("Terms saved");
}
$this
->drupalGet('node/' . $node->nid);
$this
->assertText($terms[0]->name, 'Terms displayed');
$this
->assertText($terms[1]->name, 'Terms displayed');
$this
->assertNoText($terms[2]->name, 'Term not displayed');
//Edit the node and select different values
$edit = array();
$edit[$field_name . '[value][' . $terms[0]->tid . ']'] = FALSE;
$edit[$field_name . '[value][' . $terms[1]->tid . ']'] = $terms[1]->tid;
$edit[$field_name . '[value][' . $terms[2]->tid . ']'] = $terms[2]->tid;
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
$this
->assertFalse($in_term_node, "Terms not in term_node table");
$tids = array();
foreach ($node->{$field_name} as $key => $value) {
$tids[$value['value']] = $value['value'];
}
if (!in_array($terms[2]->tid, $tids) || !in_array($terms[1]->tid, $tids)) {
$this
->fail("Terms updated");
}
if (in_array($terms[0]->tid, $tids)) {
$this
->fail("Terms updated");
}
$this
->drupalGet('node/' . $node->nid);
$this
->assertText($terms[1]->name, 'Terms displayed');
$this
->assertText($terms[2]->name, 'Terms displayed');
$this
->assertNoText($terms[0]->name, 'Term1 not displayed');
//Edit the node and unselect values
$edit = array();
$edit[$field_name . '[value][' . $terms[1]->tid . ']'] = FALSE;
$edit[$field_name . '[value][' . $terms[2]->tid . ']'] = FALSE;
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
$this
->assertFalse($in_term_node, "Terms not in term_node table");
$tids = array();
foreach ($node->{$field_name} as $key => $value) {
$tids[$value['value']] = $value['value'];
}
if (in_array($terms[2]->tid, $tids) || in_array($terms[1]->tid, $tids) || in_array($terms[0]->tid, $tids)) {
$this
->fail("Terms deleted");
}
$this
->drupalGet('node/' . $node->nid);
$this
->assertNoText($terms[1]->name, 'Terms not displayed');
$this
->assertNoText($terms[2]->name, 'Terms not displayed');
$this
->assertNoText($terms[0]->name, 'Terms not displayed');
/**
* Tests Saving in Term Node
*/
$ct = $this->content_types[1];
$ct_url = str_replace('_', '-', $ct->type);
$settings['save_term_node'] = TRUE;
$settings['multiple'] = FALSE;
//$terms = $this->createTerms(4);
$field = $this
->createField($settings, 1);
$field_name = $field['field_name'];
//Check if field get's exposed to the content type
$this
->drupalGET('node/add/' . $ct_url);
$this
->assertRaw($field_name, 'Field found on content type form');
$this
->assertRaw($terms[0]->name, 'Option value found on content type form');
$this
->assertRaw($terms[1]->name, 'Option value found on content type form');
$this
->assertRaw($terms[2]->name, 'Option value found on content type form');
$this
->assertRaw($terms[3]->name, 'Option value found on content type form');
// Create a node with one value selected
$edit = array();
$edit['title'] = $this
->randomName(20);
$edit['body'] = $this
->randomName(20);
$edit[$field_name . '[value]'] = $terms[0]->tid;
$this
->drupalPost('node/add/' . $ct_url, $edit, 'Save');
$node = node_load(array(
'title' => $edit['title'],
));
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
$this
->assertEqual($in_term_node, $terms[0]->tid, "Terms saved in term_node table");
$this
->assertEqual($node->{$field_name}[0]['value'], $terms[0]->tid, 'Terms saved');
$this
->drupalGet('node/' . $node->nid);
$this
->assertText($terms[0]->name, 'Terms displayed');
$this
->assertNoText($terms[1]->name, 'Term not displayed');
//Edit the node and select a different value
$edit = array();
$edit[$field_name . '[value]'] = $terms[1]->tid;
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
$this
->assertEqual($in_term_node, $terms[1]->tid, "Terms updated in term_node table");
$this
->assertEqual($node->{$field_name}[0]['value'], $terms[1]->tid, 'Terms updated');
$this
->drupalGet('node/' . $node->nid);
$this
->assertText($terms[1]->name, 'Terms displayed');
$this
->assertNoText($terms[0]->name, 'Term not displayed');
//Edit the node and unselect the value (selecting '- None -').
$edit = array();
$edit[$field_name . '[value]'] = '';
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $node->nid));
$this
->assertFalse($in_term_node, "Terms deleted from term_node table");
$this
->assertIdentical($node->{$field_name}[0]['value'], NULL, 'Terms deleted');
$this
->drupalGet('node/' . $node->nid);
$this
->assertNoText($terms[0]->name, 'Terms not displayed');
$this
->assertNoText($terms[1]->name, 'Terms not displayed');
//CREATE NEW FIELD MULTIPLE
$settings['multiple'] = TRUE;
$field = $this
->createField($settings, 1);
$field_name = $field['field_name'];
//Check if field get's exposed to the content type
$this
->drupalGET('node/add/' . $ct_url);
$this
->assertRaw($field_name, 'Field found on content type form');
$this
->assertRaw($terms[0]->name, 'Option value found on content type form');
$this
->assertRaw($terms[1]->name, 'Option value found on content type form');
$this
->assertRaw($terms[2]->name, 'Option value found on content type form');
$this
->assertRaw($terms[3]->name, 'Option value found on content type form');
// Edit the node and select multiple values.
$edit[$field_name . '[value][' . $terms[0]->tid . ']'] = $terms[0]->tid;
$edit[$field_name . '[value][' . $terms[1]->tid . ']'] = $terms[1]->tid;
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node1 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[0]->tid));
$this
->assertEqual($in_term_node1, $terms[0]->tid, "Terms updated in term_node table");
$in_term_node2 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[1]->tid));
$this
->assertEqual($in_term_node2, $terms[1]->tid, "Terms updated in term_node table");
$this
->assertNodeMultiValues($node, $field_name, array(
$terms[0],
$terms[1],
));
$this
->drupalGet('node/' . $node->nid);
$this
->assertText($terms[0]->name, 'Terms displayed');
$this
->assertText($terms[1]->name, 'Terms displayed');
$this
->assertNoText($terms[2]->name, 'Term not displayed');
//Edit the node and select different values
$edit = array();
$edit[$field_name . '[value][' . $terms[0]->tid . ']'] = FALSE;
$edit[$field_name . '[value][' . $terms[1]->tid . ']'] = $terms[1]->tid;
$edit[$field_name . '[value][' . $terms[2]->tid . ']'] = $terms[2]->tid;
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[0]->tid));
$this
->assertFalse($in_term_node, "Term deleted term_node table");
$in_term_node3 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[2]->tid));
$this
->assertEqual($in_term_node3, $terms[2]->tid, "Terms updated in term_node table");
$in_term_node2 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[1]->tid));
$this
->assertEqual($in_term_node2, $terms[1]->tid, "Terms updated in term_node table");
$this
->assertNodeMultiValues($node, $field_name, array(
$terms[1],
$terms[2],
), array(
$terms[0],
));
$this
->drupalGet('node/' . $node->nid);
$this
->assertText($terms[1]->name, 'Terms displayed');
$this
->assertText($terms[2]->name, 'Terms displayed');
$this
->assertNoText($terms[0]->name, 'Term1 not displayed');
//Edit the node and unselect values
$edit = array();
$edit[$field_name . '[value][' . $terms[1]->tid . ']'] = FALSE;
$edit[$field_name . '[value][' . $terms[2]->tid . ']'] = FALSE;
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, 'Save');
$node = node_load($node->nid, NULL, TRUE);
$in_term_node1 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[0]->tid));
$this
->assertFalse($in_term_node1, "Term deleted term_node table");
$in_term_node2 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[1]->tid));
$this
->assertFalse($in_term_node2, "Term deleted term_node table");
$in_term_node3 = db_result(db_query("SELECT tid FROM {term_node} WHERE nid = %d AND tid = %d", $node->nid, $terms[2]->tid));
$this
->assertFalse($in_term_node3, "Term deleted term_node table");
$this
->assertNodeMultiValues($node, $field_name, array(), array(
$terms[0],
$terms[1],
$terms[2],
));
$this
->drupalGet('node/' . $node->nid);
$this
->assertNoText($terms[1]->name, 'Terms not displayed');
$this
->assertNoText($terms[2]->name, 'Terms not displayed');
$this
->assertNoText($terms[0]->name, 'Terms not displayed');
}