You are here

public function TMGMTLocaleSourceUiTestCase::testOverview in Translation Management Tool 7

File

sources/locale/tmgmt_locale.ui.test, line 29

Class

TMGMTLocaleSourceUiTestCase
Basic Locale Source tests.

Code

public function testOverview() {

  // Load PO file to create a locale structure in the database.
  _locale_import_po($this->pofile, $this->langcode, LOCALE_IMPORT_OVERWRITE, $this->context);
  $this
    ->loginAsTranslator();
  $this
    ->drupalGet('admin/tmgmt/sources/locale_default');
  $this
    ->assertText('Hello World');
  $this
    ->assertText('Example');
  $rows = $this
    ->xpath('//tbody/tr');
  foreach ($rows as $row) {
    if ($row->td[1] == 'Hello World') {
      $this
        ->assertEqual((string) $row->td[3]->div['title'], t('Translation up to date'));
      $this
        ->assertEqual((string) $row->td[4]->div['title'], t('Not translated'));
    }
  }

  // Filter on the label.
  $edit = array(
    'search[label]' => 'Hello',
  );
  $this
    ->drupalPost(NULL, $edit, t('Search'));
  $this
    ->assertText('Hello World');
  $this
    ->assertNoText('Example');
  $locale_object = db_query('SELECT * FROM {locales_source} WHERE source = :source LIMIT 1', array(
    ':source' => 'Hello World',
  ))
    ->fetchObject();

  // First add source to the cart to test its functionality.
  $edit = array(
    'items[' . $locale_object->lid . ']' => TRUE,
  );
  $this
    ->drupalPost(NULL, $edit, t('Add to cart'));
  $this
    ->assertRaw(t('@count content source was added into the <a href="@url">cart</a>.', array(
    '@count' => 1,
    '@url' => url('admin/tmgmt/cart'),
  )));
  $edit['target_language[]'] = array(
    'gsw-berne',
  );
  $this
    ->drupalPost('admin/tmgmt/cart', $edit, t('Request translation'));

  // Assert that the job item is displayed.
  $this
    ->assertText('Hello World');
  $this
    ->assertText(t('Locale'));
  $this
    ->assertText('2');
  $this
    ->drupalPost(NULL, array(
    'target_language' => 'gsw-berne',
  ), t('Submit to translator'));

  // Test for the translation flag title.
  $this
    ->drupalGet('admin/tmgmt/sources/locale_default');
  $this
    ->assertRaw(t('Active job item: Needs review'));

  // Review and accept the job item.
  $job_items = tmgmt_job_item_load_latest('locale', 'default', $locale_object->lid, 'en');
  $this
    ->drupalGet('admin/tmgmt/items/' . $job_items['gsw-berne']->tjiid);
  $this
    ->assertRaw('gsw-berne_Hello World');
  $this
    ->drupalPost(NULL, array(), t('Save as completed'));
  $this
    ->drupalGet('admin/tmgmt/sources/locale_default');
  $this
    ->assertNoRaw(t('Active job item: Needs review'));
  $rows = $this
    ->xpath('//tbody/tr');
  foreach ($rows as $row) {
    if ($row->td[1] == 'Hello World') {
      $this
        ->assertEqual((string) $row->td[3]->div['title'], t('Translation up to date'));
      $this
        ->assertEqual((string) $row->td[4]->div['title'], t('Translation up to date'));
    }
  }

  // Test the missing translation filter.
  $this
    ->drupalGet('admin/tmgmt/sources/locale_default');

  // Check that the source language (en) has been removed from the target language
  // select box.
  $elements = $this
    ->xpath('//select[@name=:name]//option[@value=:option]', array(
    ':name' => 'search[target_language]',
    ':option' => 'en',
  ));
  $this
    ->assertTrue(empty($elements));

  // Filter on the "Not translated to".
  $edit = array(
    'search[missing_target_language]' => 'gsw-berne',
  );
  $this
    ->drupalPost(NULL, $edit, t('Search'));

  // Hello World is translated to "gsw-berne" therefore it must not show up in the
  // list.
  $this
    ->assertNoText('Hello World');
}