View source
<?php
require_once 'messaging_testcase.inc';
class Messaging_API_Tests extends MessagingTestCase {
function getInfo() {
return array(
'name' => 'Messaging API',
'group' => 'Messaging',
'description' => 'Messaging API functions',
);
}
function setUp() {
parent::setUp('token', 'autoload', 'messaging', 'messaging_debug', 'messaging_simple', 'messaging_mail');
variable_set('messaging_method_simple', array(
'filter' => 0,
));
variable_set('messaging_method_debug', array(
'filter' => 0,
));
}
function testMessagingBasicAPI() {
$testall = _messaging_callback('messaging_test_foo_getargs_callback');
$test123 = _messaging_callback('messaging_test_foo_getargs_callback', 1, 2, 3);
$this
->assertEqual(_messaging_callback_invoke($testall, 0, 1, 2), array(
0,
1,
2,
), 'Simple callback returns right parameters');
$this
->assertEqual(_messaging_callback_invoke($test123, 4, 5, 6), array(
1,
2,
3,
4,
5,
6,
), 'Parameters callback returns right parameters');
$msgcall = _messaging_callback('messaging_test_foo_message_callback');
$callbacks = array();
_messaging_callback_add($callbacks, 'test1', $msgcall);
_messaging_callback_add($callbacks, 'test2', $msgcall);
$message = $this
->randomMessage();
$result = messaging_message_callbacks(array(
'test1',
'test2',
), $message, $callbacks);
$this
->assertEqual($message, $result, 'Message callback returns right parameters');
$message = $this
->randomMessage();
$method = array(
'type' => MESSAGING_TYPE_PULL,
);
$message->method = 'simple';
$user = $this
->drupalCreateUser();
$sender = $this
->drupalCreateUser();
$message
->set_user($user);
$message
->set_sender($sender);
$message
->queue();
$this
->assertTrue($message->mqid, 'The message has been stored successfully');
$load = messaging_message_load($message->mqid);
$this
->assertTrue($message->mqid == $load->mqid && $message->subject == $load->subject, 'The message has been retrieved successfully');
$load
->delete();
messaging_static('messaging_message_load', NULL, TRUE);
$this
->assertFalse(messaging_message_load($message->mqid), 'The message has been deleted');
}
function testMessagingSendingAPI() {
$this
->messagingStartTest();
$test_method = 'simple';
$info = array(
'glue' => '+',
'subject_glue' => '-',
'footer' => '--',
'filter' => FALSE,
);
$send_method = new Messaging_Send_Method($info, $test_method);
$user = $this
->drupalCreateUser();
$user->messaging_default = $test_method;
$method_info = messaging_method_info(NULL, NULL, NULL, TRUE);
$this
->assertEqual(!empty($method_info[$test_method]), TRUE, 'Messaging method info retrieves information about methods');
$this
->assertEqual(messaging_method_info($test_method, 'filter') === 0, TRUE, 'Messaging method info retrieves filter information');
$this
->assertEqual(messaging_method_default($user) === $test_method, TRUE, 'Messaging method default is working for test user');
$message = $this
->randomMessage();
$message->method = $test_method;
$body = implode($info['glue'], array(
$message->body['header'],
$message->body['main'],
$info['footer'],
$message->body['footer'],
));
$render = clone $message;
$send_method
->message_render($render);
$this
->assertEqual($render->subject == $message->subject && $render->body == $body, TRUE, 'Message successfully rendered, first try');
$message->subject = array(
$message->subject,
$message->subject,
);
$render = clone $message;
$send_method
->message_render($render);
$this
->assertEqual($render->subject == implode($info['subject_glue'], $message->subject) && $render->body == $body, TRUE, 'Message successfully rendered, second try');
$message1 = $this
->randomMessage();
$message2 = $this
->randomMessage();
$this
->assertTrue(messaging_message_send_user($user, $message1, NULL, 1), 'Message successfully sent for user');
$user2 = $this
->drupalCreateUser();
$user2->messaging_default = $test_method;
$this
->assertTrue(messaging_message_send(array(
$user->uid,
$user2->uid,
), $message2, $test_method, 1), 'Bulk message successfully sent');
$queued = messaging_store('get', array(
'uid' => $user->uid,
));
$this
->assertEqual(count($queued), 2, 'We have the right number of messages in queue: ' . count($queued));
$pending = messaging_pull_pending($test_method, array(
$user->uid,
), 0, FALSE);
$this
->assertEqual(count($pending), 2, 'We can pull the right number of messages from queue: ' . count($pending));
messaging_store('sent', array_keys($queued), TRUE);
$logged = messaging_store('get', array(
'uid' => $user->uid,
'queue' => 0,
'log' => 1,
));
$this
->assertEqual(count($logged), 2, 'We have the right number of messages as logs');
messaging_store('del', array(
'uid' => $user->uid,
'mqid' => array_keys($queued),
));
$this
->assertEqual(count(messaging_store('get', array(
'uid' => $user->uid,
))), 0, 'The logs have been successfully deleted');
$user = $this
->drupalCreateUser();
$user->messaging_default = $test_method;
$message1 = $this
->randomMessage();
$message2 = $this
->randomMessage();
$this
->assertTrue(messaging_message_send_user($user, $message1, NULL, 1), 'Message successfully queued for user');
$this
->assertTrue(messaging_message_send(array(
$user->mail,
$user->mail,
), $message2, $test_method, 1), 'Bulk message successfully queued for multiple destinations.');
$queued = messaging_store('get', array(
'method' => $test_method,
'cron' => 1,
'queue' => 1,
));
$this
->assertEqual(count($queued), 2, 'We have the right number of messages in queue: ' . count($queued));
messaging_store('queue_process', 10);
$queued = messaging_store('get', array(
'method' => $test_method,
));
$this
->assertEqual(count($queued), 0, 'We have sent the messages in queue: ' . count($queued));
$sent = messaging_simple_get_messages($user->uid, 0);
$this
->assertEqual(count($sent), 2, 'Two messages have been sent.');
$this
->messagingCleanUp();
}
}