Index: modules/profile/profile.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.test,v
retrieving revision 1.2
diff -u -p -r1.2 profile.test
--- modules/profile/profile.test	25 Apr 2008 18:26:02 -0000	1.2
+++ modules/profile/profile.test	30 Apr 2008 01:50:42 -0000
@@ -1,7 +1,46 @@
 <?php
 // $Id: profile.test,v 1.2 2008/04/25 18:26:02 dries Exp $
 
-class ProfileTestSingleTestCase extends DrupalWebTestCase {
+class ProfileWebTestCase extends DrupalWebTestCase {
+
+  function _rolesApi($op, $edit) {
+    switch ($op) {
+      case 'delete':
+        $rid = $edit['rid'];
+        db_query('DELETE FROM {role} WHERE rid = %d', $rid);
+        db_query('DELETE FROM {permission} WHERE rid = %d', $rid);
+  
+        // Update the users who have this role set:
+        $result = db_query("SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid", $rid);
+        $uids = array();
+  
+        while ($u = db_fetch_object($result)) {
+          $uids[] = $u->uid;
+        }
+  
+        if ($uids) {
+          $params = array_merge(array($rid), $uids);
+          db_query("DELETE FROM {users_roles} WHERE rid = %d AND uid IN (" . db_placeholders($uids) . ")", $params);
+        }
+  
+        // Users with only the deleted role are put back in the authenticated users pool.
+        db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', DRUPAL_AUTHENTICATED_RID, $rid);
+        break;
+      case 'add':
+        if (isset($edit['name'])) {
+          db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
+          $result = db_query("SELECT rid FROM {role} WHERE name = '%s'", $edit['name']);
+          $rid = db_result($result);
+          db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $rid, $edit['perm']);
+          return $rid;
+        }
+      default:
+        return 0;
+    }
+  }
+}
+
+class ProfileTestSingleTestCase extends ProfileWebTestCase {
   /**
    * Implementation of getInfo().
    */
@@ -10,42 +49,6 @@ class ProfileTestSingleTestCase extends 
     return array('name' => 'Test single field', 'description' => "Testing profile module with add/edit/delete new fields into profile page" , 'group' => t('Profile'));
   }
 
-  function _rolesApi($op, $edit) {
-    if ($op == 'delete') {
-      $id = $edit['rid'];
-      db_query('DELETE FROM {role} WHERE rid = %d', $id);
-      db_query('DELETE FROM {permission} WHERE rid = %d', $id);
-
-      // Update the users who have this role set.
-      $result = db_query('SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid', $id);
-      $uid = array();
-
-      while ($u = db_fetch_object($result)) {
-        $uid[] = $u->uid;
-      }
-
-      if ($uid) {
-        db_query('DELETE FROM {users_roles} WHERE rid = %d AND uid IN (%s)', $id, implode(', ', $uid));
-      }
-
-      // Users with only the deleted role are put back in the authenticated users pool.
-      db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', DRUPAL_AUTHENTICATED_RID, $id);
-
-    }
-    else if ($op == 'add') {
-      if (isset($edit['name'])) {
-        db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
-        $result = db_query("SELECT rid FROM {role} WHERE name = '%s'", $edit['name']);
-        $rid = db_result($result);
-        db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $rid, $edit['perm']);
-        return $rid;
-      }
-      else {
-        return 0;
-      }
-    }
-  }
-
   function testProfileSingle() {
     $this->drupalModuleEnable('profile');
     // Create test user.
@@ -73,7 +76,7 @@ class ProfileTestSingleTestCase extends 
                   'explanation' => $explanation,
                   );
     $this->drupalPost('admin/user/profile/add/textfield', $edit, t('Save field'), 0);
-    $fid = db_result(db_query('SELECT fid FROM {profile_fields} WHERE title = "%s"', $title));
+    $fid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE title = '%s'", $title));
     $single_field = array('title' => $title, 'form_name' => $form_name, 'explanation' => $explanation);
 
     // Checking simple fields.
@@ -121,7 +124,7 @@ class ProfileTestSingleTestCase extends 
 
 }
 
-class ProfileTestTextareaTestCase extends DrupalWebTestCase {
+class ProfileTestTextareaTestCase extends ProfileWebTestCase {
   /**
    * Implementation of getInfo().
    */
@@ -130,42 +133,6 @@ class ProfileTestTextareaTestCase extend
     return array('name' => 'Test textarea field', 'description' => "Testing profile module with add/edit/delete new fields into profile page" , 'group' => t('Profile'));
   }
 
-  function _rolesApi($op, $edit) {
-    if ($op == 'delete') {
-      $id = $edit['rid'];
-      db_query('DELETE FROM {role} WHERE rid = %d', $id);
-      db_query('DELETE FROM {permission} WHERE rid = %d', $id);
-
-      // Update the users who have this role set.
-      $result = db_query('SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid', $id);
-      $uid = array();
-
-      while ($u = db_fetch_object($result)) {
-        $uid[] = $u->uid;
-      }
-
-      if ($uid) {
-        db_query('DELETE FROM {users_roles} WHERE rid = %d AND uid IN (%s)', $id, implode(', ', $uid));
-      }
-
-      // Users with only the deleted role are put back in the authenticated users pool.
-      db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', DRUPAL_AUTHENTICATED_RID, $id);
-
-    }
-    else if ($op == 'add') {
-      if (isset($edit['name'])) {
-        db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
-        $result = db_query("SELECT rid FROM {role} WHERE name = '%s'", $edit['name']);
-        $rid = db_result($result);
-        db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $rid, $edit['perm']);
-        return $rid;
-      }
-      else {
-        return 0;
-      }
-    }
-  }
-
   function testProfileSingle() {
     $this->drupalModuleEnable('profile');
     // Create test user.
@@ -189,7 +156,7 @@ class ProfileTestTextareaTestCase extend
     $explanation = $this->randomName(50);
     $edit = array('category' => $my_category, 'title' => $title, 'name' => $form_name, 'explanation' => $explanation);
     $this->drupalPost("admin/user/profile/add/textarea", $edit, t('Save field'), 0);
-    $fid = db_result(db_query('SELECT fid FROM {profile_fields} WHERE title = "%s"', $title));
+    $fid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE title = '%s'", $title));
     $single_field = array('title' => $title, 'form_name' => $form_name, 'explanation' => $explanation);
 
     // Checking simple fields.
@@ -237,48 +204,12 @@ class ProfileTestTextareaTestCase extend
 }
 
 
-class ProfileTestFreelistTestCase extends DrupalWebTestCase {
+class ProfileTestFreelistTestCase extends ProfileWebTestCase {
   function getInfo() {
     $modules = (module_list());
     return array('name' => 'Test freelist field', 'description' => "Testing profile module with add/edit/delete new fields into profile page" , 'group' => t('Profile'));
   }
 
-  function _rolesApi($op, $edit) {
-    if ($op == 'delete') {
-      $id = $edit['rid'];
-      db_query('DELETE FROM {role} WHERE rid = %d', $id);
-      db_query('DELETE FROM {permission} WHERE rid = %d', $id);
-
-      // Update the users who have this role set:
-      $result = db_query('SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid', $id);
-      $uid = array();
-
-      while ($u = db_fetch_object($result)) {
-        $uid[] = $u->uid;
-      }
-
-      if ($uid) {
-        db_query('DELETE FROM {users_roles} WHERE rid = %d AND uid IN (%s)', $id, implode(', ', $uid));
-      }
-
-      // Users with only the deleted role are put back in the authenticated users pool.
-      db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', DRUPAL_AUTHENTICATED_RID, $id);
-
-    }
-    else if ($op == 'add') {
-      if (isset($edit['name'])) {
-        db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
-        $result = db_query("SELECT rid FROM {role} WHERE name = '%s'", $edit['name']);
-        $rid = db_result($result);
-        db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $rid, $edit['perm']);
-        return $rid;
-      }
-      else {
-        return 0;
-      }
-    }
-  }
-
   function testProfileSingle() {
     $this->drupalModuleEnable('profile');
     // create test user
@@ -303,7 +234,7 @@ class ProfileTestFreelistTestCase extend
     $explanation = $this->randomName(50);
     $edit = array('category' => $my_category, 'title' => $title, 'name' => $form_name, 'explanation' => $explanation);
     $this->drupalPost("admin/user/profile/add/list", $edit, t('Save field'), 0);
-    $fid = db_result(db_query('SELECT fid FROM {profile_fields} WHERE title = "%s"', $title));
+    $fid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE title = '%s'", $title));
     $single_field = array('title' => $title, 'form_name' => $form_name, 'explanation' => $explanation);
 
     // checking simple fields
@@ -352,48 +283,12 @@ class ProfileTestFreelistTestCase extend
 }
 
 
-class ProfileTestCheckboxTestCase extends DrupalWebTestCase {
+class ProfileTestCheckboxTestCase extends ProfileWebTestCase {
   function getInfo() {
     $modules = (module_list());
     return array('name' => 'Test checkbox field', 'description' => "Testing profile module with add/edit/delete new fields into profile page" , 'group' => t('Profile'));
   }
 
-  function _rolesApi($op, $edit) {
-    if ($op == 'delete') {
-      $id = $edit['rid'];
-      db_query('DELETE FROM {role} WHERE rid = %d', $id);
-      db_query('DELETE FROM {permission} WHERE rid = %d', $id);
-
-      // Update the users who have this role set:
-      $result = db_query('SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid', $id);
-      $uid = array();
-
-      while ($u = db_fetch_object($result)) {
-        $uid[] = $u->uid;
-      }
-
-      if ($uid) {
-        db_query('DELETE FROM {users_roles} WHERE rid = %d AND uid IN (%s)', $id, implode(', ', $uid));
-      }
-
-      // Users with only the deleted role are put back in the authenticated users pool.
-      db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', DRUPAL_AUTHENTICATED_RID, $id);
-
-    }
-    else if ($op == 'add') {
-      if (isset($edit['name'])) {
-        db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
-        $result = db_query("SELECT rid FROM {role} WHERE name = '%s'", $edit['name']);
-        $rid = db_result($result);
-        db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $rid, $edit['perm']);
-        return $rid;
-      }
-      else {
-        return 0;
-      }
-    }
-  }
-
    function testProfileCheckbox() {
     $this->drupalModuleEnable('profile');
     // create test user
@@ -418,7 +313,7 @@ class ProfileTestCheckboxTestCase extend
     $explanation = $this->randomName(50);
     $edit = array('category' => $my_category, 'title' => $title, 'name' => $form_name, 'explanation' => $explanation);
     $this->drupalPost("admin/user/profile/add/checkbox", $edit, t('Save field'), 0);
-    $fid = db_result(db_query('SELECT fid FROM {profile_fields} WHERE title = "%s"', $title));
+    $fid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE title = '%s'", $title));
     $single_field = array('title' => $title, 'form_name' => $form_name, 'explanation' => $explanation);
 
     // checking simple fields
@@ -464,48 +359,12 @@ class ProfileTestCheckboxTestCase extend
    }
 }
 
-class ProfileTestUrlTestCase extends DrupalWebTestCase {
+class ProfileTestUrlTestCase extends ProfileWebTestCase {
   function getInfo() {
     $modules = (module_list());
     return array('name' => 'Test URL field', 'description' => "Testing profile module with add/edit/delete new fields into profile page" , 'group' => t('Profile'));
   }
 
-  function _rolesApi($op, $edit) {
-    if ($op == 'delete') {
-      $id = $edit['rid'];
-      db_query('DELETE FROM {role} WHERE rid = %d', $id);
-      db_query('DELETE FROM {permission} WHERE rid = %d', $id);
-
-      // Update the users who have this role set:
-      $result = db_query('SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid', $id);
-      $uid = array();
-
-      while ($u = db_fetch_object($result)) {
-        $uid[] = $u->uid;
-      }
-
-      if ($uid) {
-        db_query('DELETE FROM {users_roles} WHERE rid = %d AND uid IN (%s)', $id, implode(', ', $uid));
-      }
-
-      // Users with only the deleted role are put back in the authenticated users pool.
-      db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', DRUPAL_AUTHENTICATED_RID, $id);
-
-    }
-    else if ($op == 'add') {
-      if (isset($edit['name'])) {
-        db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
-        $result = db_query("SELECT rid FROM {role} WHERE name = '%s'", $edit['name']);
-        $rid = db_result($result);
-        db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $rid, $edit['perm']);
-        return $rid;
-      }
-      else {
-        return 0;
-      }
-    }
-  }
-
   function testProfileSingle() {
     variable_set('user_register',1);
     $this->drupalModuleEnable('profile');
@@ -576,51 +435,15 @@ class ProfileTestUrlTestCase extends Dru
     $edit['rid'] = $rid;
     $this->_rolesApi('delete', $edit);
 
-    }
+  }
 }
 
-class ProfileTestSelectionTestCase extends DrupalWebTestCase {
+class ProfileTestSelectionTestCase extends ProfileWebTestCase {
   function getInfo() {
     $modules = (module_list());
     return array('name' => 'Test selection field', 'description' => "Testing profile module with add/edit/delete new fields into profile page" , 'group' => t('Profile'));
   }
 
-  function _rolesApi($op, $edit) {
-    if ($op == 'delete') {
-      $id = $edit['rid'];
-      db_query('DELETE FROM {role} WHERE rid = %d', $id);
-      db_query('DELETE FROM {permission} WHERE rid = %d', $id);
-
-      // Update the users who have this role set:
-      $result = db_query('SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid', $id);
-      $uid = array();
-
-      while ($u = db_fetch_object($result)) {
-        $uid[] = $u->uid;
-      }
-
-      if ($uid) {
-        db_query('DELETE FROM {users_roles} WHERE rid = %d AND uid IN (%s)', $id, implode(', ', $uid));
-      }
-
-      // Users with only the deleted role are put back in the authenticated users pool.
-      db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', DRUPAL_AUTHENTICATED_RID, $id);
-
-    }
-    else if ($op == 'add') {
-      if (isset($edit['name'])) {
-        db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
-        $result = db_query("SELECT rid FROM {role} WHERE name = '%s'", $edit['name']);
-        $rid = db_result($result);
-        db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $rid, $edit['perm']);
-        return $rid;
-      }
-      else {
-        return 0;
-      }
-    }
-  }
-
   function testProfileSingle() {
     $this->drupalModuleEnable('profile');
     // create test user
@@ -703,49 +526,12 @@ class ProfileTestSelectionTestCase exten
 
 }
 
-
-class ProfileTestDateTestCase extends DrupalWebTestCase {
+class ProfileTestDateTestCase extends ProfileWebTestCase {
   function getInfo() {
     $modules = (module_list());
     return array('name' => 'Test date field', 'description' => "Testing profile module with add/edit/delete new fields into profile page" , 'group' => t('Profile'));
   }
 
-  function _rolesApi($op, $edit) {
-    if ($op == 'delete') {
-      $id = $edit['rid'];
-      db_query('DELETE FROM {role} WHERE rid = %d', $id);
-      db_query('DELETE FROM {permission} WHERE rid = %d', $id);
-
-      // Update the users who have this role set:
-      $result = db_query('SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid', $id);
-      $uid = array();
-
-      while ($u = db_fetch_object($result)) {
-        $uid[] = $u->uid;
-      }
-
-      if ($uid) {
-        db_query('DELETE FROM {users_roles} WHERE rid = %d AND uid IN (%s)', $id, implode(', ', $uid));
-      }
-
-      // Users with only the deleted role are put back in the authenticated users pool.
-      db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', DRUPAL_AUTHENTICATED_RID, $id);
-
-    }
-    else if ($op == 'add') {
-      if (isset($edit['name'])) {
-        db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
-        $result = db_query("SELECT rid FROM {role} WHERE name = '%s'", $edit['name']);
-        $rid = db_result($result);
-        db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $rid, $edit['perm']);
-        return $rid;
-      }
-      else {
-        return 0;
-      }
-    }
-  }
-
   function testProfileSingle() {
     $this->drupalModuleEnable('profile');
     // create test user
@@ -833,49 +619,12 @@ class ProfileTestDateTestCase extends Dr
 }
 
 
-class ProfileTest2TestCase extends DrupalWebTestCase {
+class ProfileTest2TestCase extends ProfileWebTestCase {
   function getInfo() {
     $modules = (module_list());
     return array('name' => 'Test other fields', 'description' => "Testing weight, title page, required" , 'group' => t('Profile'));
   }
 
-  function _rolesApi($op, $edit) {
-    if ($op == 'delete') {
-      $id = $edit['rid'];
-      db_query('DELETE FROM {role} WHERE rid = %d', $id);
-      db_query('DELETE FROM {permission} WHERE rid = %d', $id);
-
-      // Update the users who have this role set:
-      $result = db_query('SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid', $id);
-      $uid = array();
-
-      while ($u = db_fetch_object($result)) {
-        $uid[] = $u->uid;
-      }
-
-      if ($uid) {
-        db_query('DELETE FROM {users_roles} WHERE rid = %d AND uid IN (%s)', $id, implode(', ', $uid));
-      }
-
-      // Users with only the deleted role are put back in the authenticated users pool.
-      db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', DRUPAL_AUTHENTICATED_RID, $id);
-
-    }
-    else if ($op == 'add') {
-      if (isset($edit['name'])) {
-        db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
-        $result = db_query("SELECT rid FROM {role} WHERE name = '%s'", $edit['name']);
-        $rid = db_result($result);
-        db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $rid, $edit['perm']);
-        return $rid;
-      }
-      else {
-        return 0;
-      }
-    }
-
-  }
-
   function testProfileOtherFields() {
     $this->drupalModuleEnable('profile');
     // create test user
@@ -900,7 +649,7 @@ class ProfileTest2TestCase extends Drupa
     $weight = 3;
     $edit = array('category' => $my_category, 'title' => $title, 'name' => $form_name, 'weight' => $weight, 'required' => 1);
     $this->drupalPost("admin/user/profile/add/textfield", $edit, t('Save field'), 0);
-    $fid = db_result(db_query('SELECT fid FROM {profile_fields} WHERE title = "%s"', $title));
+    $fid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE title = '%s'", $title));
     $sfield1 = array('fid'=> $fid, 'title' => $title);
     //second one line textfield
     $title = "second_" . $this->randomName(10);
@@ -909,7 +658,7 @@ class ProfileTest2TestCase extends Drupa
     $weight = -2;
     $edit = array('category' => $my_category, 'title' => $title, 'name' => $form_name, 'weight' => $weight, 'register' => 1, 'required' => 1);
     $this->drupalPost("admin/user/profile/add/textfield", $edit, t('Save field'), 0);
-    $fid = db_result(db_query('SELECT fid FROM {profile_fields} WHERE title = "%s"', $title));
+    $fid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE title = '%s'", $title));
     $sfield2 = array('fid'=> $fid, 'title' => $title);
     // checking
     $this->drupalGet("user/". $user->uid. "/edit/$my_category");
@@ -947,7 +696,7 @@ class ProfileTest2TestCase extends Drupa
       $options .= $this->randomName(8) . "\n";
     $edit = array('category' => $my_category, 'title' => $title, 'name' => $form_name, 'page' => $page_title, 'options' => $options);
     $this->drupalPost("admin/user/profile/add/selection", $edit, t('Save field'), 0);
-    $fid = db_result(db_query('SELECT fid FROM {profile_fields} WHERE title = "%s"', $title));
+    $fid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE title = '%s'", $title));
     $element = rand(0,2);
     $op_tab = explode("\n", $options,3);
     $choice = rtrim($op_tab[$element]);
@@ -976,4 +725,3 @@ class ProfileTest2TestCase extends Drupa
   }
 }
 
-?>
