You are here

function OgSubscribe::testAddOg in Organic groups 5

Same name and namespace in other branches
  1. 5.8 tests/og_subscribe.test \OgSubscribe::testAddOg()
  2. 5.2 tests/og_subscribe.test \OgSubscribe::testAddOg()
  3. 5.3 tests/og_subscribe.test \OgSubscribe::testAddOg()
  4. 5.7 tests/og_subscribe.test \OgSubscribe::testAddOg()

File

tests/og_subscribe.test, line 12

Class

OgSubscribe

Code

function testAddOg() {
  $og_type = $this
    ->addNodeType();
  $web_user = $this
    ->drupalCreateUserRolePerm(array(
    'access content',
    "create {$og_type} content",
    "edit {$og_type} content",
    'create pages',
    'create groups',
  ));
  $this
    ->drupalLoginUser($web_user);
  $gid = $this
    ->addOg($og_type, OG_OPEN);
  $node = node_load($gid);

  // $b will be the "admin browser, sometimes backed up in _browser, sometimes used explictly"
  $b = $this->_browser;
  $this->_browser = new SimpleBrowser();
  $join_user = $this
    ->drupalCreateUserRolePerm(array(
    'access content',
  ));
  $this
    ->drupalLoginUser($join_user);

  /* Test subscribing a new user */
  $url = url('og/subscribe/' . $gid, NULL, NULL, TRUE);
  $ret = $this->_browser
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");

  // No theme, "Text" only
  $this
    ->assertWantedRaw(t('Are you sure you want to join the group %title?', array(
    '%title' => $node->title,
  )), "Confirmation text found.");
  $this
    ->clickSubmit("Join");
  $this
    ->assertWantedRaw(t('You are now a member of the @group', array(
    '@group' => $node->title,
  )), 'Subscribed to group - text found.');
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');

  /* Find user in list */
  $url = url('og/users/' . $gid, NULL, NULL, TRUE);
  $ret = $b
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assert(new TextExpectation($join_user->name), $b
    ->getContentAsText(), $message);

  /** @TODO: Test Posting etc... */

  // Test unsubscribing a new user
  $url = url("og/unsubscribe/{$gid}/{$join_user->uid}", NULL, NULL, TRUE);
  $ret = $this->_browser
    ->get($url);

  // print_r($ret);die(sd);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertWantedRaw(t('Are you sure you want to remove !name from the group @title?', array(
    '!name' => $join_user->name,
    '@title' => $node->title,
  )), "Leave confirmation text found");
  $this
    ->clickSubmit('Remove');
  $this
    ->assertWantedRaw(t('User removed from group.'), 'User unsubscribed to group - text found.');
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this->_browser = $b;

  // Find user in list */
  $url = url('og/users/' . $gid, NULL, NULL, TRUE);
  $ret = $b
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertNoUnwantedRaw($join_user->name, 'User name not found.');

  // CLOSED GROUP ************************************************************
  $gid = $this
    ->addOg($og_type, OG_CLOSED);
  $node = node_load($gid);
  $b = $this->_browser;
  $this->_browser = new SimpleBrowser();
  $this
    ->drupalLoginUser($join_user);

  // Test subscribing a new user
  $url = url('og/subscribe/' . $gid, NULL, NULL, TRUE);
  $ret = $this->_browser
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertNoUnwantedRaw(t('You are now a member of the @group group', array(
    '@group' => $node->title,
  )), 'User member of group - text not found.');
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertNoUnwantedRaw(t('Are you sure you want to join the group %title?', array(
    '%title' => $node->title,
  )), "Confirmation text found.");
  $this
    ->clickSubmit("Join");
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertWantedRaw(t('This is a closed group. The group administrators add/remove members as needed.'), 'Closed/Rejected text found.');

  // Find user in list
  $url = url('og/users/' . $gid, NULL, NULL, TRUE);
  $ret = $b
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assert(new NoTextExpectation($join_user->name), $b
    ->getContentAsText(), 'Username not found');
  $this->_browser = $b;

  /* INVITE ONLY GROUP ********************************************************/
  $gid = $this
    ->addOg($og_type, OG_INVITE_ONLY);
  $node = node_load($gid);
  $b = $this->_browser;
  $this->_browser = new SimpleBrowser();
  $this
    ->drupalLoginUser($join_user);

  // Test subscribing a new user
  $url = url('og/subscribe/' . $gid, NULL, NULL, TRUE);
  $ret = $this->_browser
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertNoUnwantedRaw(t('You are now a member of the @group group', array(
    '@group' => $node->title,
  )), 'User member of group - text not found.');
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertNoUnwantedRaw(t('Are you sure you want to join the group %title?', array(
    '%title' => $node->title,
  )), "Confirmation text found.");
  $this
    ->clickSubmit("Join");
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertWantedRaw(t('This is an invite only group. The group administrators add/remove members as needed.'), 'Rejected text found.');

  // Find user in list
  $url = url('og/users/' . $gid, NULL, NULL, TRUE);
  $ret = $b
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assert(new NoTextExpectation($join_user->name), $b
    ->getContentAsText(), 'Username not found');
  $this->_browser = $b;

  // MODERATED GROUP ---------------------------------------------
  $gid = $this
    ->addOg($og_type, OG_MODERATED);
  $node = node_load($gid);
  $b = $this->_browser;
  $this->_browser = new SimpleBrowser();
  $this
    ->drupalLoginUser($join_user);

  // Test subscribing a new user
  $url = url('og/subscribe/' . $gid, NULL, NULL, TRUE);
  $ret = $this->_browser
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertNoUnwantedRaw(t('You are now a member of the @group', array(
    '@group' => $node->title,
  )), 'User member of group - text not found.');
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertWantedRaw(t('Are you sure you want to join the group @title?', array(
    '@title' => $node->title,
  )), "Confirmation text found.");
  $this
    ->clickSubmit("Join");
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertWantedRaw(t('Membership request to the %group group awaits approval by an administrator.', array(
    '%group' => $node->title,
  )), 'Approval text found.');

  // Find user in list, Inactive users _ARE_ listed
  $this->_browser = $b;

  // Switch back to admin view
  $url = url('og/users/' . $gid, NULL, NULL, TRUE);
  $this
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertWantedRaw($join_user->name, 'Username found');
  $this
    ->clickLink(t('deny'));
  $this
    ->assertWantedRaw(t('Membership request denied.'), 'Denied text found.');
  $url = url('og/users/' . $gid, NULL, NULL, TRUE);
  $this
    ->get($url);
  $this
    ->assertNoUnwantedRaw($join_user->name, 'Username not found');

  // Now try this again
  $this->_browser = new SimpleBrowser();
  $this
    ->drupalLoginUser($join_user);

  // Test subscribing a new user
  $url = url('og/subscribe/' . $gid, NULL, NULL, TRUE);
  $ret = $this->_browser
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertWantedRaw(t('Are you sure you want to join the group %title?', array(
    '%title' => $node->title,
  )), "Confirmation text found.");
  $this
    ->clickSubmit("Join");
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertNoUnwantedRaw(t('You are now a member of the %group group', array(
    '%group' => $node->title,
  )), 'User member of group - text not found.');
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertWantedRaw(t('Membership request to the %group group awaits approval by an administrator.', array(
    '%group' => $node->title,
  )), 'Approval text found.');

  // Find user in list, Inactive users _ARE_ listed
  $this->_browser = $b;

  // Switch back to admin view
  $url = url('og/users/' . $gid, NULL, NULL, TRUE);
  $ret = $this->_browser
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertWantedRaw($join_user->name, 'Username found');
  $this
    ->clickLink(t('approve'));
  $this
    ->assertWantedRaw(t('Membership request approved.'), 'Approved text found.');
  $url = url('og/users/' . $gid, NULL, NULL, TRUE);
  $ret = $this->_browser
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertWantedRaw($join_user->name, 'Username found again');
}