t('Og membership test'), 'desc' => t('Tests og membership functionality and asserts correct behavior with all og_selective settings'), 'group' => 'Organic groups'); } 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'); } }