123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- <?php
- /*
- * @file
- * Contains tests for Translation management
- */
- /**
- * Upgrade tests.
- */
- class TMGMTUpgradeAlpha1TestCase extends DrupalWebTestCase {
- protected $profile = 'testing';
- static function getInfo() {
- return array(
- 'name' => t('Upgrade tests Alpha1'),
- 'description' => t('Tests the upgrade path from 7.x-1.0-alpha1'),
- 'group' => t('Translation Management'),
- );
- }
- function setUp() {
- // Enable all dependencies.
- parent::setUp(array('entity', 'views', 'translation', 'locale'));
- // Create the tmgmt tables and fill them.
- module_load_include('inc', 'tmgmt', 'tests/tmgmt_alpha1_dump.sql');
- // @todo: Figure out why this is necessary.
- $enabled_modules = db_query("SELECT name FROM {system} where status = 1 and type = 'module'")->fetchCol();
- foreach ($enabled_modules as $enabled_module) {
- module_load_install($enabled_module);
- // Set the schema version to the number of the last update provided
- // by the module.
- $versions = drupal_get_schema_versions($enabled_module);
- $version = $versions ? max($versions) : SCHEMA_INSTALLED;
- db_update('system')
- ->condition('name', $enabled_module)
- ->fields(array('schema_version' => $version))
- ->execute();
- }
- // Set schema version to 0 and then install the tmgmt modules, to simulate
- // an enabling.
- db_update('system')
- ->condition('name', array('tmgmt', 'tmgmt_ui', 'tmgmt_field', 'tmgmt_node', 'tmgmt_test', 'tmgmt_node_ui'))
- ->fields(array(
- 'schema_version' => 0,
- ))
- ->execute();
- module_enable(array('tmgmt', 'tmgmt_ui', 'tmgmt_field', 'tmgmt_node', 'tmgmt_test', 'tmgmt_node_ui'));
- // Log in as a user that can run update.php
- $admin = $this->drupalCreateUser(array('administer software updates'));
- $this->drupalLogin($admin);
- $this->performUpgrade();
- }
- /**
- * Verifies that the data has been migrated properly
- */
- function testUpgradePath() {
- // Log in as a user with enough permissions.
- $translator = $this->drupalCreateUser(array('administer tmgmt'));
- $this->drupalLogin($translator);
- // Go to a job and check the review form.
- $this->drupalGet('admin/tmgmt/jobs/1');
- // Make sure the #status values have been set accordingly.
- $this->assertRaw(t('Accepted: @accepted, reviewed: @reviewed, translated: @translated, pending: @pending.', array('@accepted' => 0, '@reviewed' => 0, '@translated' => 2, '@pending' => 0)));
- // Extract the word count field and make sure it's correct.
- $word_count = $this->xpath('//td[contains(@class, :class)]', array(':class' => 'views-field-word-count-1'));
- $this->assertEqual(6, trim((string)reset($word_count)));
- $this->clickLink(t('review'));
- // Needs review icon.
- $this->assertRaw('tmgmt-ui-icon-yellow tmgmt-ui-state-translated');
- // Translated values.
- $this->assertRaw('de_Test content');
- $this->assertRaw('de_This is the body.');
- // Reject button.
- $this->assertRaw('✗');
- // Check that accepted count has been updated correctly.
- $this->drupalGet('admin/tmgmt/jobs/2');
- // Make sure the #status values have been set accordingly.
- $this->assertRaw(t('Accepted: @accepted, reviewed: @reviewed, translated: @translated, pending: @pending.', array('@accepted' => 2, '@reviewed' => 0, '@translated' => 0, '@pending' => 0)));
- }
- /**
- * Perform the upgrade.
- *
- * Copied and adapted from UpgradePathTestCase::performUpgrade().
- *
- * @param $register_errors
- * Register the errors during the upgrade process as failures.
- * @return
- * TRUE if the upgrade succeeded, FALSE otherwise.
- */
- protected function performUpgrade($register_errors = TRUE) {
- $update_url = $GLOBALS['base_url'] . '/update.php';
- // Load the first update screen.
- $this->drupalGet($update_url, array('external' => TRUE));
- if (!$this->assertResponse(200)) {
- return FALSE;
- }
- // Continue.
- $this->drupalPost(NULL, array(), t('Continue'));
- if (!$this->assertResponse(200)) {
- return FALSE;
- }
- // The test should pass if there are no pending updates.
- $content = $this->drupalGetContent();
- if (strpos($content, t('No pending updates.')) !== FALSE) {
- $this->pass(t('No pending updates and therefore no upgrade process to test.'));
- $this->pendingUpdates = FALSE;
- return TRUE;
- }
- // Go!
- $this->drupalPost(NULL, array(), t('Apply pending updates'));
- if (!$this->assertResponse(200)) {
- return FALSE;
- }
- // Check for errors during the update process.
- foreach ($this->xpath('//li[@class=:class]', array(':class' => 'failure')) as $element) {
- $message = strip_tags($element->asXML());
- $this->upgradeErrors[] = $message;
- if ($register_errors) {
- $this->fail($message);
- }
- }
- if (!empty($this->upgradeErrors)) {
- // Upgrade failed, the installation might be in an inconsistent state,
- // don't process.
- return FALSE;
- }
- // Check if there still are pending updates.
- $this->drupalGet($update_url, array('external' => TRUE));
- $this->drupalPost(NULL, array(), t('Continue'));
- if (!$this->assertText(t('No pending updates.'), t('No pending updates at the end of the update process.'))) {
- return FALSE;
- }
- // Clear caches.
- $this->checkPermissions(array(), TRUE);
- }
- }
|