You are here

function SpacesOGTestCRUD::testCRUD in Spaces 6.3

Same name and namespace in other branches
  1. 7.3 spaces_og/tests/spaces_og.test \SpacesOGTestCRUD::testCRUD()
  2. 7 spaces_og/tests/spaces_og.test \SpacesOGTestCRUD::testCRUD()

OG CRUD and configure tests.

File

spaces_og/tests/spaces_og.test, line 150

Class

SpacesOGTestCRUD

Code

function testCRUD() {

  // Test if presets save properly to DB.
  $realms = array(
    'og_admin' => array(
      'gid' => 1,
      'grant_view' => 1,
      'grant_update' => 1,
      'grant_delete' => 0,
    ),
    'og_public' => array(
      'gid' => 0,
      'grant_view' => 1,
      'grant_update' => 0,
      'grant_delete' => 0,
    ),
    'og_subscriber' => array(
      'gid' => 1,
      'grant_view' => 1,
      'grant_update' => 0,
      'grant_delete' => 0,
    ),
  );
  $presets = array(
    'og_controlled' => array(
      'og' => array(
        'og_selective' => 1,
        'og_register' => 1,
        'og_directory' => 1,
        'og_private' => 0,
      ),
      'node_access' => array(
        'og_public',
        'og_admin',
      ),
    ),
    'og_private' => array(
      'og' => array(
        'og_selective' => 3,
        'og_register' => 0,
        'og_directory' => 0,
        'og_private' => 1,
      ),
      'node_access' => array(
        'og_admin',
        'og_subscriber',
      ),
    ),
    'og_public' => array(
      'og' => array(
        'og_selective' => 0,
        'og_register' => 1,
        'og_directory' => 1,
        'og_private' => 0,
      ),
      'node_access' => array(
        'og_public',
        'og_admin',
      ),
    ),
  );
  foreach ($presets as $preset => $config) {
    $edit = array(
      'spaces_preset_og' => $preset,
    );
    $this
      ->drupalPost('node/1/edit', $edit, 'Save');

    // Assert spaces override status.
    $value = unserialize(db_result(db_query('SELECT value from {spaces_overrides} WHERE id = 1')));
    $this
      ->assertEqual($value, $preset);

    // Assert OG configuration.
    $og = db_fetch_array(db_query('SELECT og_selective, og_register, og_directory, og_private FROM {og} WHERE nid = 1'));
    foreach ($config['og'] as $k => $v) {
      $this
        ->assertEqual($og[$k], $v);
    }

    // Review node_access table, this is essentially testing OG behavior, but
    // a change in this behavior would break our assumptions.
    foreach ($config['node_access'] as $realm) {
      $this
        ->assertEqual(2, db_result(db_query('SELECT COUNT(*) FROM {node_access} WHERE nid = 1')));
      $access = db_fetch_array(db_query('SELECT * FROM {node_access} WHERE nid = 1 AND realm = "%s"', $realm));
      foreach ($realms[$realm] as $k => $v) {
        $this
          ->assertEqual($access[$k], $v);
      }
    }
  }

  // Delete the node and verify that there are no remnants.
  $this
    ->drupalPost('node/1/delete', array(), 'Delete group');
  $this
    ->assertText('Group Group A has been deleted.');
  $this
    ->assertEqual(0, db_result(db_query('SELECT count(*) FROM {spaces_overrides} WHERE id = 1')));
  $this
    ->assertEqual(0, db_result(db_query('SELECT count(*) FROM {purl} WHERE id = 1')));
}