You are here

function PollCreateTestCase::testPollClose in Drupal 7

File

modules/poll/poll.test, line 238
Tests for poll.module.

Class

PollCreateTestCase

Code

function testPollClose() {
  $content_user = $this
    ->drupalCreateUser(array(
    'create poll content',
    'edit any poll content',
    'access content',
  ));
  $vote_user = $this
    ->drupalCreateUser(array(
    'cancel own vote',
    'inspect all votes',
    'vote on polls',
    'access content',
  ));

  // Create poll.
  $title = $this
    ->randomName();
  $choices = $this
    ->_generateChoices(7);
  $poll_nid = $this
    ->pollCreate($title, $choices, FALSE);
  $this
    ->drupalLogout();
  $this
    ->drupalLogin($content_user);

  // Edit the poll node and close the poll.
  $close_edit = array(
    'active' => 0,
  );
  $this
    ->pollUpdate($poll_nid, $title, $close_edit);

  // Verify 'Vote' button no longer appears.
  $this
    ->drupalGet('node/' . $poll_nid);
  $elements = $this
    ->xpath('//input[@id="edit-vote"]');
  $this
    ->assertTrue(empty($elements), "Vote button doesn't appear.");

  // Verify status on 'poll' page is 'closed'.
  $this
    ->drupalGet('poll');
  $this
    ->assertText($title, 'Poll appears in poll list.');
  $this
    ->assertText('closed', 'Poll is closed.');

  // Edit the poll node and re-activate.
  $open_edit = array(
    'active' => 1,
  );
  $this
    ->pollUpdate($poll_nid, $title, $open_edit);

  // Vote on the poll.
  $this
    ->drupalLogout();
  $this
    ->drupalLogin($vote_user);
  $vote_edit = array(
    'choice' => '1',
  );
  $this
    ->drupalPost('node/' . $poll_nid, $vote_edit, t('Vote'));
  $this
    ->assertText('Your vote was recorded.', 'Your vote was recorded.');
  $elements = $this
    ->xpath('//input[@value="Cancel your vote"]');
  $this
    ->assertTrue(isset($elements[0]), "'Cancel your vote' button appears.");

  // Edit the poll node and close the poll.
  $this
    ->drupalLogout();
  $this
    ->drupalLogin($content_user);
  $close_edit = array(
    'active' => 0,
  );
  $this
    ->pollUpdate($poll_nid, $title, $close_edit);

  // Verify 'Cancel your vote' button no longer appears.
  $this
    ->drupalGet('node/' . $poll_nid);
  $elements = $this
    ->xpath('//input[@value="Cancel your vote"]');
  $this
    ->assertTrue(empty($elements), "'Cancel your vote' button no longer appears.");
}