You are here

function ProfileModuleTest2::testProfileOtherFields in SimpleTest 5

Same name and namespace in other branches
  1. 6 tests/profile_module.test \ProfileModuleTest2::testProfileOtherFields()

File

tests/profile_module.test, line 895

Class

ProfileModuleTest2

Code

function testProfileOtherFields() {
  $this
    ->drupalModuleEnable('profile');

  // create test user
  $edit['name'] = 'Profile ' . $this
    ->randomName(5);
  $edit['perm'] = 'access content, administer users, access user profiles, administer site configuration, access administration pages, access configuration pages, access user profiles';
  $rid = $this
    ->_rolesApi('add', $edit);
  $name = $this
    ->randomName();
  $pass = $this
    ->randomName();
  $mail = "{$name}@example.com";
  unset($edit);
  $edit['roles'] = array(
    $rid => $rid,
  );
  $user = user_save('', array(
    'name' => $name,
    'pass' => $pass,
    'init' => $mail,
    'mail' => $mail,
    'roles' => $edit['roles'],
    'status' => 1,
  ));

  //log in
  $edit = array(
    'name' => $name,
    'pass' => $pass,
  );
  $this
    ->drupalPostRequest('user', $edit, 'Log in', 0);

  //wartosci
  $my_category = $this
    ->randomName(10);

  //single line textfield
  $title = "first_" . $this
    ->randomName(10);
  $form_name = 'profile_' . $title;

  // weight
  $weight = 3;
  $edit = array(
    'category' => $my_category,
    'title' => $title,
    'name' => $form_name,
    'weight' => $weight,
    'required' => 1,
  );
  $this
    ->drupalPostRequest("admin/user/profile/add/textfield", $edit, 'Save field', 0);
  $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);
  $form_name = 'profile_' . $title;

  // weight
  $weight = -2;
  $edit = array(
    'category' => $my_category,
    'title' => $title,
    'name' => $form_name,
    'weight' => $weight,
    'register' => 1,
    'required' => 1,
  );
  $this
    ->drupalPostRequest("admin/user/profile/add/textfield", $edit, 'Save field', 0);
  $fid = db_result(db_query('SELECT fid FROM {profile_fields} WHERE title = "%s"', $title));
  $sfield2 = array(
    'fid' => $fid,
    'title' => $title,
  );

  // checking
  $this->_browser
    ->get(url("user/" . $user->uid . "/edit/{$my_category}"));
  $content = $this->_browser
    ->getContent();
  $pos1 = strpos($content, $sfield1['title']);
  $pos2 = strpos($content, $sfield2['title']);
  $this
    ->assertTrue($pos2 < $pos1, 'Checking weight field');
  $delete_fields = array();
  $delete_fields[] = $sfield1['fid'];
  $delete_fields[] = $sfield2['fid'];

  // check if this field is visible in registration form
  // logout
  $this->_browser
    ->get(url("logout"));
  $this->_browser
    ->get(url("user/register"));
  $this
    ->assertNoUnwantedText($sfield1['title'], 'Field is not visible in registration form');
  $this
    ->assertWantedText($sfield2['title'], 'Field is visible in registration form');

  // try to register
  $fname = $this
    ->randomName(5, 'simpletest_');
  $fmail = "{$fname}@drupaltest.example.com";
  $edit = array(
    'name' => $fname,
    'mail' => $fmail,
  );
  $this
    ->drupalPostRequest('user/register', $edit, 'Create new account', 0);

  //$key = t('The field %field is required.', array('%field' => $title));

  //$this->assertWantedText($key, 'Checking error message');

  //log in
  $edit = array(
    'name' => $name,
    'pass' => $pass,
  );
  $this
    ->drupalPostRequest('user', $edit, 'Log in', 0);

  // TITLE

  //selection
  $title = $this
    ->randomName(10);
  $form_name = 'profile_' . $title;
  $page_title = $this
    ->randomName(5) . " %value";
  $options = "";
  for ($i = 0; $i < 3; $i++) {
    $options .= $this
      ->randomName(8) . "\n";
  }
  $edit = array(
    'category' => $my_category,
    'title' => $title,
    'name' => $form_name,
    'page' => $page_title,
    'options' => $options,
  );
  $this
    ->drupalPostRequest("admin/user/profile/add/selection", $edit, 'Save field', 0);
  $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]);

  // checking
  $this->_browser
    ->get(url("profile/" . $form_name . "/{$choice}"));
  $title = str_replace("%value", $choice, $page_title);
  $this
    ->assertTitle($title . ' | ' . variable_get('site_name', 'Drupal'), "Checking title {$title}");
  $this
    ->assertWantedText($title, "Checking {$title} in content");
  $delete_fields[] = $fid;
  foreach ($delete_fields as $delfid) {
    $this
      ->drupalPostRequest("admin/user/profile/delete/" . $delfid, array(), 'Delete', 0);
  }

  // delete test user and roles
  if ($user->uid > 0) {
    db_query('DELETE FROM {users} WHERE uid =' . ' %d', $user->uid);
    db_query('DELETE FROM {users_roles} WHERE uid = %d', $user->uid);
    module_invoke_all('user', 'delete', '', $user);
  }

  //delete roles
  $edit['rid'] = $rid;
  $this
    ->_rolesApi('delete', $edit);
}