node_revisions.test in SimpleTest 6
File
tests/node_revisions.test
View source
<?php
class NodeRevisionsTest extends DrupalTestCase {
function get_info() {
return array(
'name' => t('Node revisions tests'),
'desc' => t('Creates a node of type page and then a user tries various revision actions such as viewing, reverting to, and deleting revisions.'),
'group' => 'Node Tests',
);
}
function prepareRevisions($log = FALSE) {
$returnarray = array();
$numtimes = 3;
for ($i = 0; $i < $numtimes; $i++) {
$settings = array(
'revision' => 1,
);
if ($log && $i == 1) {
$logmessage = $this
->randomName(32);
$settings['log'] = $logmessage;
$returnarray['log'] = $logmessage;
}
if ($i != 0) {
$settings['nid'] = $node->nid;
}
$node = $this
->drupalCreateNode($settings);
if ($i == 1) {
$returnarray['text'] = $node->body;
$returnarray['vid'] = $node->vid;
}
sleep(1);
}
$returnarray['node'] = $node;
return $returnarray;
}
function testNodeRevisions() {
extract($this
->prepareRevisions());
$test_user = $this
->drupalCreateUserRolePerm(array(
'view revisions',
));
$this
->drupalLoginUser($test_user);
$this
->drupalGet("node/{$node->nid}/revisions/{$vid}/view");
$this
->assertText($text, 'Check to make sure correct revision text appears on "view revisions" page.');
$this
->cleanup($node->nid);
}
function testLogMessage() {
extract($this
->prepareRevisions(TRUE));
$test_user = $this
->drupalCreateUserRolePerm(array(
'view revisions',
));
$this
->drupalLoginUser($test_user);
$this
->drupalGet("node/{$node->nid}/revisions");
$this
->assertText($log, 'Check to make sure log message is properly displayed.');
$this
->cleanup($node->nid);
}
function testRevisionRevert() {
extract($this
->prepareRevisions());
$test_user = $this
->drupalCreateUserRolePerm(array(
'revert revisions',
'edit any page content',
));
$this
->drupalLoginUser($test_user);
$this
->drupalPost("node/{$node->nid}/revisions/{$vid}/revert", array(), 'Revert');
$newnode = node_load($node->nid);
$this
->assertTrue($text == $newnode->body, 'Check to make sure reversions occur properly');
$this
->cleanup($node->nid);
}
function testRevisionDelete() {
extract($this
->prepareRevisions());
$test_user = $this
->drupalCreateUserRolePerm(array(
'delete revisions',
'delete any page content',
));
$this
->drupalLoginUser($test_user);
$this
->drupalPost("node/{$node->nid}/revisions/{$vid}/delete", array(), 'Delete');
$this
->assertTrue(db_result(db_query('SELECT COUNT(vid) FROM {node_revisions} WHERE nid = %d and VID = %d', $node->nid, $vid)) == 0, 'Check to make sure revisions delete properly');
$this
->cleanup($node->nid);
$this
->cleanup($node->nid);
}
function cleanup($nid) {
node_delete($nid);
}
}