You are here

public function FivestarTestCase::testViewerRating in Fivestar 7.2

Same name and namespace in other branches
  1. 8 test/fivestar.field.test \FivestarTestCase::testViewerRating()

Test that users can rate content with exposed widgets.

File

test/fivestar.field.test, line 50
Simpletests for the Fivestar module.

Class

FivestarTestCase
Makes sure fivestar widgets can be created and used.

Code

public function testViewerRating() {
  $this
    ->createFivestarField(array(
    'widget_type' => 'exposed',
  ));

  // Add a test_node_type to rate.
  $node = $this
    ->drupalCreateNode(array(
    'type' => 'test_node_type',
  ));
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->drupalLogin($this->voterUser);

  // Rate the test_node_type.
  $edit = array(
    'vote' => '60',
  );
  $this
    ->drupalPost('node/' . $node->nid, $edit, 'Rate');
  $this
    ->assertNoRaw('No votes yet', 'Visitors can rate content using the exposed widget.');

  // Load the instance settings so we can change certain settings.
  $instance = field_read_instance('node', 'fivestar_test', 'test_node_type');

  // Let's see if visitors is able to re-vote.
  // @see http://drupal.org/node/356605
  $instance['settings']['allow_revote'] = 1;
  field_update_instance($instance);
  $this
    ->drupalGet('node/' . $node->nid);
  $result = $this
    ->xpath("//div[contains(@class, 'field-name-fivestar-test')]//select[contains(@name,'vote')]");
  $this
    ->assertEqual(count($result), TRUE, 'Visitors can re-vote');

  // Let's test to make sure the cancel option is not available if disabled.
  // @see http://drupal.org/node/1269276
  $this
    ->assertNoRaw('Cancel rating', 'User cannot cancel his vote.');
  $instance['settings']['allow_clear'] = 1;
  field_update_instance($instance);
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertRaw('Cancel rating', 'User can cancel his vote.');

  // Now let's change the field to have exposed off and make sure the value
  // is still there.
  // @see http://drupal.org/node/1242082
  $instance['display']['default']['settings']['expose'] = FALSE;
  field_update_instance($instance);
  $this
    ->drupalGet('node/' . $node->nid);
  $this
    ->assertFalse($this
    ->xpath("//form[contains(@class, 'fivestar-widget')]"));

  // Make sure the three-star rating still shows on the node view.
  $result = $this
    ->xpath("//div[contains(@class, 'field-name-fivestar-test')]//div[contains(@class,'star-first')]/span");
  $this
    ->assertEqual($result[0][0], '3', 'The static display still shows three stars.');
}