class NotificationsLiteTests in Notifications 6.4
Same name and namespace in other branches
- 6.2 tests/notifications_lite.test \NotificationsLiteTests
- 6.3 tests/notifications_lite.test \NotificationsLiteTests
- 7 tests/notifications_lite.test \NotificationsLiteTests
Hierarchy
- class \NotificationsTestCase extends \MessagingTestCase
- class \NotificationsLiteTests
Expanded class hierarchy of NotificationsLiteTests
File
- tests/
notifications_lite.test, line 9
View source
class NotificationsLiteTests extends NotificationsTestCase {
function getInfo() {
return array(
'name' => 'Notifications Lite',
'group' => 'Notifications',
'description' => 'Notifications Lite message sending and composition',
);
}
function setUp() {
parent::setUp('messaging_simple', 'notifications_digest', 'notifications_lite');
// Set some defaults: method simple, interval immediate
variable_set('notifications_default_send_interval', 0);
variable_set('notifications_default_send_method', 'simple');
// Set fake site name for comparison after token replacement
variable_set('site_name', 'Test Site');
}
/**
* Test simple sending cases
*/
function testNotificationsLite() {
$user = $this
->drupalCreateUser();
$send_interval = 0;
$send_method = 'simple';
// Test immediate sending
foreach (array(
1,
2,
) as $index) {
notifications_lite_send($user->uid, "Subject {$index}", "Body {$index}");
}
// There should be two queued rows and two queued events
$this
->assertUserRows('notifications_queue', 2, $user->uid, 'Two queued notifications');
$this
->assertTableRows('notifications_event', 2, NULL, 'Two queued events');
//$this->dumpTable('notifications_queue');
//$this->dumpTable('notifications_event');
//$this->dumpTable('messaging_destination');
// Send, and check again
$sqid = notifications_queue()
->process_prepare();
$count = notifications_queue()
->process_queue($send_interval, $sqid);
$this
->assertEqual($count, 2, "Processed two rows in queue ({$count})");
// After processing, events must be gone from the table
$this
->assertTableRows('notifications_event', 0);
//$this->dumpTable('notifications_event');
$this
->assertUserRows('notifications_queue', 0, $user->uid, 'No queued notifications');
// Retrieve messages and check formatting
//$messages = messaging_store('get', array('method' => $send_method, 'uid' => $user->uid));
$messages = messaging_simple_get_messages(array(
'uid' => $user->uid,
));
$this
->assertEqual(count($messages), 2, 'Retrieved two messages from store');
foreach (array(
1,
2,
) as $index) {
$message = array_shift($messages);
$this
->assertEqual("Subject {$index}", $message->subject, "Right subject for message {$index}: {$message->subject}");
}
// Now test short digesting for notifications lite messages. Set digests and refresh cache.
db_query("DELETE FROM {messaging_simple}");
variable_set('notifications_digest_methods', array(
$send_interval => 'short',
));
notifications_build_method(0, TRUE);
// Again, send two messages but this time check they're digested into one.
//messaging_log_start();
$sent = $this
->sendLiteMessages($user->uid, 4);
//$this->dumpLogs();
// Get messages and compare
//$messages = messaging_store('get', array('method' => $send_method, 'uid' => $user->uid));
$messages = messaging_simple_get_messages(array(
'uid' => $user->uid,
));
$this
->assertEqual($count = count($messages), 1, "Retrieved just one message from store ({$count})");
$message = array_shift($messages);
// Check that all messages are in the message body
foreach ($sent as $index => $msg) {
$this
->assertTrue(strpos($message->body, $msg->subject), "The message {$index} is contained in the digest");
}
// Same for long digesting, both subject and body should be there
db_query("DELETE FROM {messaging_simple}");
variable_set('notifications_digest_methods', array(
$send_interval => 'long',
));
notifications_build_method($send_interval, TRUE);
// We try three messages this time
$sent = $this
->sendLiteMessages($user->uid, 2);
//$messages = messaging_store('get', array('method' => $send_method, 'uid' => $user->uid));
$messages = messaging_simple_get_messages(array(
'uid' => $user->uid,
));
$this
->assertEqual($count = count($messages), 1, "Retrieved one sent message from store ({$count})");
// Check that all messages are in the message body
$message = array_shift($messages);
foreach ($sent as $index => $msg) {
$this
->assertTrue(strpos($message->body, $msg->subject), "The message {$index} subject is contained in the digest");
$this
->assertTrue(strpos($message->body, $msg->body), "The message {$index} body is contained in the digest");
}
// Dump for test debugging
//$this->printDebug($message, 'Message');
//$this->dumpTable('messaging_store');
//$this->dumpLogs();
}
/**
* Helper function to send messages and do queue processing
*/
function sendLiteMessages($uid, $count) {
$messages = array();
for ($i = 1; $i <= $count; $i++) {
$msg = new Stdclass();
$msg->subject = "Lite Subject {$i}";
$msg->body = "Body for message {$i}";
notifications_lite_send($uid, $msg->subject, $msg->body);
$messages[$i] = $msg;
}
// There should be one queued notification and one event for each message
$this
->assertUserRows('notifications_queue', $count, $uid, "We have {$count} notifications in queue");
$rows = notifications_queue()
->process_rows(array(
'uid' => $uid,
));
$this
->assertEqual($count, $rows, "Processed all rows in queue ({$rows})");
return $messages;
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
NotificationsLiteTests:: |
function | |||
NotificationsLiteTests:: |
function | Helper function to send messages and do queue processing | ||
NotificationsLiteTests:: |
function |
Set up some required modules Overrides NotificationsTestCase:: |
||
NotificationsLiteTests:: |
function | Test simple sending cases | ||
NotificationsTestCase:: |
function | Helper function to create a subscription | ||
NotificationsTestCase:: |
function | Helper function. Simple row counting with conditions, uses query builder | ||
NotificationsTestCase:: |
function | |||
NotificationsTestCase:: |
function | |||
NotificationsTestCase:: |
function | |||
NotificationsTestCase:: |
function |