'Messaging API', 'group' => 'Messaging', 'desc' => 'Messaging API functions' ); } /** * Play with creating, retrieving, deleting a pair messages */ function testMessagingBasicAPI() { $this->messagingStartTest(); // Enable modules and create user for testing $this->drupalModuleEnable('messaging_debug'); $this->drupalModuleEnable('messaging_simple'); $test_method = 'simple'; $user = $this->drupalCreateUserRolePerm(array()); $user->messaging_default = $test_method; // Check messaging settings API $this->drupalVariableSet('messaging_method_simple', array('filter' => 0)); $this->drupalVariableSet('messaging_method_debug', array('filter' => 0)); $info = messaging_method_info(NULL, NULL, NULL, TRUE); $this->assertEqual(!empty($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'); // Try message composition, a pair simple cases, no filter $message = $this->randomMessage(); $info = array('glue' => '+', 'subject_glue' => '-', 'footer' => '--', 'filter' => FALSE); // Calculate the rendered body $body = implode($info['glue'], array($message['body']['header'], $message['body']['main'], $info['footer'], $message['body']['footer'])); $render = messaging_message_render($message, $info); $this->assertEqual(($render['subject'] == $message['subject'] && $render['body'] == $body), TRUE, 'Message successfully rendered, first try'); // Now give it a twist, make subject an array, body a plain text $message['subject'] = array($message['subject'], $message['subject']); $message['body'] = $body; $render = messaging_message_render($message, $info); $this->assertEqual(($render['subject'] == implode($info['subject_glue'], $message['subject']) && $render['body'] == $body), TRUE, 'Message successfully rendered, second try'); // Create fake messages and try sending, they'll end up in messaging queue $message1 = $this->randomMessage(); $message2 = $this->randomMessage(); $this->assertEqual(messaging_message_send_user($user, $message1), TRUE, 'Message successfully sent for user'); $message2['account'] = $user; $this->assertEqual(messaging_message_send(array($user, $user), $message2, $test_method), TRUE, 'Bulk message successfully sent'); // Now there should be two messages in queue for this user retrieve using two different methods $queued = messaging_store('get', array('uid' => $user->uid, 'queue' => 1)); $this->assertEqual(count($queued), 3, 'We have the right number of messages in queue'); $pending = messaging_pull_pending($test_method, array($user->uid), 0, FALSE); $this->assertEqual(count($queued), 3, 'We can pull the right number of messages from queue'); // Make messages into logs and then delete messaging_store('sent', array_keys($queued), TRUE); $logged = messaging_store('get', array('uid' => $user->uid, 'queue' => 0, 'log' => 1)); $this->assertEqual(count($logged), 3, 'We have the right number of messages as logs'); // Try deleting function with many parameters, more than needed actually 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'); // Final clean up of messages in store $this->messagingCleanUp(); } }