You are here

function NodeApiExampleTestCase::testNodeExampleRevision in Examples for Developers 6

Same name and namespace in other branches
  1. 7 nodeapi_example/nodeapi_example.test \NodeApiExampleTestCase::testNodeExampleRevision()

Login user, create an example node, and test rating functionality with a node using revisions.

File

nodeapi_example/nodeapi_example.test, line 113
Test case for Testing the node API example module.

Class

NodeApiExampleTestCase
@file Test case for Testing the node API example module.

Code

function testNodeExampleRevision() {

  // Login the user.
  $this
    ->drupalLogin($this->web_user);

  // Create custom content type
  $content_type = $this
    ->drupalCreateContentType();
  $type = $content_type->type;

  // Go to edit the settings of this content type
  $this
    ->drupalGet('admin/content/node-type/' . $type);
  $this
    ->assertResponse(200);

  // Check if the new Rating options appear in the settings page
  $this
    ->assertText(t('NodeAPI Example Rating'), t('Rating options found in content type.'));
  $this
    ->assertFieldByName('nodeapi_example', 1, t('Rating is Disabled by default.'));

  // Disable the rating for this content type: 0 for Disabled, 1 for Enabled.
  $content_settings = array(
    'nodeapi_example' => 0,
  );
  $this
    ->drupalPost('admin/content/node-type/' . $type, $content_settings, t('Save content type'));
  $this
    ->assertResponse(200);
  $this
    ->assertRaw(' has been updated.', t('Settings modified successfully for content type.'));

  // Create an example node
  $edit = array(
    "title" => $this
      ->randomName(),
  );
  $this
    ->drupalPost('node/add/' . $type, $edit, t('Save'));
  $this
    ->assertResponse(200);

  // Check that the rating is not shown, as we have not yet enabled it
  $this
    ->assertNoRaw('Rating: <em>', t('Extended rating information is not shown.'));

  // Save current current url (we are viewing the new node)
  $node_url = $this
    ->getUrl();

  // Enable the rating for this content type: 0 for Disabled, 1 for Enabled.
  $content_settings = array(
    'nodeapi_example' => TRUE,
  );
  $this
    ->drupalPost('admin/content/node-type/' . $type, $content_settings, t('Save content type'));
  $this
    ->assertResponse(200);
  $this
    ->assertRaw(' has been updated.', t('Settings modified successfully for content type.'));

  // Check previously create node. It should be not rated
  $this
    ->drupalGet($node_url);
  $this
    ->assertResponse(200);
  $this
    ->assertRaw(t('Rating: %rating', array(
    '%rating' => t('Unrated'),
  )), t('Content is not rated.'));

  // Rate the content, 4 is for "Good"
  $rate = array(
    'nodeapi_example_rating' => 4,
  );
  $this
    ->drupalPost($node_url . '/edit', $rate, t('Save'));
  $this
    ->assertResponse(200);

  // Check that content has been rated
  $this
    ->assertRaw(t('Rating: %rating', array(
    '%rating' => t('Good'),
  )), t('Content is successfully rated.'));

  // Rate the content to poor using a new revision, 1 is for "Poor"
  $rate = array(
    'nodeapi_example_rating' => 1,
    'revision' => 1,
  );
  $this
    ->drupalPost($node_url . '/edit', $rate, t('Save'));
  $this
    ->assertResponse(200);

  // Check that content has been rated
  $this
    ->assertRaw(t('Rating: %rating', array(
    '%rating' => t('Poor'),
  )), t('Content is successfully rated.'));

  //Now switch back to previous revision of the node.
  $this
    ->drupalGet($node_url . '/revisions');

  // There is only a revision, so it must work just clicking the first link..
  $this
    ->clickLink('revert');
  $revert_form = $this
    ->getUrl();
  $this
    ->drupalPost($revert_form, array(), t('Revert'));

  // Go back to the node page.
  $this
    ->drupalGet($node_url);
  $this
    ->assertResponse(200);

  // Check that content has been rated
  $this
    ->assertRaw(t('Rating: %rating', array(
    '%rating' => t('Good'),
  )), t('Content rating matches reverted revision.'));
}