220 lines
5.9 KiB
Plaintext

<?php
/*
* @file
* Contains tests for Translation management
*/
/**
* Base class for tests.
*/
class TMGMTBaseTestCase extends DrupalWebTestCase {
protected $profile = 'testing';
/**
* A default translator using the test translator.
*
* @var TMGMTTranslator
*/
protected $default_translator;
/**
* List of permissions used by loginAsAdmin().
*
* @var array
*/
protected $admin_permissions = array();
/**
* Drupal user object created by loginAsAdmin().
*
* @var object
*/
protected $admin_user = NULL;
/**
* List of permissions used by loginAsTranslator().
*
* @var array
*/
protected $translator_permissions = array();
/**
* Drupal user object created by loginAsTranslator().
*
* @var object
*/
protected $translator_user = NULL;
/**
* Overrides DrupalWebTestCase::setUp()
*/
function setUp() {
$modules = func_get_args();
if (isset($modules[0]) && is_array($modules[0])) {
$modules = $modules[0];
}
$modules = array_merge(array('entity', 'tmgmt', 'tmgmt_test'), $modules);
parent::setUp($modules);
$this->default_translator = tmgmt_translator_load('test_translator');
// Load default admin permissions.
$this->admin_permissions = array(
'administer languages',
'access administration pages',
'administer content types',
'administer tmgmt',
);
// Load default translator user permissions.
$this->translator_permissions = array(
'create translation jobs',
'submit translation jobs',
'accept translation jobs',
);
}
/**
* Will create a user with admin permissions and log it in.
*
* @param array $additional_permissions
* Additional permissions that will be granted to admin user.
* @param boolean $reset_permissions
* Flag to determine if default admin permissions will be replaced by
* $additional_permissions.
*
* @return object
* Newly created and logged in user object.
*/
function loginAsAdmin($additional_permissions = array(), $reset_permissions = FALSE) {
$permissions = $this->admin_permissions;
if ($reset_permissions) {
$permissions = $additional_permissions;
}
elseif (!empty($additional_permissions)) {
$permissions = array_merge($permissions, $additional_permissions);
}
$this->admin_user = $this->drupalCreateUser($permissions);
$this->drupalLogin($this->admin_user);
return $this->admin_user;
}
/**
* Will create a user with translator permissions and log it in.
*
* @param array $additional_permissions
* Additional permissions that will be granted to admin user.
* @param boolean $reset_permissions
* Flag to determine if default admin permissions will be replaced by
* $additional_permissions.
*
* @return object
* Newly created and logged in user object.
*/
function loginAsTranslator($additional_permissions = array(), $reset_permissions = FALSE) {
$permissions = $this->translator_permissions;
if ($reset_permissions) {
$permissions = $additional_permissions;
}
elseif (!empty($additional_permissions)) {
$permissions = array_merge($permissions, $additional_permissions);
}
$this->translator_user = $this->drupalCreateUser($permissions);
$this->drupalLogin($this->translator_user);
return $this->translator_user;
}
/**
* Creates, saves and returns a translator.
*
* @return TMGMTTranslator
*/
function createTranslator() {
$translator = new TMGMTTranslator();
$translator->name = strtolower($this->randomName());
$translator->label = $this->randomName();
$translator->plugin = 'test_translator';
$translator->settings = array(
'key' => $this->randomName(),
'another_key' => $this->randomName(),
);
$this->assertEqual(SAVED_NEW, $translator->save());
// Assert that the translator was assigned a tid.
$this->assertTrue($translator->tid > 0);
return $translator;
}
/**
* Creates, saves and returns a translation job.
*
* @return TMGMTJob
*/
function createJob($source = 'en', $target = 'de', $uid = 1) {
$job = tmgmt_job_create($source, $target, $uid);
$this->assertEqual(SAVED_NEW, $job->save());
// Assert that the translator was assigned a tid.
$this->assertTrue($job->tjid > 0);
return $job;
}
/**
* Sets the proper environment.
*
* Currently just adds a new language.
*
* @param string $langcode
* The language code.
*/
function setEnvironment($langcode) {
// Add the language.
locale_add_language($langcode);
}
/**
* Asserts job item language codes.
*
* @param TMGMTJobItem $job_item
* Job item to check.
* @param string $expected_source_lang
* Expected source language.
* @param array $actual_lang_codes
* Expected existing language codes (translations).
*/
function assertJobItemLangCodes(TMGMTJobItem $job_item, $expected_source_lang, array $actual_lang_codes) {
$this->assertEqual($job_item->getSourceLangCode(), $expected_source_lang);
$existing = $job_item->getExistingLangCodes();
sort($existing);
sort($actual_lang_codes);
$this->assertEqual($existing, $actual_lang_codes);
}
/**
* Adds languages as admin user and switches to a translator user.
*/
protected function createLanguagesLoginTranslator($permissions = NULL) {
// Login as admin to be able to set environment variables.
$this->loginAsAdmin();
$this->setEnvironment('de');
$this->setEnvironment('es');
$this->setEnvironment('el');
$base_permissions = array(
'access administration pages',
'create translation jobs',
'submit translation jobs',
);
$permissions = $permissions ? array_merge($permissions, $base_permissions) : $base_permissions;
// Login as translator only with limited permissions to run these tests.
$this->loginAsTranslator($permissions, TRUE);
}
}