class TaxonomyTestNodeApi in SimpleTest 5
Same name and namespace in other branches
- 6 tests/taxonomy.module.test \TaxonomyTestNodeApi
Hierarchy
- class \DrupalTestCase extends \WebTestCase
- class \TaxonomyTestNodeApi
Expanded class hierarchy of TaxonomyTestNodeApi
File
- tests/
taxonomy.module.test, line 245
View source
class TaxonomyTestNodeApi extends DrupalTestCase {
function get_info() {
return array(
'name' => 'Taxonomy nodeapi',
'desc' => "Save & edit a node and assert that taxonomy terms are saved/loaded properly.",
'group' => 'Taxonomy',
);
}
function testTaxonomyNode() {
//preparing data
// vocabulary hierarchy->single, multiple -> on
$edit = array();
$_t = array(
'vid',
'name',
'description',
'help',
'relations',
'hierarchy',
'multiple',
'required',
'tags',
'module',
'weight',
'nodes',
);
foreach ($_t as $key) {
$edit[$key] = 0;
}
$name = $this
->randomName(20);
$edit['hierarchy'] = 1;
$edit['multiple'] = 1;
$edit['name'] = $name;
$edit['nodes'] = array(
'story' => 'story',
);
taxonomy_save_vocabulary($edit);
$vid = $edit['vid'];
// we need to persist vid after $edit is unset()
$parent = array();
$patternArray = array();
// create 1st term
$termname = $this
->randomName(20);
$data = array(
'name' => $termname,
'description' => '',
'weight' => 0,
'synonyms' => '',
'vid' => $vid,
'tid' => 0,
'relations' => 0,
);
taxonomy_save_term($data);
$_tArray = taxonomy_get_term_by_name($termname);
$parent[$_tArray[0]->tid] = $_tArray[0]->tid;
$patternArray['term name 1'] = $termname;
// create 2nd term
$termname = $this
->randomName(20);
$data = array(
'name' => $termname,
'description' => '',
'weight' => 0,
'synonyms' => '',
'vid' => $vid,
'tid' => 0,
'relations' => 0,
);
taxonomy_save_term($data);
$_tArray = taxonomy_get_term_by_name($termname);
$parent[$_tArray[0]->tid] = $_tArray[0]->tid;
$patternArray['term name 2'] = $termname;
// create test user and login
$perm = array(
'access content',
'create story content',
'edit story content',
);
$account = $this
->drupalCreateUserRolePerm($perm);
$this
->drupalLoginUser($account);
// why is this printing out the user profile page?
// go to node/add/story
$this
->drupalGet(url('node/add/story', NULL, NULL, TRUE));
$req = $this->_browser
->getRequest();
$headers = $this->_browser
->getHeaders();
$content = $this
->drupalGetContent();
// print($content). "\n\n\n all done \n\n";
// try to create story
$title = $this
->randomName();
$body = $this
->randomName(100);
$edit = array(
'title' => $title,
'body' => $body,
'taxonomy-' . $vid => $parent,
);
$this
->drupalPostRequest('node/add/story', $edit, 'Submit');
$content = $this
->drupalGetContent();
$patternArray['body text'] = $body;
$patternArray['title'] = $title;
// $node = array2object(node_load(array('title' => $title)));
$node = node_load(array(
'title' => $title,
));
$this->_browser
->get(url("node/{$node->nid}"));
foreach ($patternArray as $name => $termPattern) {
$this
->assertText($termPattern, "Checking {$name}");
}
// checking database fields
$result = db_query('SELECT tid FROM {term_node} WHERE nid = %d', $node->nid);
while ($nodeRow = db_fetch_array($result)) {
$this
->assertTrue(in_array($nodeRow['tid'], $parent), 'Checking database record');
}
// ok, lets create new terms, and change this node
//pop array
array_pop($parent);
// create 1st term
$termname = $this
->randomName(20);
$data = array(
'name' => $termname,
'description' => '',
'weight' => 0,
'synonyms' => '',
'vid' => $vid,
'tid' => 0,
'relations' => 0,
);
taxonomy_save_term($data);
$_tArray = taxonomy_get_term_by_name($termname);
$parent[] = $_tArray[0]->tid;
$patternArray['term name 2'] = $termname;
// create 2nd term
$termname = $this
->randomName(20);
$data = array(
'name' => $termname,
'description' => '',
'weight' => 0,
'synonyms' => '',
'vid' => $vid,
'tid' => 0,
'relations' => 0,
);
taxonomy_save_term($data);
$_tArray = taxonomy_get_term_by_name($termname);
$parent[] = $_tArray[0]->tid;
$patternArray['term name 3'] = $termname;
$edit = array(
'title' => $title,
'body' => $body,
'taxonomy-' . $vid => $parent,
);
$this
->drupalPostRequest('node/' . $node->nid . '/edit', $edit, 'Submit');
// TODO Do a MUCH better check here of the information msg
$patternArray['information message'] = 'been updated';
foreach ($patternArray as $name => $termPattern) {
$this
->assertText($termPattern, "Checking {$name}");
}
// checking database fields
$result = db_query('SELECT tid FROM {term_node} WHERE nid = %d', $node->nid);
while ($nodeRow = db_fetch_array($result)) {
$this
->assertTrue(in_array($nodeRow['tid'], $parent), 'Checking database field');
}
// delete node through browser
$this
->drupalPostRequest('node/' . $node->nid . '/delete', array(), 'Delete');
// checking after delete
$this->_browser
->get(url("node/" . $node->nid));
$this
->assertNoUnwantedText($termname, "Checking if node exists");
// checking database fields
$result = db_query('SELECT tid FROM {term_node} WHERE nid = %d', $node->nid);
$this
->assertEqual(db_num_rows($result), 0, 'Checking database field after deletion');
// delete vocabulary
// to avoid exception messages create array with empty fields
$edit = array();
foreach ($_t as $key) {
$edit[$key] = 0;
}
$edit['name'] = 0;
$edit['vid'] = $vid;
taxonomy_save_vocabulary($edit);
// restoring status
$this
->drupalModuleDisable('story');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DrupalTestCase:: |
property | |||
DrupalTestCase:: |
property | |||
DrupalTestCase:: |
property | |||
DrupalTestCase:: |
property | |||
DrupalTestCase:: |
property | |||
DrupalTestCase:: |
function | Will trigger a pass if both parameters refer to different objects. Fail otherwise. | ||
DrupalTestCase:: |
function | Will trigger a pass if the two parameters have the same value only. Otherwise a fail. | ||
DrupalTestCase:: |
function | Confirms that an error has occurred and optionally that the error text matches exactly. | ||
DrupalTestCase:: |
function | Confirms that an error has occurred and that the error text matches a Perl regular expression. | ||
DrupalTestCase:: |
function | Will trigger a pass if the two parameters have the same value and same type. Otherwise a fail. | ||
DrupalTestCase:: |
function | Type and class test. Will pass if class matches the type name or is a subclass or if not an object, but the type is correct. | ||
DrupalTestCase:: |
function | Confirms that no errors have occurred so far in the test method. | ||
DrupalTestCase:: |
function | Type and class mismatch test. Will pass if class name or underling type does not match the one specified. | ||
DrupalTestCase:: |
function | Will trigger a pass if the two parameters have a different value. Otherwise a fail. | ||
DrupalTestCase:: |
function | Will trigger a pass if the two parameters have the different value or different type. | ||
DrupalTestCase:: |
function | Will be true if the value is set. | ||
DrupalTestCase:: |
function | Will trigger a pass if the Perl regex pattern is not present in subject. Fail if found. | ||
DrupalTestCase:: |
function | Will trigger a pass if the raw text is NOT found on the loaded page Fail otherwise. | ||
DrupalTestCase:: |
function | Will be true if the value is null. | ||
DrupalTestCase:: |
function | Will trigger a pass if both parameters refer to the same object. Fail otherwise. | ||
DrupalTestCase:: |
function | Will trigger a pass if the Perl regex pattern is found in the subject. Fail otherwise. | ||
DrupalTestCase:: |
function | Will trigger a pass if the raw text is found on the loaded page Fail otherwise. | ||
DrupalTestCase:: |
function | Follows a link by name. Will click the first link found with this link text by default, or a later one if an index is given. Match is case insensitive with normalised space. Does make assertations if the click was sucessful or not and it does… | ||
DrupalTestCase:: |
function | @abstract Checks to see if we need to send a http-auth header to authenticate when browsing a site. | ||
DrupalTestCase:: |
function | Create a role / perm combination specified by permissions | ||
DrupalTestCase:: |
function | Creates a user / role / permissions combination specified by permissions | ||
DrupalTestCase:: |
function | @abstract Brokder for the get function adds the authentication headers if necessary @author Earnest Berry III <earnest.berry@gmail.com> | ||
DrupalTestCase:: |
function | @TODO: needs documentation | ||
DrupalTestCase:: |
function | Logs in a user with the internal browser | ||
DrupalTestCase:: |
function | Disables a drupal module | ||
DrupalTestCase:: |
function | Enables a drupal module | ||
DrupalTestCase:: |
function | Do a post request on a drupal page. It will be done as usual post request with SimpleBrowser | ||
DrupalTestCase:: |
function | @abstract Broker for the post function adds the authentication headers if necessary @author Earnest Berry III <earnest.berry@gmail.com> | ||
DrupalTestCase:: |
function | |||
DrupalTestCase:: |
function | Set a druapl variable and keep track of the changes for tearDown() | ||
DrupalTestCase:: |
function | Generates a random string, to be used as name or whatever | ||
DrupalTestCase:: |
function | Just some info for the reporter | ||
DrupalTestCase:: |
function | tearDown implementation, setting back switched modules etc | 1 | |
TaxonomyTestNodeApi:: |
function | |||
TaxonomyTestNodeApi:: |
function |