You are here

function OgBehaviorHandlerTestCase::testSetStateOnInsert in Organic groups 7.2

Test settings the OG membership state via field values, when associating a new group-content to a group.

File

./og.test, line 1939

Class

OgBehaviorHandlerTestCase

Code

function testSetStateOnInsert() {
  module_enable(array(
    'og_test',
  ));
  $permissions = array(
    'access content',
    "create {$this->group_content} content",
    'administer group',
  );
  $user1 = $this
    ->drupalCreateUser();
  $user2 = $this
    ->drupalCreateUser($permissions);
  $user3 = $this
    ->drupalCreateUser($permissions);

  // Create a group.
  $entity1 = entity_create('entity_test', array(
    'name' => 'main',
    'uid' => $user1->uid,
  ));
  $wrapper = entity_metadata_wrapper('entity_test', $entity1);
  $wrapper->{OG_GROUP_FIELD}
    ->set(1);
  $wrapper
    ->save();
  og_group('entity_test', $entity1, array(
    'entity_type' => 'user',
    'entity' => $user2,
  ));
  og_group('entity_test', $entity1, array(
    'entity_type' => 'user',
    'entity' => $user3,
  ));

  // Post a node, state should be active.
  $type = str_replace('_', '-', $this->group_content);
  $edit = array(
    'title' => 'state-active',
    'og_group_ref[und][0][default][]' => array(
      $entity1->pid,
    ),
  );
  $this
    ->drupalLogin($user2);
  $this
    ->drupalPost('node/add/' . $type, $edit, t('Save'));
  $gids = og_get_entity_groups('node', 1);
  $id = key($gids['entity_test']);
  $og_membership = og_membership_load($id);
  $this
    ->assertEqual($og_membership->state, OG_STATE_ACTIVE, 'Memebership status is Active');

  // Post a node, state should be pending.
  $this
    ->drupalLogin($user3);
  $edit['title'] = 'state-pending';
  $this
    ->drupalPost('node/add/' . $type, $edit, t('Save'));
  $gids = og_get_entity_groups('node', 2, array(
    OG_STATE_PENDING,
  ));
  $id = key($gids['entity_test']);
  $og_membership = og_membership_load($id);
  $this
    ->assertEqual($og_membership->state, OG_STATE_PENDING, 'Memebership status is Active');
}