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); } }