diff --git a/message_subscribe_email/message_subscribe_email.test b/message_subscribe_email/message_subscribe_email.test index 537e37a..7240686 100644 --- a/message_subscribe_email/message_subscribe_email.test +++ b/message_subscribe_email/message_subscribe_email.test @@ -12,11 +12,28 @@ class MessageSubscribeEmailTestHelper extends DrupalWebTestCase { function setUp() { - parent::setUp('message_subscribe_email', 'message_subscribe', 'flag'); + $modules = func_get_args(); + if (isset($modules[0]) && is_array($modules[0])) { + $modules = $modules[0]; + } + $modules[] = 'message_subscribe_email'; + parent::setUp($modules); // Create node-type. $node_type = $this->drupalCreateContentType(); $node_type = $node_type->type; + $this->node_type = $node_type; + + // Create group-type. + if (module_exists('og')) { + og_create_field(OG_AUDIENCE_FIELD, 'node', $node_type); + + $group_type = $this->drupalCreateContentType(); + $group_type = $group_type->type; + $this->group_type = $group_type; + + og_create_field(OG_GROUP_FIELD, 'node', $group_type); + } // Enable flags. $flags = flag_get_default_flags(TRUE); @@ -31,6 +48,18 @@ class MessageSubscribeEmailTestHelper extends DrupalWebTestCase { $flag->save(); $flag->enable(); + if (module_exists('og')) { + $flag = $flags['subscribe_og']; + $flag->types[] = $group_type; + $flag->save(); + $flag->enable(); + + $flag = $flags['email_og']; + $flag->types[] = $group_type; + $flag->save(); + $flag->enable(); + } + // Reset our cache so our permissions show up. drupal_static_reset('flag_get_flags'); @@ -44,6 +73,13 @@ class MessageSubscribeEmailTestHelper extends DrupalWebTestCase { 'unflag email_node', ); + if (module_exists('og')) { + $permissions[] = 'flag subscribe_og'; + $permissions[] = 'unflag subscribe_og'; + $permissions[] = 'flag email_og'; + $permissions[] = 'unflag email_og'; + } + $user1 = $this->drupalCreateUser($permissions); $user2 = $this->drupalCreateUser($permissions); @@ -53,6 +89,17 @@ class MessageSubscribeEmailTestHelper extends DrupalWebTestCase { $settings['uid'] = $user1->uid; $node = $this->drupalCreateNode($settings); + if (module_exists('og')) { + // Create group. + $settings = array(); + $settings['type'] = $group_type; + $settings[OG_GROUP_FIELD][LANGUAGE_NONE][0]['value'] = 1; + $settings['uid'] = $user1->uid; + $group = $this->drupalCreateNode($settings); + + $this->group = $group; + } + // Create a dummy message-type. $message_type = message_type_create('foo'); $message_type->save(); @@ -138,6 +185,84 @@ class MessageSubscribeEmailSubscribersTest extends MessageSubscribeEmailTestHelp } /** + * Test getting group email subscribes from context. + */ +class MessageSubscribeGroupEmailSubscribersTest extends MessageSubscribeEmailTestHelper { + + public static function getInfo() { + return array( + 'name' => 'Get group email subscribers', + 'description' => 'Get email subscribers from group content.', + 'group' => 'Message subscribe email', + 'dependencies' => array('og'), + ); + } + + function setUp() { + parent::setUp('og', 'message_subscribe_email_test'); + + // Add the user to the group. + og_group('node', $this->group, array('entity_type' => 'user', 'entity' => $this->user2)); + + // Follow group. + flag('flag', 'subscribe_og', $this->group->nid, $this->user1); + flag('flag', 'subscribe_og', $this->group->nid, $this->user2); + + // Opt out of default email notifications. + $wrapper = entity_metadata_wrapper('user', $this->user2); + $wrapper->message_subscribe_email->set(FALSE); + + // Do not receive email for group. + flag('unflag', 'email_og', $this->group->nid, $this->user2); + + // Override default notifiers. + variable_set('message_subscribe_default_notifiers', array()); + } + + /** + * Test getting the subscribers list. + */ + function testGetGroupSubscribers() { + $message = message_create('foo'); + + $group = $this->group; + $user1 = $this->user1; + $user2 = $this->user2; + + $uids = message_subscribe_get_subscribers('node', $group, $message); + + // Assert subscribers data. + $expected_uids = array( + $user1->uid => array( + 'notifiers' => array( + 'email' => 'email', + ), + 'flags' => array( + 'subscribe_og', + ), + ), + $user2->uid => array( + 'notifiers' => array(), + 'flags' => array( + 'subscribe_og', + ), + ), + ); + + $this->assertEqual($uids, $expected_uids, 'All expected subscribers were fetched.'); + + $subscribe_options = array( + 'uids' => $uids, + ); + message_subscribe_send_message('node', $group, $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 { diff --git a/message_subscribe_email/tests/message_subscribe_email_test.info b/message_subscribe_email/tests/message_subscribe_email_test.info new file mode 100644 index 0000000..c159d93 --- /dev/null +++ b/message_subscribe_email/tests/message_subscribe_email_test.info @@ -0,0 +1,6 @@ +name = Message Subscribe Email test module +description = Functionality to assist Message Subscribe Email testing. +core = 7.x +dependencies[] = message_subscribe_email +dependencies[] = og +hidden = TRUE diff --git a/message_subscribe_email/tests/message_subscribe_email_test.module b/message_subscribe_email/tests/message_subscribe_email_test.module new file mode 100644 index 0000000..f5b55bd --- /dev/null +++ b/message_subscribe_email/tests/message_subscribe_email_test.module @@ -0,0 +1,14 @@ +