function TriggerUserActionTestCase::testUserActionAssignmentExecution in Drupal 7
Tests user action assignment and execution.
File
- modules/
trigger/ trigger.test, line 503 - Tests for trigger.module.
Class
- TriggerUserActionTestCase
- Tests token substitution in trigger actions.
Code
function testUserActionAssignmentExecution() {
$test_user = $this
->drupalCreateUser(array(
'administer actions',
'create article content',
'access comments',
'administer comments',
'skip comment approval',
'edit own comments',
));
$this
->drupalLogin($test_user);
$triggers = array(
'comment_presave',
'comment_insert',
'comment_update',
);
// system_block_ip_action is difficult to test without ruining the test.
$actions = array(
'user_block_user_action',
);
foreach ($triggers as $trigger) {
foreach ($actions as $action) {
$this
->assignSimpleAction($trigger, $action);
}
}
$node = $this
->drupalCreateNode(array(
'type' => 'article',
));
$this
->drupalPost("node/{$node->nid}", array(
'comment_body[und][0][value]' => t("my comment"),
'subject' => t("my comment subject"),
), t('Save'));
// Posting a comment should have blocked this user.
$account = user_load($test_user->uid, TRUE);
$this
->assertTrue($account->status == 0, 'Account is blocked');
$comment_author_uid = $account->uid;
// Now rehabilitate the comment author so it can be be blocked again when
// the comment is updated.
user_save($account, array(
'status' => TRUE,
));
$test_user = $this
->drupalCreateUser(array(
'administer actions',
'create article content',
'access comments',
'administer comments',
'skip comment approval',
'edit own comments',
));
$this
->drupalLogin($test_user);
// Our original comment will have been comment 1.
$this
->drupalPost("comment/1/edit", array(
'comment_body[und][0][value]' => t("my comment, updated"),
'subject' => t("my comment subject"),
), t('Save'));
$comment_author_account = user_load($comment_author_uid, TRUE);
$this
->assertTrue($comment_author_account->status == 0, format_string('Comment author account (uid=@uid) is blocked after update to comment', array(
'@uid' => $comment_author_uid,
)));
// Verify that the comment was updated.
$test_user = $this
->drupalCreateUser(array(
'administer actions',
'create article content',
'access comments',
'administer comments',
'skip comment approval',
'edit own comments',
));
$this
->drupalLogin($test_user);
$this
->drupalGet("node/{$node->nid}");
$this
->assertText(t("my comment, updated"));
$this
->verboseEmail();
}