lingotek.setup.test in Lingotek Translation 7.5
Same filename and directory in other branches
Lingotek Setup Test Case
File
tests/lingotek.setup.testView source
<?php
/**
* @file
* Lingotek Setup Test Case
*/
class LingotekTestCase extends DrupalWebTestCase {
public $admin_user;
public static function getInfo() {
return array(
'name' => 'Lingotek Basic',
'description' => 'Ensure that Lingotek functions properly.',
'group' => 'Lingotek',
);
}
public function setUp() {
parent::setUp('lingotek');
$this
->resetAll();
$perm[] = 'administer lingotek';
$perm[] = 'manage projects';
$perm[] = 'translation';
$perm[] = 'use lingotek developer tools';
$perm[] = 'create article content';
$perm[] = 'edit own article content';
$perm[] = 'delete own article content';
$this->admin_user = $this
->drupalCreateUser($perm);
}
public function testEnterpriseSetup() {
$this
->drupalGet('admin/config/lingotek/setup');
$this
->assertResponse(403, 'Only allow access to users with permissions');
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/config/lingotek/setup');
$this
->assertUrl('admin/config/lingotek/new-account', array(), 'Redirect to first step of start page');
// 1: Account Settings.
$settings = array(
'lingotek_lid' => 'bisle',
'lingotek_pid' => 'lingotek',
);
debug($settings);
$this
->drupalPost('admin/config/lingotek/account-settings', $settings, 'Next');
$this
->assertText('Your account settings have been saved.', '<b>Step 1: Account Settings - Abililty to login</b>');
// 2: Community.
$settings = array(
'lingotek_site_community' => 'ABCDEFGH',
);
debug($settings);
$this
->drupalPost(NULL, $settings, 'Next');
$this
->assertText('Your site has been securely connected to your community (ABCDEFGH).', 'Step 2: Community Selected');
// 3: TM Vault.
$settings = array(
'project_new_or_existing' => 1,
'project_new' => 'Automated Test Project',
'vault_existing_or_new' => 1,
'vault_new' => 'Automated Test Vault',
);
debug($settings);
$this
->drupalPost(NULL, $settings, 'Next');
$this
->assertText('Your Lingotek project, workflow, and vault selections have been setup and saved.', 'Step 3: Project, Workflow, and TM Vault');
// 4: Default Language Switcher.
$settings = array(
'region' => 'Sidebar first',
);
$this
->drupalPost(NULL, array(), 'Next');
$this
->assertText('The default language switcher is now enabled.', 'Step 4: Default Language Switcher');
// 5: Content.
$this
->drupalPost(NULL, array(), 'Next');
$this
->assertText('Your content types have been updated.', 'Step 5: Content');
// 6: Comments.
$this
->drupalPost(NULL, array(), 'Next');
$this
->assertText('Your content types have been updated.', 'Step 6: Content');
// 7: Config + Bulk Operations.
$this
->drupalPost(NULL, array(), 'Finish');
$this
->assertText('The configuration options have been saved.', 'Step 7: Config + Bulk Operations');
// Unit test for add_target_language to succeed.
$response = lingotek_add_target_language('en_US');
$this
->assertTrue($response, 'add_target_language("en_US") succeeds');
$response = lingotek_add_target_language('fr_FR');
$this
->assertTrue($response, 'add_target_language("fr_FR") succeeds');
// Unit test for add_target_language to fail
$oauth = variable_get('lingotek_oauth_consumer_id');
debug($oauth);
variable_set('lingotek_oauth_consumer_id', $oauth . '---');
debug(variable_get('lingotek_oauth_consumer_id '));
$response = lingotek_add_target_language('zh_TW');
$this
->assertTrue($response, 'add_target_language("zh_TW") fails');
variable_set('lingotek_oauth_consumer_id', $oauth);
$this
->drupalGet('admin/settings/lingotek');
$enabled_languages = db_select('languages', 'l')
->fields('l', array(
'name',
))
->condition('l.lingotek_enabled', 1)
->execute()
->fetchAllAssoc('name');
debug($enabled_languages);
$this
->assertEqual(array_key_exists('English', $enabled_languages), 1, 'English was Lingotek enabled');
$this
->assertEqual(array_key_exists('French', $enabled_languages), 1, 'French was Lingotek enabled');
$this
->assertEqual(array_key_exists('Chinese', $enabled_languages), 0, 'Chinese was not Lingotek enabled');
// Add a node with some content.
$settings = array(
'title_field[und][0][value]' => 'Hello',
'body[und][0][value]' => 'World',
);
$this
->drupalPost('node/add/article', $settings, 'Save');
$this
->assertText('Article Hello has been created.', 'Node created successfully.');
$this
->assertText('Hello sent to Lingotek successfully.', 'Node uploaded to Lingotek.');
// Store the node id.
$url_parts = explode('/', $this
->getUrl());
$nid = array_pop($url_parts);
$n = node_load($nid);
debug($nid);
// We'll upload the content to TMS, update the page, then download the translated content.
$this
->drupalGet('admin/settings/lingotek/manage/upload-edited/node');
// This is usually long enough to wait before the translation is ready but it may take longer occasionally.
sleep(15);
$this
->drupalGet('admin/settings/lingotek/manage/update/node');
$this
->assertText('Target translations progress checked and updated', 'Uploaded and updated progress of translations.');
$this
->drupalGet('admin/settings/lingotek/manage/download-ready/node');
$this
->assertText('downloaded.', 'Downloaded translations completed. May fail because translations were not ready yet.');
// Go to the French node we created and check the translation
$this
->drupalGet('fr/node/' . $n->nid);
$this
->assertText('Monde', 'Node was properly translated to French.');
// Check if you can download translations.
$this
->drupalGet('node/' . $n->nid . '/lingotek_pm');
$this
->assertNoText('Upload');
$this
->assertText('Download Translations', 'User has the ability to download translations');
debug('Finished setup');
}
public function testProSetup() {
debug('Beginning Pro Setup');
$this
->drupalGet('admin/config/lingotek/setup');
$this
->assertResponse(403, 'Only allow access to users with permissions');
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/config/lingotek/setup');
$this
->assertUrl('admin/config/lingotek/new-account', array(), 'Redirect to first step of start page');
//1: Account Settings
$settings = array(
'first_name' => 'Automated Tester',
'last_name' => 'Code Tester',
'email' => 'test@example.com',
);
debug($settings);
$this
->drupalPost(NULL, $settings, 'Next');
$this
->assertText('Your new Lingotek account has been setup.', '<b>Step 1: Account Settings - Abililty to create account</b>');
//2: Enable Language Switcher
$this
->drupalPost(NULL, array(), 'Next');
$this
->assertText('The default language switcher is now enabled.', 'Step 2: Enable Language Switcher');
//3: Content Types
$this
->drupalPost(NULL, array(), 'Next');
$this
->assertText('Your content types have been updated.', 'Step 3: Enable Content Types');
//4: Comment Translation
$this
->drupalPost(NULL, array(), 'Next');
$this
->assertText('Your content types have been updated.', 'Step 4: Enable Comment Translation');
//5: Additional Translation
$this
->drupalPost(NULL, array(), 'Finish');
$this
->assertText('The configuration options have been saved.', 'Step 5: Enable Additional Translation');
}
function getFirstOption($element) {
// debug((string)$element[0]->option[1]);
$str = '';
$option = $element[0]->option[1];
if (!empty($option)) {
$attributes = $option
->attributes();
$str = (string) $attributes['value'];
}
return $str;
}
}
Classes
Name | Description |
---|---|
LingotekTestCase | @file Lingotek Setup Test Case |