public function FivestarTestCase::testViewerRating in Fivestar 7.2
Same name and namespace in other branches
- 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.');
}