class NotificationsAnonymousTests in Notifications 6.4
Same name and namespace in other branches
- 7 tests/notifications_anonymous.test \NotificationsAnonymousTests
Hierarchy
- class \NotificationsTestCase extends \MessagingTestCase
- class \NotificationsAnonymousTests
Expanded class hierarchy of NotificationsAnonymousTests
File
- tests/
notifications_anonymous.test, line 8
View source
class NotificationsAnonymousTests extends NotificationsTestCase {
function getInfo() {
return array(
'name' => 'Anonymous Subscriptions',
'group' => 'Notifications',
'description' => 'Subscriptions and Notifications for anonymous users.',
);
}
function setUp() {
parent::setUp('messaging_mail', 'notifications_content', 'notifications_ui', 'notifications_anonymous');
$this
->anonymousCreatePermissions(array(
'access content',
'access comments',
'maintain own subscriptions',
'subscribe to author',
'subscribe to content',
'subscribe to content type',
));
// Set some defaults
variable_set('notifications_default_send_interval', 0);
// Immediately
variable_set('notifications_default_send_method', 'mail');
// Mail for everybody
variable_set('messaging_method_mail', array(
'queue' => 1,
'log' => 1,
));
// Enable queue, log for mail
// This send interval (0) and method (mail) are defaults enabled for anonymous
}
function testAnonymousSubscriptions() {
// Create a new content-type for subscribing to
$ctype = $this
->drupalCreateContentType();
// Enable this content type for thread/author/type subscriptions
variable_set('notifications_content_type', array(
'thread',
'nodetype',
'author',
));
// Enable all UI pages
$this
->enableUIPages();
$this
->enableSubscriptionTypes();
// Create user and email address
$anonymous = drupal_anonymous_user();
$mail = $this
->createMail();
// Create a content type subscription
$subscription = $this
->anonymousCreateSubscription($mail, 'nodetype', array(
'type' => $ctype->type,
));
// Create a node and a comment and check the subscription has worked
$author = $this
->drupalCreateUser(array(
"create {$ctype->type} content",
'post comments',
));
$node = $this
->drupalCreateNode(array(
'type' => $ctype->type,
'uid' => $author->uid,
));
$comment = $this
->drupalCreateComment($node);
// There should be two queued notifications that will be gone after processing
$this
->assertUserRows('notifications_queue', 2, 0);
$this
->notificationsProcessQueue(2, 0);
// We should have two messages sent and queued using mail
$messages = messaging_store()
->get_messages(array(
'uid' => 0,
'method' => 'mail',
'queue' => 1,
), array(
'sent',
));
$this
->assertEqual(count($messages), 2, "Retrieved 2 queued messages from store.");
$message1 = array_shift($messages);
$message2 = array_shift($messages);
$this
->assertTrue(strpos($message1->body, $node->body), "One message sent for the node post.");
$this
->assertTrue(strpos($message2->body, $comment->subject), "One message sent for the comment.");
// Unsubscribe with a signed link
$link = notifications_subscription_get_link('unsubscribe', $subscription, array(
'absolute' => TRUE,
'destination' => '',
));
$this
->drupalGet(url($link['href'], $link['options']));
$this
->assertText('Are you sure you want to delete this subscription?');
$this
->drupalPost(NULL, array(), t('Unsubscribe'));
$this
->assertText('Your subscription has been removed.');
}
function anonymousCreateSubscription($mail, $type, $fields, $messages = array()) {
$anonymous = drupal_anonymous_user();
$post["destination_address[mail]"] = $mail;
return $this
->contentCreateSubscription($anonymous, $type, $fields, $messages, $post);
}
function createMail() {
return $this
->randomName() . '@example.com';
}
function anonymousCreatePermissions($perms) {
$data = array(
'rid' => 1,
'tid' => 0,
'perm' => implode(', ', $perms),
);
return drupal_write_record('permission', $data);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
NotificationsAnonymousTests:: |
function | |||
NotificationsAnonymousTests:: |
function | |||
NotificationsAnonymousTests:: |
function | |||
NotificationsAnonymousTests:: |
function | |||
NotificationsAnonymousTests:: |
function |
Set up some required modules Overrides NotificationsTestCase:: |
||
NotificationsAnonymousTests:: |
function | |||
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 |