function UpdatePathTestBaseTest::testDatabaseLoaded
Same name in other branches
- 9 core/tests/Drupal/FunctionalTests/Update/UpdatePathTestBaseTest.php \Drupal\FunctionalTests\Update\UpdatePathTestBaseTest::testDatabaseLoaded()
Tests that the database was properly loaded.
File
-
core/
tests/ Drupal/ FunctionalTests/ Update/ UpdatePathTestBaseTest.php, line 34
Class
- UpdatePathTestBaseTest
- Tests the update path base class.
Namespace
Drupal\FunctionalTests\UpdateCode
public function testDatabaseLoaded() {
// Set a value in the cache to prove caches are cleared.
\Drupal::service('cache.default')->set(__CLASS__, 'Test');
foreach ([
'user' => 8100,
'node' => 8700,
'system' => 8805,
'update_test_schema' => 8000,
] as $module => $schema) {
$this->assertEqual(drupal_get_installed_schema_version($module), $schema, new FormattableMarkup('Module @module schema is @schema', [
'@module' => $module,
'@schema' => $schema,
]));
}
// Ensure that all {router} entries can be unserialized. If they cannot be
// unserialized a notice will be thrown by PHP.
$result = \Drupal::database()->query("SELECT name, route from {router}")
->fetchAllKeyed(0, 1);
// For the purpose of fetching the notices and displaying more helpful error
// messages, let's override the error handler temporarily.
set_error_handler(function ($severity, $message, $filename, $lineno) {
throw new \ErrorException($message, 0, $severity, $filename, $lineno);
});
foreach ($result as $route_name => $route) {
try {
unserialize($route);
} catch (\Exception $e) {
$this->fail(sprintf('Error "%s" while unserializing route %s', $e->getMessage(), Html::escape($route_name)));
}
}
restore_error_handler();
// Before accessing the site we need to run updates first or the site might
// be broken.
$this->runUpdates();
$this->assertEquals('standard', \Drupal::config('core.extension')->get('profile'));
$this->assertEqual(\Drupal::config('system.site')->get('name'), 'Site-Install');
$this->drupalGet('<front>');
$this->assertText('Site-Install');
// Ensure that the database tasks have been run during set up. Neither MySQL
// nor SQLite make changes that are testable.
$database = $this->container
->get('database');
if ($database->driver() == 'pgsql') {
$this->assertEqual('on', $database->query("SHOW standard_conforming_strings")
->fetchField());
$this->assertEqual('escape', $database->query("SHOW bytea_output")
->fetchField());
}
// Ensure the test runners cache has been cleared.
$this->assertFalse(\Drupal::service('cache.default')->get(__CLASS__));
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.