| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | <?php/** * Test basic CRUD functionality. */class Profile2CRUDTestCase extends DrupalWebTestCase {  public static function getInfo() {    return array(      'name' => 'Editing profiles',      'description' => 'Tests basic CRUD and editing of Profile2 profiles.',      'group' => 'Profile2',    );  }  function setUp() {    parent::setUp('profile2', 'locale');    profile2_type_save(new ProfileType(array(      'type' => 'test',      'label' => 'label',      'weight' => 0    )));    profile2_type_save(new ProfileType(array(      'type' => 'test2',      'label' => 'label2',      'weight' => 2    )));    profile2_load_multiple(FALSE, array(), TRUE);    // Add a field to main type, which is created during module installation.    $field = array(      'field_name' => 'profile_fullname',      'type' => 'text',      'cardinality' => 1,      'translatable' => FALSE,    );    field_create_field($field);    $instance = array(      'entity_type' => 'profile2',      'field_name' => 'profile_fullname',      'bundle' => 'main',      'label' => 'Full name',      'description' => 'Specify your first and last name.',      'widget' => array(        'type' => 'text_textfield',        'weight' => 0,      ),    );    field_create_instance($instance);  }  /**   * Tests CRUD for a profile related to a user and one unrelated to a user.   */  function testCRUD() {    $user1 = $this->drupalCreateUser();    // Create profiles for the user1 and unrelated to a user.    profile2_save(profile2_create(array('type' => 'test', 'uid' => $user1->uid)));    profile2_save(profile2_create(array('type' => 'test2', 'uid' => $user1->uid)));    $profile = profile2_create(array('type' => 'test', 'uid' => NULL));    profile2_save($profile);    $profiles = profile2_load_by_user($user1);    $this->assertEqual($profiles['test']->label(), 'label', 'Created and loaded profile 1.');    $this->assertEqual($profiles['test2']->label(), 'label2', 'Created and loaded profile 2.');    // Test looking up from static cache works also.    $profiles = profile2_load_by_user($user1);    $this->assertEqual($profiles['test']->label, 'label', 'Looked up profiles again.');    $loaded = profile2_load($profile->pid);    $this->assertEqual($loaded->pid, $profile->pid, 'Loaded profile unrelated to a user.');    profile2_delete($profiles['test']);    $profiles2 = profile2_load_by_user($user1);    $this->assertEqual(array_keys($profiles2), array('test2'), 'Profile successfully deleted.');    profile2_save($profiles2['test2']);    $this->assertEqual($profiles['test2']->pid, $profiles2['test2']->pid, 'Profile successfully updated.');    // Delete a profile type.    profile2_type_delete(profile2_get_types('test'));    // Try deleting multiple profiles by deleting all existing profiles.    $pids = array_keys(profile2_load_multiple(FALSE));    profile2_delete_multiple($pids);  }  /**   * Test registration integration.   */  function testRegistrationIntegration() {    // Allow registration by site visitors without administrator approval.    variable_set('user_register', 1);    $edit = array();    $edit['name'] = $name = $this->randomName();    $edit['mail'] = $mail = $edit['name'] . '@example.com';    $edit['profile_main[profile_fullname][und][0][value]'] = $this->randomName();    $this->drupalPost('user/register', $edit, t('Create new account'));    $this->assertText(t('A welcome message with further instructions has been sent to your e-mail address.'), t('User registered successfully.'));    $return = user_load_multiple(array(), array('name' => $name, 'mail' => $mail));    $new_user = reset($return);    $this->assertTrue($new_user->status, t('New account is active after registration.'));    $this->assertEqual(profile2_load_by_user($new_user, 'main')->profile_fullname[LANGUAGE_NONE][0]['value'], $edit['profile_main[profile_fullname][und][0][value]'], 'Profile created.');  }  /**   * Test basic edit and display.   */  function testEditAndDisplay() {    user_role_revoke_permissions(DRUPAL_AUTHENTICATED_RID, array('edit own main profile', 'view own main profile'));    $user1 = $this->drupalCreateUser();    $this->drupalLogin($user1);    // Make sure access is denied to the profile.    $this->drupalGet('user/' . $user1->uid . '/edit/main');    $this->assertText(t('Access denied'), 'Access has been denied.');    // Test creating a profile manually (e.g. by an admin) and ensure the user    // may not see it.    profile2_create(array('type' => 'main', 'uid' => $user1->uid))->save();    $this->drupalGet('user/' . $user1->uid);    $this->assertNoText(t('Main profile'), 'Profile data is not visible to the owner.');    $user2 = $this->drupalCreateUser(array('edit own main profile', 'view own main profile'));    $this->drupalLogin($user2);    // Create profiles for the user2.    $edit['profile_main[profile_fullname][und][0][value]'] = $this->randomName();    $this->drupalPost('user/' . $user2->uid . '/edit/main', $edit, t('Save'));    $this->assertText(t('The changes have been saved.'), 'Profile saved.');    $this->assertEqual(profile2_load_by_user($user2, 'main')->profile_fullname[LANGUAGE_NONE][0]['value'], $edit['profile_main[profile_fullname][und][0][value]'], 'Profile edited.');    $this->drupalGet('user/' . $user2->uid);    $this->assertText(check_plain($edit['profile_main[profile_fullname][und][0][value]']), 'Profile displayed.');  }}
 |