function BasicMinimalUpdatePath::testBasicMinimalUpdate
Tests a successful point release update.
File
-
modules/
simpletest/ tests/ upgrade/ upgrade.test, line 537
Class
- BasicMinimalUpdatePath
- Performs point release update tests on a bare database.
Code
public function testBasicMinimalUpdate() {
$this->assertTrue($this->performUpgrade(), 'The upgrade was completed successfully.');
// Hit the frontpage.
$this->drupalGet('');
$this->assertResponse(200);
// Verify that we are still logged in.
$this->drupalGet('user');
$this->clickLink(t('Edit'));
$this->assertEqual($this->getUrl(), url('user/1/edit', array(
'absolute' => TRUE,
)), 'We are still logged in as admin at the end of the upgrade.');
// Logout and verify that we can login back in with our initial password.
$this->drupalLogout();
$this->drupalLogin((object) array(
'uid' => 1,
'name' => 'admin',
'pass_raw' => 'admin',
));
// The previous login should've triggered a password rehash, so login one
// more time to make sure the new hash is readable.
$this->drupalLogout();
$this->drupalLogin((object) array(
'uid' => 1,
'name' => 'admin',
'pass_raw' => 'admin',
));
// Test that the site name is correctly displayed.
$this->assertText('Drupal', 'The site name is correctly displayed.');
// Verify that the main admin sections are available.
$this->drupalGet('admin');
$this->assertText(t('Content'));
$this->assertText(t('Appearance'));
$this->assertText(t('People'));
$this->assertText(t('Configuration'));
$this->assertText(t('Reports'));
$this->assertText(t('Structure'));
$this->assertText(t('Modules'));
// Confirm that no {menu_links} entry exists for user/autocomplete.
$result = db_query('SELECT COUNT(*) FROM {menu_links} WHERE link_path = :user_autocomplete', array(
':user_autocomplete' => 'user/autocomplete',
))->fetchField();
$this->assertFalse($result, 'No {menu_links} entry exists for user/autocomplete');
// Confirm that a date format that just differs in the case can be added.
$admin_date_format = 'j M y';
$edit = array(
'date_format' => $admin_date_format,
);
$this->drupalPost('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
// Add a new date format which just differs in the case.
$admin_date_format_uppercase = 'j M Y';
$edit = array(
'date_format' => $admin_date_format_uppercase,
);
$this->drupalPost('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
$this->assertText(t('Custom date format added.'));
// Verify that the unique key on {date_formats}.format still exists.
try {
// The PostgreSQL driver appends suffixes to keys/indexes according to
// their types. A unique key is a key (not an index), so it has a _key
// suffix. It is not possible to call db_index_exists() as this function
// will check the index name with _idx suffix, so it will never succeed on
// PostgreSQL. An attempt to create a new unique key when it exists should
// fail and the thrown exception will confirm that the unique key exists.
// MySQL and SQLite are not affected by this change, as they do not append
// suffixes to keys/indexes names.
db_add_unique_key('date_formats', 'formats', array(
'formats',
));
// This is executed if no exception has been thrown and the unique key
// did not already exist.
$this->fail('Unique key on {date_formats} does not exist');
} catch (DatabaseSchemaObjectExistsException $e) {
// Exception confirms that the unique key already existed.
$this->pass('Unique key on {date_formats} exists');
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.