You are here

function OgSubscribe::testAddOg in Organic groups 5.2

Same name and namespace in other branches
  1. 5.8 tests/og_subscribe.test \OgSubscribe::testAddOg()
  2. 5 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 9

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("Subscribe");
  $this
    ->assertWantedRaw(t('Subscribed to 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 subscribing a new user
  $url = url('og/unsubscribe/' . $gid, NULL, NULL, TRUE);
  $ret = $this->_browser
    ->get($url);
  $this
    ->assertTrue($ret, " [browser] GET {$url}");
  $this
    ->assertWantedRaw(t('Are you sure you want to unsubscribe from the group %title?', array(
    '%title' => $node->title,
  )), "Usubscribe confirmation text found");
  $this
    ->clickSubmit('Unsubscribe');
  $this
    ->assertWantedRaw(t('User unsubscribed 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('Subscribed to the %group group', array(
    '%group' => $node->title,
  )), 'User subscribed to 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("Subscribe");
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertWantedRaw(t('Subscription request to the @group group was rejected, only group administrators can add users to this group.', array(
    '@group' => $node->title,
  )), 'Rjected 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('Subscribed to the %group group', array(
    '%group' => $node->title,
  )), 'User subscribed to 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("Subscribe");
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertWantedRaw(t('Subscription request to the @group group was rejected, only group administrators can add users to this group.', array(
    '@group' => $node->title,
  )), 'Rjected 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('Subscribed to the @group', array(
    '@group' => $node->title,
  )), 'User subscribed to 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("Subscribe");
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertWantedRaw(t('Subscription 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('Subscription 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("Subscribe");
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertNoUnwantedRaw(t('Subscribed to the %group group', array(
    '%group' => $node->title,
  )), 'User subscribed to group - text not found.');
  $this
    ->assertNoUnwantedRaw(t('Page not found'), 'page not not found.');
  $this
    ->assertWantedRaw(t('Subscription 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('Subscription 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');
}