? overlay_subtabs_invisible.png
Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.70.2.30.2.91.2.64.2.70
diff -u -p -r1.70.2.30.2.91.2.64.2.70 privatemsg.module
--- privatemsg.module	9 Jul 2010 20:21:52 -0000	1.70.2.30.2.91.2.64.2.70
+++ privatemsg.module	10 Jul 2010 09:40:32 -0000
@@ -2433,5 +2433,5 @@ function privatemsg_user_autocomplete($f
   return _privatemsg_assemble_query('autocomplete', $fragment, $names)
     ->range(0, 10)
     ->execute()
-    ->fetchField();
+    ->fetchCol();
 }
Index: privatemsg.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.test,v
retrieving revision 1.2.2.1.2.27
diff -u -p -r1.2.2.1.2.27 privatemsg.test
--- privatemsg.test	8 Jul 2010 09:41:57 -0000	1.2.2.1.2.27
+++ privatemsg.test	10 Jul 2010 09:40:33 -0000
@@ -740,6 +740,44 @@ class PrivatemsgTestCase extends DrupalW
   }
 
   /**
+   * Test autocomplete.
+   */
+  function testAutocomplete() {
+    $current = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
+    $user1 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
+    $user2 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
+    $user3 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
+
+    $this->drupalLogin($current);
+
+    // Use specific names to be able to test for specific name combinations.
+    user_save($current, array('name' => 'wathever'));
+    user_save($user1, array('name' => 'aaaa'));
+    user_save($user2, array('name' => 'aaab'));
+    user_save($user3, array('name' => 'bbbb'));
+
+    $json = $this->drupalGet('messages/user-name-autocomplete/aa');
+    $autocomplete = (array)json_decode($json);
+    $this->assertEqual(count($autocomplete), 2, t('Autocomplete object contains two suggestions.'));
+    $this->assertEqual($autocomplete['aaaa, '], 'aaaa');
+    $this->assertEqual($autocomplete['aaab, '], 'aaab');
+
+    $json = $this->drupalGet('messages/user-name-autocomplete/bb');
+    $autocomplete = (array)json_decode($json);
+    $this->assertEqual(count($autocomplete), 1, t('Autocomplete object contains one suggestion.'));
+    $this->assertEqual($autocomplete['bbbb, '], 'bbbb');
+
+    $json = $this->drupalGet('messages/user-name-autocomplete/cc');
+    $autocomplete = (array)json_decode($json);
+    $this->assertEqual(count($autocomplete), 0, t('Autocomplete object contains no suggestions.'));
+
+    $json = $this->drupalGet('messages/user-name-autocomplete/aaaa, a');
+    $autocomplete = (array)json_decode($json);
+    $this->assertEqual(count($autocomplete), 1, t('Autocomplete object contains one suggestion.'));
+    $this->assertEqual($autocomplete['aaaa, aaab, '], 'aaab');
+  }
+
+  /**
    * Implements tearDown().
    */
   function tearDown() {
Index: privatemsg_roles/privatemsg_roles.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg_roles/privatemsg_roles.module,v
retrieving revision 1.1.2.2
diff -u -p -r1.1.2.2 privatemsg_roles.module
--- privatemsg_roles/privatemsg_roles.module	7 Jul 2010 09:55:16 -0000	1.1.2.2
+++ privatemsg_roles/privatemsg_roles.module	10 Jul 2010 09:40:33 -0000
@@ -139,7 +139,7 @@ function privatemsg_roles_sql_autocomple
     ->condition('role.rid', DRUPAL_ANONYMOUS_RID, '<>')
     ->orderBy('role.name', 'ASC');
   if (!empty($names)) {
-    $query->condition('role_name', $names, 'NOT IN');
+    $query->condition('role.name', $names, 'NOT IN');
   }
   return $query;
 }
Index: privatemsg_roles/privatemsg_roles.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg_roles/privatemsg_roles.test,v
retrieving revision 1.1.2.2
diff -u -p -r1.1.2.2 privatemsg_roles.test
--- privatemsg_roles/privatemsg_roles.test	7 Jul 2010 09:55:16 -0000	1.1.2.2
+++ privatemsg_roles/privatemsg_roles.test	10 Jul 2010 09:40:33 -0000
@@ -22,7 +22,7 @@ class PrivatemsgRolesTestCase extends Dr
     parent::setUp('privatemsg', 'privatemsg_roles', 'privatemsg_filter', 'pm_block_user');
   }
 
-  function dtestSendMessagetoRoleAPI() {
+  function testSendMessagetoRoleAPI() {
     $admin = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg', 'write privatemsg to roles'));
     $user1 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
     $user2 = $this->drupalCreateUser();
@@ -44,7 +44,7 @@ class PrivatemsgRolesTestCase extends Dr
     $this->assertText($body, t('Thread starter body displayed.'));
   }
 
-  function dtestSendMessagetoRoleCron() {
+  function testSendMessagetoRoleCron() {
     $admin = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg', 'write privatemsg to roles'));
     $user1 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
 
@@ -97,7 +97,7 @@ class PrivatemsgRolesTestCase extends Dr
     }
   }
 
-  function dtestSendMessagetoRoleBatch() {
+  function testSendMessagetoRoleBatch() {
     $admin = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg', 'write privatemsg to roles'));
     $user1 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
 
@@ -132,7 +132,7 @@ class PrivatemsgRolesTestCase extends Dr
     }
   }
 
-  function dtestPermission() {
+  function testPermission() {
     $user1 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
     $user2 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
     $this->drupalLogin($user1);
@@ -157,9 +157,15 @@ class PrivatemsgRolesTestCase extends Dr
     user_save($user2, $edit);
     $this->drupalLogin($admin);
 
+    // Verify autocomplete feature.
+    $role_name = user_role_load($user1->roles[5])->name;
+    $json = $this->drupalGet('messages/user-name-autocomplete/' . drupal_substr($role_name, 0, 2));
+    $autocomplete = (array)json_decode($json);
+    $this->assertEqual($autocomplete[$role_name . ', '], $role_name);
+
     // Send a message to the role of user 1 and 2.
     $edit = array(
-      'recipient' => user_role_load($user1->roles[5])->name . '[role]',
+      'recipient' => $role_name . '[role]',
       'subject' => $this->randomName(10),
       'body[value]' => $this->randomName(50),
     );
@@ -176,7 +182,7 @@ class PrivatemsgRolesTestCase extends Dr
     $this->assertText($edit['body[value]'], t('Thread starter body displayed.'));
 
     // Make sure that the user does not see the role.
-    $this->assertNoText(t('@role (role)', array('@role' => user_role_load($user1->roles[5])->name)));
+    $this->assertNoText(t('@role (role)', array('@role' => $role_name)));
 
     // Reply to the message, only admin should see this.
     $reply1 = array(
@@ -206,14 +212,14 @@ class PrivatemsgRolesTestCase extends Dr
     $this->drupalGet('messages');
     $this->assertRaw($edit['subject'] . '</a> <span class="marker">new</span>', t('Message is displayed as new'));
     $this->clickLink($edit['subject']);
-    $this->assertText(t('@role (role)', array('@role' => user_role_load($user1->roles[5])->name)));
+    $this->assertText(t('@role (role)', array('@role' => $role_name)));
 
     $this->assertText($edit['body[value]'], t('Thread starter body is displayed'));
     $this->assertNoText($reply1['body[value]'], t('Reply1 is not displayed'));
     $this->assertText($reply2['body[value]'], t('Reply2 is displayed'));
   }
 
-  function dtestSendMessageToRoleBlocked() {
+  function testSendMessageToRoleBlocked() {
     $admin = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg', 'write privatemsg to roles'));
     $user1 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
     $user2 = $this->drupalCreateUser();
@@ -256,7 +262,7 @@ class PrivatemsgRolesTestCase extends Dr
     $this->assertNoText($edit['subject'], t('Message is not displayed'));
   }
 
-  function dtestNewUser() {
+  function testNewUser() {
     $admin = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg', 'write privatemsg to roles'));
     $user1 = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
 
