You are here

function PollTranslateTestCase::testPollTranslate in Drupal 7

Tests poll creation and translation.

Checks that the choice names get copied from the original poll and that the vote count values are set to 0.

File

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

Class

PollTranslateTestCase
Tests poll translation logic.

Code

function testPollTranslate() {
  $admin_user = $this
    ->drupalCreateUser(array(
    'administer content types',
    'administer languages',
    'edit any poll content',
    'create poll content',
    'administer nodes',
    'translate content',
  ));

  // Set up a poll with two choices.
  $title = $this
    ->randomName();
  $choices = array(
    $this
      ->randomName(),
    $this
      ->randomName(),
  );
  $poll_nid = $this
    ->pollCreate($title, $choices, FALSE);
  $this
    ->assertTrue($poll_nid, 'Poll for translation logic test created.');
  $this
    ->drupalLogout();
  $this
    ->drupalLogin($admin_user);

  // Enable a second language.
  $this
    ->drupalGet('admin/config/regional/language');
  $edit = array();
  $edit['langcode'] = 'nl';
  $this
    ->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
  $this
    ->assertRaw(t('The language %language has been created and can now be used.', array(
    '%language' => 'Dutch',
  )), 'Language Dutch has been created.');

  // Set "Poll" content type to use multilingual support with translation.
  $this
    ->drupalGet('admin/structure/types/manage/poll');
  $edit = array();
  $edit['language_content_type'] = 2;
  $this
    ->drupalPost('admin/structure/types/manage/poll', $edit, t('Save content type'));
  $this
    ->assertRaw(t('The content type %type has been updated.', array(
    '%type' => 'Poll',
  )), 'Poll content type has been updated.');

  // Edit poll.
  $this
    ->drupalGet("node/{$poll_nid}/edit");
  $edit = array();

  // Set the poll's first choice count to 200.
  $edit['choice[chid:1][chvotes]'] = 200;

  // Set the language to Dutch.
  $edit['language'] = 'nl';
  $this
    ->drupalPost(NULL, $edit, t('Save'));

  // Translate the Dutch poll.
  $this
    ->drupalGet('node/add/poll', array(
    'query' => array(
      'translation' => $poll_nid,
      'target' => 'en',
    ),
  ));
  $dutch_poll = node_load($poll_nid);

  // Check that the vote count values didn't get copied from the Dutch poll
  // and are set to 0.
  $this
    ->assertFieldByName('choice[chid:1][chvotes]', '0', 'Found choice with vote count 0');
  $this
    ->assertFieldByName('choice[chid:2][chvotes]', '0', 'Found choice with vote count 0');

  // Check that the choice names got copied from the Dutch poll.
  $this
    ->assertFieldByName('choice[chid:1][chtext]', $dutch_poll->choice[1]['chtext'], format_string('Found choice with text @text', array(
    '@text' => $dutch_poll->choice[1]['chtext'],
  )));
  $this
    ->assertFieldByName('choice[chid:2][chtext]', $dutch_poll->choice[2]['chtext'], format_string('Found choice with text @text', array(
    '@text' => $dutch_poll->choice[2]['chtext'],
  )));
}