Mercurial > hg > cmmr2012-drupal-site
comparison core/tests/Drupal/FunctionalTests/Update/UpdatePathTestBaseTest.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c75dbcec494b |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\FunctionalTests\Update; | |
4 | |
5 use Drupal\Component\Utility\Html; | |
6 use Drupal\Component\Utility\SafeMarkup; | |
7 | |
8 /** | |
9 * Tests the update path base class. | |
10 * | |
11 * @group Update | |
12 */ | |
13 class UpdatePathTestBaseTest extends UpdatePathTestBase { | |
14 | |
15 /** | |
16 * {@inheritdoc} | |
17 */ | |
18 protected static $modules = ['update_test_schema']; | |
19 | |
20 /** | |
21 * {@inheritdoc} | |
22 */ | |
23 protected function setDatabaseDumpFiles() { | |
24 $this->databaseDumpFiles = [ | |
25 __DIR__ . '/../../../../modules/system/tests/fixtures/update/drupal-8.bare.standard.php.gz', | |
26 __DIR__ . '/../../../../modules/system/tests/fixtures/update/drupal-8.update-test-schema-enabled.php', | |
27 ]; | |
28 } | |
29 | |
30 /** | |
31 * Tests that the database was properly loaded. | |
32 */ | |
33 public function testDatabaseLoaded() { | |
34 foreach (['user', 'node', 'system', 'update_test_schema'] as $module) { | |
35 $this->assertEqual(drupal_get_installed_schema_version($module), 8000, SafeMarkup::format('Module @module schema is 8000', ['@module' => $module])); | |
36 } | |
37 | |
38 // Ensure that all {router} entries can be unserialized. If they cannot be | |
39 // unserialized a notice will be thrown by PHP. | |
40 | |
41 $result = \Drupal::database()->query("SELECT name, route from {router}")->fetchAllKeyed(0, 1); | |
42 // For the purpose of fetching the notices and displaying more helpful error | |
43 // messages, let's override the error handler temporarily. | |
44 set_error_handler(function ($severity, $message, $filename, $lineno) { | |
45 throw new \ErrorException($message, 0, $severity, $filename, $lineno); | |
46 }); | |
47 foreach ($result as $route_name => $route) { | |
48 try { | |
49 unserialize($route); | |
50 } | |
51 catch (\Exception $e) { | |
52 $this->fail(sprintf('Error "%s" while unserializing route %s', $e->getMessage(), Html::escape($route_name))); | |
53 } | |
54 } | |
55 restore_error_handler(); | |
56 | |
57 // Before accessing the site we need to run updates first or the site might | |
58 // be broken. | |
59 $this->runUpdates(); | |
60 $this->assertEqual(\Drupal::config('system.site')->get('name'), 'Site-Install'); | |
61 $this->drupalGet('<front>'); | |
62 $this->assertText('Site-Install'); | |
63 | |
64 // Ensure that the database tasks have been run during set up. Neither MySQL | |
65 // nor SQLite make changes that are testable. | |
66 $database = $this->container->get('database'); | |
67 if ($database->driver() == 'pgsql') { | |
68 $this->assertEqual('on', $database->query("SHOW standard_conforming_strings")->fetchField()); | |
69 $this->assertEqual('escape', $database->query("SHOW bytea_output")->fetchField()); | |
70 } | |
71 } | |
72 | |
73 /** | |
74 * Test that updates are properly run. | |
75 */ | |
76 public function testUpdateHookN() { | |
77 // Increment the schema version. | |
78 \Drupal::state()->set('update_test_schema_version', 8001); | |
79 $this->runUpdates(); | |
80 | |
81 $select = \Drupal::database()->select('watchdog'); | |
82 $select->orderBy('wid', 'DESC'); | |
83 $select->range(0, 5); | |
84 $select->fields('watchdog', ['message']); | |
85 | |
86 $container_cannot_be_saved_messages = array_filter(iterator_to_array($select->execute()), function ($row) { | |
87 return strpos($row->message, 'Container cannot be saved to cache.') !== FALSE; | |
88 }); | |
89 $this->assertEqual([], $container_cannot_be_saved_messages); | |
90 | |
91 // Ensure schema has changed. | |
92 $this->assertEqual(drupal_get_installed_schema_version('update_test_schema', TRUE), 8001); | |
93 // Ensure the index was added for column a. | |
94 $this->assertTrue(db_index_exists('update_test_schema_table', 'test'), 'Version 8001 of the update_test_schema module is installed.'); | |
95 } | |
96 | |
97 } |