message_subscribe_email.test in Message Subscribe 7
Test for the Message subscribe email module.
File
message_subscribe_email/message_subscribe_email.testView source
<?php
/**
* @file
* Test for the Message subscribe email module.
*/
/**
* @file
* Test integration for the message_subscribe_email module.
*/
class MessageSubscribeEmailTestHelper extends DrupalWebTestCase {
function setUp() {
parent::setUp('message_subscribe', 'flag', 'message_subscribe_email');
// Create node-type.
$node_type = $this
->drupalCreateContentType();
$node_type = $node_type->type;
// Enable flags.
$flags = flag_get_default_flags(TRUE);
$flag = $flags['subscribe_node'];
$flag->types[] = $node_type;
$flag
->save();
$flag
->enable();
$flag = $flags['email_node'];
$flag->types[] = $node_type;
$flag
->save();
$flag
->enable();
// Reset our cache so our permissions show up.
drupal_static_reset('flag_get_flags');
// Reset permissions so that permissions for this flag are available.
$this
->checkPermissions(array(), TRUE);
$permissions = array(
'flag subscribe_node',
'unflag subscribe_node',
'flag email_node',
'unflag email_node',
);
$user1 = $this
->drupalCreateUser($permissions);
$user2 = $this
->drupalCreateUser($permissions);
// Create node.
$settings = array();
$settings['type'] = $node_type;
$settings['uid'] = $user1->uid;
$node = $this
->drupalCreateNode($settings);
// Create a dummy message-type.
$message_type = message_type_create('foo');
$message_type
->save();
$this->node = $node;
$this->user1 = $user1;
$this->user2 = $user2;
}
}
/**
* Test getting email subscribes from context.
*/
class MessageSubscribeEmailSubscribersTest extends MessageSubscribeEmailTestHelper {
public static function getInfo() {
return array(
'name' => 'Get email subscribers',
'description' => 'Get email subscribers from content.',
'group' => 'Message subscribe',
);
}
function setUp() {
parent::setUp();
// Opt out of default email notifications.
$wrapper = entity_metadata_wrapper('user', $this->user1);
$wrapper->message_subscribe_email
->set(FALSE);
$wrapper = entity_metadata_wrapper('user', $this->user2);
$wrapper->message_subscribe_email
->set(FALSE);
flag('flag', 'subscribe_node', $this->node->nid, $this->user1);
flag('flag', 'subscribe_node', $this->node->nid, $this->user2);
flag('flag', 'email_node', $this->node->nid, $this->user1);
// Override default notifiers.
variable_set('message_subscribe_default_notifiers', array());
}
/**
* Test getting the subscribers list.
*/
function testGetSubscribers() {
// Make sure we are notifying ourselves for this test.
variable_set('message_subscribe_notify_own_actions', TRUE);
$message = message_create('foo');
$node = $this->node;
$user1 = $this->user1;
$user2 = $this->user2;
$uids = message_subscribe_get_subscribers('node', $node, $message);
// Assert subscribers data.
$expected_uids = array(
$user1->uid => array(
'notifiers' => array(
'email' => 'email',
),
'flags' => array(
'subscribe_node',
),
),
$user2->uid => array(
'notifiers' => array(),
'flags' => array(
'subscribe_node',
),
),
);
$this
->assertEqual($uids, $expected_uids, 'All expected subscribers were fetched.');
$subscribe_options = array(
'uids' => $uids,
);
message_subscribe_send_message('node', $node, $message, array(), $subscribe_options);
// Assert sent emails.
$email_count = count(variable_get('drupal_test_email_collector', array()));
$this
->assertEqual($email_count, 1, 'Only one user was sent an email.');
}
}
/**
* Test automatic email notification flagging.
*/
class MessageSubscribeEmailNotificationsTest extends MessageSubscribeEmailTestHelper {
public static function getInfo() {
return array(
'name' => 'Check email notifications',
'description' => 'Check automatic email notifications for content.',
'group' => 'Message subscribe',
);
}
function setUp() {
parent::setUp();
flag('flag', 'subscribe_node', $this->node->nid, $this->user1);
// Override default notifiers.
variable_set('message_subscribe_default_notifiers', array());
}
/**
* Test opting in/out of default email notifications.
*/
function testEmailNotifications() {
// Make sure we are notifying ourselves for this test.
variable_set('message_subscribe_notify_own_actions', TRUE);
$message = message_create('foo');
$node = $this->node;
$user1 = $this->user1;
$uids = message_subscribe_get_subscribers('node', $node, $message);
// Assert subscribers data.
$expected_uids = array(
$user1->uid => array(
'notifiers' => array(
'email' => 'email',
),
'flags' => array(
'subscribe_node',
),
),
);
$this
->assertEqual($uids, $expected_uids, 'All expected subscribers were fetched.');
flag('unflag', 'subscribe_node', $node->nid, $user1);
// Opt out of default email notifications.
$wrapper = entity_metadata_wrapper('user', $user1);
$wrapper->message_subscribe_email
->set(FALSE);
flag('flag', 'subscribe_node', $node->nid, $user1);
$uids = message_subscribe_get_subscribers('node', $node, $message);
// Assert subscribers data.
$expected_uids = array(
$user1->uid => array(
'notifiers' => array(),
'flags' => array(
'subscribe_node',
),
),
);
$this
->assertEqual($uids, $expected_uids, 'All expected subscribers were fetched.');
}
}
Classes
Name | Description |
---|---|
MessageSubscribeEmailNotificationsTest | Test automatic email notification flagging. |
MessageSubscribeEmailSubscribersTest | Test getting email subscribes from context. |
MessageSubscribeEmailTestHelper | @file Test integration for the message_subscribe_email module. |