Newer
Older
*/
class OgGroupCrud extends DrupalWebTestCase {
public static function getInfo() {
return array(
'description' => 'Test the create, update and remove of group entitys.',
Amitaibu
committed
parent::setUp('entity_feature', 'og');
$node = entity_create('node', array(
'type' => 'article',
'title' => $this->randomName(),
'uid' => 1
));
entity_save('node', $node);
$group = og_get_group('node', $node->nid, TRUE);
// Assert is new property.
$this->assertTrue($group->is_new, t('New group has "is new" property.'));
// Assert default state.
$this->assertTrue($group->state == OG_STATE_ACTIVE, t('Default state property is active.'));
// Assert default creation time.
$this->assertTrue($group->created, t('Group creating time was added to group.'));
// Assert group ID not set.
$this->assertTrue(empty($group->gid), t('Group ID not set for unsaved group.'));
// Save the group.
// Assert group ID was set.
$this->assertTrue(!empty($group->gid), t('Group ID was set for saved group.'));
// Set a new state for the group.
// Assert group isn't loaded, when state is pending and state isn't
// specifically stated.
$this->assertFalse($group, t('Pending state group was not loaded, as it was not requested.'));
// Reload group to make sure state was updated.
$group = og_get_group('node', $node->nid, FALSE, array(OG_STATE_PENDING), TRUE);
$this->assertTrue($group->state == OG_STATE_PENDING, t('Group was updated.'));
$group = og_get_group('node', $node->nid, FALSE, array(), TRUE);
$this->assertFalse($group, t('Group was deleted.'));
/**
* Test og_get_group_ids().
*
* Create a few groups of different entities. and check we get their IDs.
*/
function testOgGetGroupIds() {
// List keyed by the group ID and their entity type, ID as value.
$list = array(
1 => array('entity_test', 10),
2 => array('entity_test', 20),
3 => array('entity_test', 30),
4 => array('entity_test', 40, OG_STATE_PENDING),
5 => array('entity_test', 50, OG_STATE_PENDING),
6 => array('node', 10),
);
foreach ($list as $value) {
$values = array(
'entity_type' => $value[0],
'etid' => $value[1],
'state' => !empty($value[2]) ? $value[2] : OG_STATE_ACTIVE,
'created' => time(),
'label' => $this->randomString(),
);
entity_create('group', $values)->save();
}
$gids = og_get_group_ids('entity_test');
$expected_gids = array(10 => 1, 20 => 2, 30 => 3);
$this->assertEqual($gids, $expected_gids, t('All active groups of the same entity were returned.'));
drupal_static_reset('og_get_group_ids');
$gids = og_get_group_ids('group', array());
$this->assertFalse($gids, t('No groups were returned, as no entity ID was specified.'));
drupal_static_reset('og_get_group_ids');
$gids = og_get_group_ids('entity_test', FALSE, array(OG_STATE_PENDING));
$expected_gids = array(40 => 4, 50 => 5);
$this->assertEqual($gids, $expected_gids, t('All pending groups of the same entity were returned.'));
// Ask for a group that is pending, but result should include only active.
$gids = og_get_group_ids('entity_test', array(10, 20, 40));
$expected_gids = array(10 => 1, 20 => 2);
$this->assertEqual($gids, $expected_gids, t('Specific active groups were returned.'));
// Check the state conditions filters results.
drupal_static_reset('og_get_group_ids');
$gids = og_get_group_ids('entity_test', array(10, 20, 40), array(OG_STATE_PENDING));
$expected_gids = array(40 => 4);
$this->assertEqual($gids, $expected_gids, t('Specific pending groups were returned.'));
// Entity type that doesn't exist.
$gids = og_get_group_ids('entity_test_non_exist', array(1));
$this->assertFalse($gids, t('Non existent entity type was not returned.'));
// Entity Id that doesn't exist.
$gids = og_get_group_ids('entity_test', array(100));
$this->assertFalse($gids, t('Non existent entity ID was not returned.'));
// Test caching is correct and resets properly when the state changes.
// We can check the cache itself, by getting it (not be reference) and
// making sure it has the correct values.
$gids = og_get_group_ids('entity_test', array(10, 20, 30));
$this->assertEqual(count($gids), 3, t('All active groups loaded.'));
$cache = drupal_static('og_get_group_ids', array());
$cache_gids = array(10 => 1, 20 => 2, 30 => 3);
$this->assertEqual($cache['entity_test'], $cache_gids, 'All active groups are cached.');
$gids = og_get_group_ids('entity_test', array(10, 20));
$this->assertEqual(count($gids), 2, t('All active groups re-loaded from cache.'));
$cache = drupal_static('og_get_group_ids', array());
$cache_gids = array(10 => 1, 20 => 2, 30 => 3);
$this->assertEqual($cache['entity_test'], $cache_gids, 'All active groups are cached.');
$gids = og_get_group_ids('entity_test', array(10, 20), array(OG_STATE_ACTIVE), TRUE);
$this->assertEqual(count($gids), 2, t('All requested groups loaded after soft-reset.'));
$cache = drupal_static('og_get_group_ids', array());
$cache_gids = array(10 => 1, 20 => 2);
$this->assertEqual($cache['entity_test'], $cache_gids, 'All requested groups are cached after soft-reset.');
$gids = og_get_group_ids('entity_test', array(10, 20, 30, 40));
$this->assertEqual(count($gids), 3, t('Only active groups loaded.'));
$cache = drupal_static('og_get_group_ids', array());
$cache_gids = array(10 => 1, 20 => 2, 30 => 3);
$this->assertEqual($cache['entity_test'], $cache_gids, 'Only active groups cached.');
$cache = drupal_static('og_get_group_ids', array());
$this->assertEqual($cache['__info']['entity_test']['states'], array(OG_STATE_ACTIVE), 'Cache states is set to active.');
$gids = og_get_group_ids('entity_test', array(10, 20, 30, 40), array(OG_STATE_PENDING));
$this->assertEqual(count($gids), 1, t('Cache was soft reset as state was changed, and only pending group was loaded.'));
$cache = drupal_static('og_get_group_ids', array());
$cache_gids = array(40 => 4);
$this->assertEqual($cache['entity_test'], $cache_gids, 'Only requested pending group was cached.');
$this->assertEqual($cache['__info']['entity_test']['states'], array(OG_STATE_PENDING), 'Cache states was changed to pending.');
$cache = drupal_static('og_get_group_ids', array());
$this->assertFalse($cache['__info']['entity_test']['query all'], '"query all" is FALSE in cache.');
$gids = og_get_group_ids('entity_test', FALSE);
$this->assertEqual(count($gids), 3, t('All active groups loaded from cache after query all.'));
$cache = drupal_static('og_get_group_ids', array());
$cache_gids = array(10 => 1, 20 => 2, 30 => 3);
$this->assertEqual($cache['entity_test'], $cache_gids, 'All active groups are cached.');
$this->assertTrue($cache['__info']['entity_test']['query all'], '"query all" was set to TRUE in cache.');
$gids = og_get_group_ids('entity_test', array(10, 20, 40));
$this->assertEqual(count($gids), 2, t('All requested active groups loaded from cache after query all.'));
$cache = drupal_static('og_get_group_ids', array());
$cache_gids = array(10 => 1, 20 => 2, 30 => 3);
$this->assertEqual($cache['entity_test'], $cache_gids, 'All active groups are still cached from previous call.');
$this->assertTrue($cache['__info']['entity_test']['query all'], '"query all" is still set to TRUE in cache.');
// Get all groups (i.e. get by "group" entity type).
$cache = drupal_static('og_get_group_ids', array());
$this->assertTrue(empty($cache['group']), 'Cache of "group" entity is empty.');
$gids = og_get_group_ids('group', FALSE, array(OG_STATE_ACTIVE, OG_STATE_PENDING));
$this->assertEqual(count($gids), 6, t('All active and pending groups loaded.'));
$cache = drupal_static('og_get_group_ids', array());
$cache_gids = drupal_map_assoc(array(1, 2, 3, 4, 5, 6));
$this->assertEqual($cache['group'], $cache_gids, 'All active and pending groups are cached.');
$this->assertTrue($cache['__info']['group']['query all'], '"query all" is set to TRUE in cache.');
}
// Add OG group field to the entity_test's "main" bundle.
og_create_field(OG_GROUP_FIELD, 'entity_test', 'main');
Amitaibu
committed
$web_user = $this->drupalCreateUser();
// Create an entity.
$property = OG_GROUP_FIELD;
Amitaibu
committed
$entity = entity_create('entity_test', array('name' => 'main', 'uid' => $web_user->uid));
$entity->{$property}[LANGUAGE_NONE][0]['value'] = 0;
// Assert no group was created.
$group = og_get_group('entity_test', $entity->pid);
$this->assertTrue(empty($group->gid), t('Group was not created.'));
// Assert group was created, and was already saved, and its state is active
$entity->{$property}[LANGUAGE_NONE][0]['value'] = 1;
$entity->save();
$group = og_get_group('entity_test', $entity->pid);
$this->assertTrue(!empty($group->gid), t('Group was created.'));
$this->assertTrue($group->state == OG_STATE_ACTIVE, t('Group state is set to active.'));
// Assert the user is registered to the new group.
Amitaibu
committed
$this->assertTrue(og_is_member($group->gid, 'user', $web_user), t('User is registered to the new group.'));
// Assert group's state was set to pending.
$entity->{$property}[LANGUAGE_NONE][0]['value'] = 0;
$group = og_get_group('entity_test', $entity->pid, FALSE, array(OG_STATE_ACTIVE, OG_STATE_PENDING), TRUE);
$this->assertTrue($group->state == OG_STATE_PENDING, t('Group state was set to pending.'));
// Delete the entity, and assert the group was deleted.
$entity->delete();
$group = og_get_group('entity_test', $entity->pid, FALSE, array(OG_STATE_ACTIVE, OG_STATE_PENDING));
$this->assertFalse($group, t('Group was deleted.'));
// Assert user no longer belongs to group.
$this->assertFalse(og_is_member($gid), t('User is no longer registered to the new group.'));
* TODO: Test Group content handeling.
class OgGroupAndUngroup extends DrupalWebTestCase {
public static function __getInfo() {
return array(
'name' => 'Organic groups group and ungroup',
'description' => 'Test the group and ungrouping of content under a group.',
Amitaibu
committed
parent::setUp('entity_feature', 'og');
}
}
class OgUserPermissionsTestCase extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Organic groups role permissions',
'description' => 'Verify that role permissions can be added and removed via API.',
Amitaibu
committed
parent::setUp('entity_feature', 'og');
// Add OG group field to the entity_test's "main" bundle.
og_create_field(OG_GROUP_FIELD, 'entity_test', 'main');
// Add OG audience field to the node's "article" bundle.
og_create_field(OG_AUDIENCE_FIELD, 'node', 'article');
* Verify proper permission changes by og_user_role_change_permissions().
// Create user.
$user1 = $this->drupalCreateUser();
// Create an entity.
$property = OG_GROUP_FIELD;
Amitaibu
committed
$entity = entity_create('entity_test', array('name' => 'main', 'uid' => $user1->uid));
$entity->{$property}[LANGUAGE_NONE][0]['value'] = 1;
$entity->save();
$group = og_get_group('entity_test', $entity->pid);
// Associate user to the group.
$user2 = $this->drupalCreateUser();
og_group($group->gid, 'user', $user2);
// Assert the user is registered to the new group.
$this->assertTrue(og_is_member($group->gid, 'user', $user2), t('User is registered to the new group.'));
$this->assertFalse(og_user_access($group->gid, 'update own article content', $user2), t('User does not have "update own article content" permission.'));
$this->assertFalse(og_user_access($group->gid, 'delete own article content', $user2), t('User does not have "delete own article content" permission.'));
$this->assertFalse(og_user_access($group->gid, 'administer group', $user2), t('User does not have "administer group" permission.'));
// Change permissions to authenticated member.
$roles = array_flip(og_get_global_roles());
// Authenticated role ID.
'delete own article content' => 1,
'administer group' => 1,
og_user_role_change_permissions($rid, $permissions);
$this->assertFalse(og_user_access($group->gid, 'update own article content', $user2), t('User still does not have "update own article content" permission.'));
$this->assertTrue(og_user_access($group->gid, 'delete own article content', $user2), t('User now has "delete own article content" permission.'));
$this->assertTrue(og_user_access($group->gid, 'administer group', $user2), t('User now has "administer group" permission.'));
$permissions = array(
'delete own article content' => 1,
'administer group' => 0,
);
og_user_role_change_permissions($rid, $permissions);
$this->assertTrue(og_user_access($group->gid, 'delete own article content', $user2), t('User still has "delete own article content" permission.'));
$this->assertFalse(og_user_access($group->gid, 'administer group', $user2), t('User no longer has "administer group" permission.'));
class OgDefaultAccessFieldTestCase extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Organic groups default access field',
'description' => 'Test groups with default access field enabled or disabled.',
'group' => 'Organic groups'
);
}
function setUp() {
Amitaibu
committed
parent::setUp('entity_feature', 'og');
}
/**
* Test groups with default access field enabled or disabled.
*
* - Group without default access field.
* - Group with default access field enabled.
* - Previous group with field disabled.
*/
function testOgDefaultAccessField() {
// Create user.
Amitaibu
committed
$web_user = $this->drupalCreateUser();
// Add OG group field to the entity_test's "main" bundle.
og_create_field(OG_GROUP_FIELD, 'entity_test', 'main');
// Group without default access field.
Amitaibu
committed
$entity = entity_create('entity_test', array('name' => 'main', 'uid' => $web_user->uid));
$entity->{OG_GROUP_FIELD}[LANGUAGE_NONE][0]['value'] = 1;
$entity->save();
$group = og_get_group('entity_test', $entity->pid);
$this->assertEqual(og_get_global_roles(), og_user_roles($group->gid), t('Group without default access field is assigned to the global roles and permissions settings.'));
// Add default access field to the entity_test's "main" bundle.
og_create_field(OG_DEFAULT_ACCESS_FIELD, 'entity_test', 'main');
// Group with default access field disabled.
Amitaibu
committed
$entity = entity_create('entity_test', array('name' => 'main', 'uid' => $web_user->uid));
$entity->{OG_GROUP_FIELD}[LANGUAGE_NONE][0]['value'] = 1;
$entity->{OG_DEFAULT_ACCESS_FIELD}[LANGUAGE_NONE][0]['value'] = 0;
$entity->save();
$group = og_get_group('entity_test', $entity->pid);
$this->assertEqual(og_get_global_roles(), og_user_roles($group->gid), t('Group with default access field disabled is assigned to the global roles and permissions settings.'));
// Group with default access field enabled.
Amitaibu
committed
$entity = entity_create('entity_test', array('name' => 'main', 'uid' => $web_user->uid));
$entity->{OG_GROUP_FIELD}[LANGUAGE_NONE][0]['value'] = 1;
$entity->{OG_DEFAULT_ACCESS_FIELD}[LANGUAGE_NONE][0]['value'] = 1;
$entity->save();
$group = og_get_group('entity_test', $entity->pid);
$this->assertNotEqual(og_get_global_roles(), og_user_roles($group->gid), t('Group with default access field enabled has own roles and permissions settings.'));
// Disable existing group's default access field.
$entity->{OG_DEFAULT_ACCESS_FIELD}[LANGUAGE_NONE][0]['value'] = 0;
$entity->save();
$this->assertEqual(og_get_global_roles(), og_user_roles($group->gid), t('Group with enabled default access field that was disabled is assigned to the global roles and permissions settings.'));
}
}
/**
* Test the multilangual groups.
*/
class OgTranslationTestCase extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Organic groups multilangual',
'description' => 'Test tranlatable node that is a group, returns the same group ID.',
'group' => 'Organic groups',
);
}
function setUp() {
Amitaibu
committed
parent::setUp('locale', 'translation', 'translation_test', 'og');
}
function testOgNodeLocale() {
Amitaibu
committed
$web_user = $this->drupalCreateUser(array(
'administer languages',
'administer content types',
'access administration pages',
'create page content',
'edit own page content',
'translate content',
));
Amitaibu
committed
$this->drupalLogin($web_user);
// Add languages.
$this->addLanguage('en');
$this->addLanguage('es');
// Set "Basic page" content type to use multilingual support with translation.
$this->drupalGet('admin/structure/types/manage/page');
$edit = array();
$edit['language_content_type'] = 2;
$this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
// Add OG group field to the node's "page" bundle.
og_create_field(OG_GROUP_FIELD, 'node', 'page');
// Create Basic page in English.
$node_title = $this->randomName();
$node_body = $this->randomName();
$node = $this->createPage($node_title, $node_body, 'en');
// Submit translation in Spanish.
$node_translation_title = $this->randomName();
$node_translation_body = $this->randomName();
$node_translation = $this->createTranslation($node, $node_translation_title, $node_translation_body, 'es');
$this->drupalGet('node/' . $node_translation->nid . '/edit');
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
$this->assertText(t('You can not change the group state from a translated content'), t('Group field on tranlated node does not allow editing.'));
$this->drupalGet('node/' . $node->nid . '/edit');
$this->assertNoText(t('You can not change the group state from a translated content'), t('Group field on original node allows editing.'));
}
/**
* Install a the specified language if it has not been already. Otherwise make sure that
* the language is enabled.
*
* @param string $language_code The language code the check.
*/
function addLanguage($language_code) {
// Check to make sure that language has not already been installed.
$this->drupalGet('admin/config/regional/language');
if (strpos($this->drupalGetContent(), 'enabled[' . $language_code . ']') === FALSE) {
// Doesn't have language installed so add it.
$edit = array();
$edit['langcode'] = $language_code;
$this->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
// Make sure we're not using a stale list.
drupal_static_reset('language_list');
$languages = language_list('language');
}
elseif ($this->xpath('//input[@type="checkbox" and @name=:name and @checked="checked"]', array(':name' => 'enabled[' . $language_code . ']'))) {
// It's installed and enabled. No need to do anything.
}
else {
// It's installed but not enabled. Enable it.
$this->drupalPost(NULL, array('enabled[' . $language_code . ']' => TRUE), t('Save configuration'));
}
}
/**
* Create a "Basic page" in the specified language, and set it to be a group.
*
* @param $title
* Title of basic page in specified language.
* @param $body
* Body of basic page in specified language.
* @param $language
* Language code.
* @param group
* TRUE to set node as group. FALSE by default.
*/
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
$edit = array();
$property = OG_GROUP_FIELD;
$langcode = LANGUAGE_NONE;
$edit["title"] = $title;
$edit["body[$langcode][0][value]"] = $body;
$edit['language'] = $language;
$this->drupalPost('node/add/page', $edit, t('Save'));
// Check to make sure the node was created.
$node = $this->drupalGetNodeByTitle($title);
$this->assertTrue($node, t('Node found in database.'));
return $node;
}
/**
* Create a translation for the specified basic page in the specified language.
*
* @param object $node The basic page to create translation for.
* @param string $title Title of basic page in specified language.
* @param string $body Body of basic page in specified language.
* @param string $language Language code.
*/
function createTranslation($node, $title, $body, $language) {
$this->drupalGet('node/add/page', array('query' => array('translation' => $node->nid, 'target' => $language)));
$body_key = "body[$language][0][value]";
$this->assertFieldByXPath('//input[@id="edit-title"]', $node->title, "Original title value correctly populated.");
$this->assertFieldByXPath("//textarea[@name='$body_key']", $node->body[$node->language][0]['value'], "Original body value correctly populated.");
$edit = array();
$edit["title"] = $title;
$edit[$body_key] = $body;
$this->drupalPost(NULL, $edit, t('Save'));
$this->assertRaw(t('Basic page %title has been created.', array('%title' => $title)), t('Translation created.'));
// Check to make sure that translation was successful.
$translation = $this->drupalGetNodeByTitle($title);
$this->assertTrue($translation, t('Node found in database.'));
$this->assertTrue($translation->tnid == $node->nid, t('Translation set id correctly stored.'));
return $translation;
}
}
/**
* Test group audience field.
*
* TODO:
* - User with no permissions.
* - User without and without permissions for opt-group.
* - Opt group enabled or disabled.
* - Editing existing field.
* - Prepopulate via URL.
* - Change input from checkboxes to select.
*/
class OgGroupudienceField extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Organic groups field group audience',
'description' => 'Test the field group audience functionality.',
'group' => 'Organic groups',
);
}
function setUp() {
Amitaibu
committed
parent::setUp('entity_feature', 'og');
// Add OG group field to the entity_test's "main" bundle.
og_create_field(OG_GROUP_FIELD, 'entity_test', 'main');
// Add OG audience field to the node's "article" bundle.
og_create_field(OG_AUDIENCE_FIELD, 'node', 'article');
}
/**
* No groups and a group is added.
*/
function testOgAudienceFieldBasic() {
// Create user.
Amitaibu
committed
$web_user = $this->drupalCreateUser(array(
'access content',
'administer content types',
'create article content',
'edit any article content',
));
Amitaibu
committed
$this->drupalLogin($web_user);
$this->drupalGet('node/add/article');
$this->assertText(t('There are no groups you can select from.'), 'Field group audience shows correct description about no groups.');
// Create an entity.
$property = OG_GROUP_FIELD;
Amitaibu
committed
$entity = entity_create('entity_test', array('name' => 'main', 'uid' => $web_user->uid));
$entity->{$property}[LANGUAGE_NONE][0]['value'] = 1;
$entity->save();
$group = og_get_group('entity_test', $entity->pid);
$this->drupalGet('node/add/article');
$this->assertText(t('Select the groups this content should be associated with.'), 'Field group audience shows correct description about existing groups.');
// TODO: Why is the extra space needed in the result?
$this->assertFieldByXPath('//label[@for="edit-group-audience-und-' . $group->gid . '"]', $group->label . ' ', 'Field group audience shows the existing group.');
}
/**
* Test re-installation of module.
*/
class OgUnInstallTestCase extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Organic groups install, uninstall and re-install',
'description' => 'Test the installing, uninstalling and re-installing of the Organic groups module',
'group' => 'Organic groups',
);
}
function setUp() {
parent::setUp('entity_feature', 'og');
}
/**
* Instaill, uninstall and re-install.
*/
function testOgInstall() {
// Assert default roles and permissions were created.
$global_roles = og_get_global_roles();
$this->assertFalse(array_diff($global_roles, array(OG_ANONYMOUS_ROLE, OG_AUTHENTICATED_ROLE, OG_ADMINISTRATOR_ROLE)), t('Global roles were created on module installation.'));
// Uninstall module. Assert the deletion of fields on uninstall.
module_disable(array('og'));
drupal_uninstall_modules(array('og'), FALSE);
$og_fields = field_read_fields(array('module' => 'og'), array('include_inactive' => TRUE));
$this->assertTrue(empty($og_fields), 'Uninstalling organic groups module removes all fields owned by the module.');
// Re-enable module.
module_enable(array('og'));
$modules = module_list(TRUE);
$this->assertFalse(empty($modules['og']), 'Enabling organic groups module after uninstall is sucessful.');
}
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
}
/**
* Upgrade test.
*
* Load a filled installation of Drupal 6 and run the upgrade process on it.
*/
class OgUpgradePathTestCase extends UpgradePathTestCase {
public static function getInfo() {
return array(
'name' => 'Organic groups upgrade path',
'description' => 'Tests the upgrade path of Organic groups.',
'group' => 'Organic groups',
);
}
public function setUp() {
// Path to the database dump.
$this->databaseDumpFiles = array(
drupal_get_path('module', 'og') . '/tests/drupal-6.og.database.php',
);
parent::setUp();
}
/**
* Test a successful upgrade.
*/
public function testOgUpgrade() {
// The upgrade should "fail" since OG won't upgrade until it's enabled.
$this->assertTrue($this->performUpgrade(FALSE), t('The upgrade was completed successfully.'));
// TODO: Understand why this workround is needed to load all entity classes.
module_enable(array('entity'));
module_load_include('inc', 'entity' ,'includes/entity');
module_load_include('inc', 'entity' ,'includes/entity.controller');
module_enable(array('og'));
$this->assertTrue($this->performUpgrade(FALSE), t('The upgrade of Organic groups was completed successfully.'));
// Assert according to the scenario Drupal 6's test table dump was created.
// TODO: Assert OG fields.
$group = og_get_group('node', 1);
$this->assertEqual($group->state, OG_STATE_ACTIVE, t('Node ID 1 is an active group.'));
$group = og_get_group('node', 2);
$this->assertEqual($group->state, OG_STATE_ACTIVE, t('Node ID 2 is an active group.'));
// Test group content with NID 3 - 5 belong to the group with NID 2.
foreach (range(3, 5) as $nid) {
$node = node_load($nid);
$this->assertTrue(og_is_member($group->gid, 'node', $node), t('Node ID @nid is a group content of Node ID 2', array('@nid' => $nid)));
}
// Orphan group content (i.e. not attached to a group).
$group = og_get_group('node', 6);
$this->assertFalse($group, t('Node ID 6 is not a group.'));
$node = node_load(6);
$this->assertFalse($node->{OG_AUDIENCE_FIELD}, t('Node ID 6 is not associated with a group.'));
// Group content that shares the same group.
$group_alpha = og_get_group('node', 7);
$group_beta = og_get_group('node', 8);
$node = node_load(9);
foreach (array($group_alpha, $group_beta) as $group) {
$this->assertTrue(og_is_member($group->gid, 'node', $node), t('Node ID @nid is as group content associated with multiple groups.'));
}
// Check user membership.
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
$group = og_get_group('node', 10);
// Assert users.
$values = array(
// Uid 3 is the group manager, so in OG6 it was marked as admin.
3 => array('admin' => TRUE),
4 => array('active' => FALSE),
5 => array(),
6 => array('active' => FALSE, 'admin' => TRUE),
7 => array('admin' => TRUE),
);
foreach ($values as $uid => $value) {
// Set default values.
$value += array('active' => TRUE, 'admin' => FALSE);
if ($value['active']) {
$op = t('active');
$states = array(OG_STATE_ACTIVE);
}
else {
$op = t('pending');
$states = array(OG_STATE_PENDING);
}
$account = user_load($uid);
$roles = array();
// OG_AUTHENTICATED_ROLE
$roles[2] = 2;
if ($value['admin']) {
// OG_ADMINISTRATOR_ROLE
$roles[3] = 3;
}
$this->assertTrue(og_is_member($group->gid, 'user', $account, $states), t('User @uid is @op member in group.', array('@uid' => $uid, '@op' => $op)));
$this->assertEqual(og_get_user_roles($group->gid, $uid), $roles, t('User @uid has the correct roles in group.', array('@uid' => $uid)));
}