This repository has been archived on 2025-06-21. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
suitedesk/modules/token/token_actions.test

79 lines
2.7 KiB
Text

<?php
/**
* @file
* Tests for the token_actions module.
*/
class TokenActionsTestCase extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => t('Token action tests'),
'description' => t('Test some of the token actions and tokens.'),
'group' => t('Token'),
);
}
function setUp() {
parent::setUp('token', 'token_actions', 'trigger');
$user = $this->drupalCreateUser(array('administer actions', 'administer site configuration', 'administer users'));
$this->drupalLogin($user);
}
/**
* Test user actions and triggers.
*/
function testUserActions() {
$insert_action = $this->createAction('token_actions_message_action', array(
'message' => 'Yay [site-name] has a new user [user] with an ID of [uid] and e-mail address of [mail]!',
));
$this->assignTriggerAction('user', 'insert', $insert_action);
// Create a user to trigger the action.
$edit = array();
$edit['name'] = $this->randomName();
$edit['mail'] = $edit['name'] .'@example.com';
$edit['pass[pass1]'] = $this->randomName();
$edit['pass[pass2]'] = $edit['pass[pass1]'];
$this->drupalPost('admin/user/user/create', $edit, t('Create new account'));
$account = user_load(array('name' => $edit['name']));
$this->assertText("Yay Drupal has a new user {$account->name} with an ID of {$account->uid} and e-mail address of {$account->mail}!", 'Tokenized message displays');
}
/**
* Create an action.
*
* @param $action
* The machine name of the action.
* @param $edit
* An optional array to pass onto drupalPost() for configuring the action.
*
* @return
* The created action object.
*/
function createAction($action, $edit = array()) {
$edit += array(
'actions_description' => $this->randomName(),
);
$this->drupalPost('admin/settings/actions/configure/'. md5($action), $edit, t('Save'));
$this->assertText('The action has been successfully saved.');
return db_fetch_object(db_query("SELECT * FROM {actions} WHERE type = 'system' AND callback = '%s' AND description = '%s'", $action, $edit['actions_description']));
}
/**
* Assign an action to a trigger.
*
* @param $type
* The trigger type.
* @param $trigger
* The trigger.
* @param $action
* The action object.
*/
function assignTriggerAction($type, $trigger, $action) {
$edit['aid'] = md5($action->aid);
$this->drupalPost("admin/build/trigger/{$type}", $edit, 'Assign', array(), array(), "trigger-{$type}-{$trigger}-assign-form");
return $this->assertLinkByHref("admin/build/trigger/unassign/{$type}/{$trigger}/{$edit['aid']}", 0, t('Action assigned to @type @trigger trigger.', array('@type' => $type, '@trigger' => $trigger)));
}
}