summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathaniel Catchpole2015-09-01 07:50:04 (GMT)
committerNathaniel Catchpole2015-09-01 07:50:04 (GMT)
commitbe189a88fb1fc6e9c3cad5beeb83678047db4ea2 (patch)
tree0d3de771d3afddf118433f5d76399194671fc597
parent82db4839fb874ec5d0d66e3e02cd7f65831d0776 (diff)
Issue #2554151 by stefan.r, Gábor Hojtsy, plach, dawehner, csg: Test content/configuration in update database dump
-rw-r--r--core/modules/system/src/Tests/Update/UpdatePathTestBase.php23
-rw-r--r--core/modules/system/src/Tests/Update/UpdatePathTestBaseFilledTest.php402
2 files changed, 417 insertions, 8 deletions
diff --git a/core/modules/system/src/Tests/Update/UpdatePathTestBase.php b/core/modules/system/src/Tests/Update/UpdatePathTestBase.php
index fc8d4c3..fbb6dee 100644
--- a/core/modules/system/src/Tests/Update/UpdatePathTestBase.php
+++ b/core/modules/system/src/Tests/Update/UpdatePathTestBase.php
@@ -186,14 +186,7 @@ abstract class UpdatePathTestBase extends WebTestBase {
// not safe to do here, because the database has not been updated yet.
$this->container = \Drupal::getContainer();
- // Replace User 1 with the user created here.
- // @todo: do this without saving the user account.
- /** @var \Drupal\user\UserInterface $account */
- $account = User::load(1);
- $account->setPassword($this->rootUser->pass_raw);
- $account->setEmail($this->rootUser->getEmail());
- $account->setUsername($this->rootUser->getUsername());
- $account->save();
+ $this->replaceUser1();
}
/**
@@ -266,4 +259,18 @@ abstract class UpdatePathTestBase extends WebTestBase {
$this->assertFalse(\Drupal::service('entity.definition_update_manager')->needsUpdates(), 'After all updates ran, entity schema is up to date.');
}
+ /**
+ * Replace User 1 with the user created here.
+ */
+ protected function replaceUser1() {
+ /** @var \Drupal\user\UserInterface $account */
+ // @todo: Saving the account before the update is problematic.
+ // https://www.drupal.org/node/2560237
+ $account = User::load(1);
+ $account->setPassword($this->rootUser->pass_raw);
+ $account->setEmail($this->rootUser->getEmail());
+ $account->setUsername($this->rootUser->getUsername());
+ $account->save();
+ }
+
}
diff --git a/core/modules/system/src/Tests/Update/UpdatePathTestBaseFilledTest.php b/core/modules/system/src/Tests/Update/UpdatePathTestBaseFilledTest.php
index 623a400..9c175b4 100644
--- a/core/modules/system/src/Tests/Update/UpdatePathTestBaseFilledTest.php
+++ b/core/modules/system/src/Tests/Update/UpdatePathTestBaseFilledTest.php
@@ -7,6 +7,9 @@
namespace Drupal\system\Tests\Update;
+use Drupal\node\Entity\Node;
+use Drupal\user\Entity\User;
+
/**
* Runs UpdatePathTestBaseTest with a dump filled with content.
*
@@ -22,4 +25,403 @@ class UpdatePathTestBaseFilledTest extends UpdatePathTestBaseTest {
$this->databaseDumpFiles[0] = __DIR__ . '/../../../tests/fixtures/update/drupal-8.filled.standard.php.gz';
}
+ /**
+ * Tests that the content and configuration were properly updated.
+ */
+ public function testUpdatedSite() {
+ $this->runUpdates();
+
+ $spanish = \Drupal::languageManager()->getLanguage('es');
+
+ $expected_node_data = array(
+ [1, 'article', 'en', 'Test Article - New title'],
+ [2, 'book', 'en', 'Book page'],
+ [3, 'forum', 'en', 'Forum topic'],
+ [4, 'page', 'en', 'Test page'],
+ [8, 'test_content_type', 'en', 'Test title'],
+ );
+ foreach ($expected_node_data as $node_data) {
+ $id = $node_data[0];
+ $type = $node_data[1];
+ $langcode = $node_data[2];
+ $title = $node_data[3];
+
+ // Make sure our English nodes still exist.
+ $node = Node::load($id);
+ $this->assertEqual($node->language()->getId(), $langcode);
+ $this->assertEqual($node->getType(), $type);
+ $this->assertEqual($node->getTitle(), $title);
+ // Assert that nodes are all published.
+ $this->assertTrue($node->isPublished());
+ $this->drupalGet('node/' . $id);
+ $this->assertText($title);
+ }
+
+ // Make sure the translated node still exists.
+ $translation = Node::load(8)->getTranslation('es');
+ $this->assertEqual('Test title Spanish', $translation->getTitle());
+
+ // Make sure our alias still works.
+ $this->drupalGet('test-article');
+ $this->assertText('Test Article - New title');
+ $this->assertText('Body');
+ $this->assertText('Tags');
+
+ // Make sure a translated page exists.
+ $this->drupalGet('node/8', ['language' => $spanish]);
+ // Check for text of two comments.
+ $this->assertText('Hola');
+ $this->assertText('Hello');
+ // The user entity reference field is access restricted.
+ $this->assertNoText('Test 12');
+ // Make sure all other field labels are there.
+ for ($i = 1; $i <= 23; $i++) {
+ if ($i != 12) {
+ $this->assertText('Test ' . $i);
+ }
+ }
+
+ // Make sure the translated slogan appears.
+ $this->assertText('drupal Spanish');
+
+ // Make sure the custom block appears.
+ $this->drupalGet('<front>');
+ // Block title.
+ $this->assertText('Another block');
+ // Block body.
+ $this->assertText('Hello');
+
+ // Log in as user 1.
+ $account = User::load(1);
+ $account->pass_raw = 'drupal';
+ $this->drupalLogin($account);
+
+ // Make sure we can see the access-restricted entity reference field
+ // now that we're logged in.
+ $this->drupalGet('node/8', ['language' => $spanish]);
+ $this->assertText('Test 12');
+ $this->assertLink('drupal');
+
+ // Make sure the content for node 8 is still in the edit form.
+ $this->drupalGet('node/8/edit');
+ $this->assertText('Test title');
+ $this->assertText('Test body');
+ $this->assertFieldChecked('edit-field-test-1-value');
+ $this->assertRaw('2015-08-16');
+ $this->assertRaw('test@example.com');
+ $this->assertRaw('drupal.org');
+ $this->assertText('0.1');
+ $this->assertText('0.2');
+ $this->assertRaw('+31612345678');
+ $this->assertRaw('+31612345679');
+ $this->assertText('Test Article - New title');
+ $this->assertText('test.txt');
+ $this->assertText('druplicon.small');
+ $this->assertRaw('General discussion');
+ $this->assertText('Test Article - New title');
+ $this->assertText('Test 1');
+ $this->assertRaw('0.01');
+ $this->drupalPostForm('node/8/edit', [], 'Save and keep published (this translation)');
+ $this->assertResponse(200);
+ $this->drupalGet('node/8/edit', ['language' => $spanish]);
+ $this->assertText('Test title Spanish');
+ $this->assertText('Test body Spanish');
+
+ // Make sure the user page is correct.
+ $this->drupalGet('user/3');
+ $this->assertText('usuario_test');
+ $this->assertRaw('druplicon.small');
+ $this->assertText('Test file field');
+ $this->assertLink('test.txt');
+
+ // Make sure the user is translated.
+ $this->drupalGet('user/3/translations');
+ $this->assertNoText('Not translated');
+
+ // Make sure the custom field on the user is still there.
+ $this->drupalGet('admin/config/people/accounts/fields');
+ $this->assertText('Test file field');
+
+ // Make sure the test view still exists.
+ $this->drupalGet('admin/structure/views/view/test_view');
+ $this->assertText('Test view');
+
+ // Make sure the book node exists.
+ $this->drupalGet('admin/structure/book');
+ $this->clickLink('Test Article - New title');
+ $this->assertText('Body');
+ $this->assertText('Tags');
+ $this->assertRaw('Text format');
+
+ // Make sure that users still exist.
+ $this->drupalGet('admin/people');
+ $this->assertText('usuario_test');
+ $this->assertText('drupal');
+ $this->drupalGet('user/1/edit');
+ $this->assertRaw('drupal@example.com');
+
+ // Make sure the content view works.
+ $this->drupalGet('admin/content');
+ $this->assertText('Test title');
+
+ // Make sure our custom blocks show up.
+ $this->drupalGet('admin/structure/block');
+ $this->assertText('Another block');
+ $this->assertText('Test block');
+ $this->drupalGet('admin/structure/block/block-content');
+ $this->assertText('Another block');
+ $this->assertText('Test block');
+
+ // Make sure our custom visibility conditions are correct.
+ $this->drupalGet('admin/structure/block/manage/testblock');
+ $this->assertNoFieldChecked('edit-visibility-language-langcodes-es');
+ $this->assertFieldChecked('edit-visibility-language-langcodes-en');
+ $this->assertNoFieldChecked('edit-visibility-node-type-bundles-book');
+ $this->assertFieldChecked('edit-visibility-node-type-bundles-test-content-type');
+
+ // Make sure our block is still translated.
+ $this->drupalGet('admin/structure/block/manage/testblock/translate/es/edit');
+ $this->assertRaw('Test block spanish');
+
+ // Make sure our custom text format exists.
+ $this->drupalGet('admin/config/content/formats');
+ $this->assertText('Test text format');
+ $this->drupalGet('admin/config/content/formats/manage/test_text_format');
+ $this->assertResponse('200');
+
+ // Make sure our feed still exists.
+ $this->drupalGet('admin/config/services/aggregator');
+ $this->assertText('Test feed');
+ $this->drupalGet('admin/config/services/aggregator/fields');
+ $this->assertText('field_test');
+
+ // Make sure our view appears in the overview.
+ $this->drupalGet('admin/structure/views');
+ $this->assertText('test_view');
+ $this->assertText('Test view');
+
+ // Make sure our custom forum exists.
+ $this->drupalGet('admin/structure/forum');
+ $this->assertText('Test forum');
+
+ // Make sure our custom menu exists.
+ $this->drupalGet('admin/structure/menu');
+ $this->assertText('Test menu');
+
+ // Make sure our custom menu exists.
+ $this->drupalGet('admin/structure/menu/manage/test-menu');
+ $this->clickLink('Admin');
+ // Make sure the translation for the menu is still correct.
+ $this->drupalGet('admin/structure/menu/manage/test-menu/translate/es/edit');
+ $this->assertRaw('Menu test');
+ // Make sure our custom menu link exists.
+ $this->drupalGet('admin/structure/menu/item/1/edit');
+ $this->assertFieldChecked('edit-enabled-value');
+
+ // Make sure our comment type exists.
+ $this->drupalGet('admin/structure/comment');
+ $this->assertText('Test comment type');
+ $this->drupalGet('admin/structure/comment/manage/test_comment_type/fields');
+ $this->assertText('comment_body');
+
+ // Make sure our contact form exists.
+ $this->drupalGet('admin/structure/contact');
+ $this->assertText('Test contact form');
+ $this->drupalGet('admin/structure/types');
+ $this->assertText('Test content type description');
+ $this->drupalGet('admin/structure/types/manage/test_content_type/fields');
+
+ // Make sure fields are the right type.
+ $this->assertLink('Text (formatted, long, with summary)');
+ $this->assertLink('Boolean');
+ $this->assertLink('Comments');
+ $this->assertLink('Date');
+ $this->assertLink('Email');
+ $this->assertLink('Link');
+ $this->assertLink('List (float)');
+ $this->assertLink('Telephone number');
+ $this->assertLink('Entity reference');
+ $this->assertLink('File');
+ $this->assertLink('Image');
+ $this->assertLink('Text (plain, long)');
+ $this->assertLink('List (text)');
+ $this->assertLink('Text (formatted, long)');
+ $this->assertLink('Text (plain)');
+ $this->assertLink('List (integer)');
+ $this->assertLink('Number (integer)');
+ $this->assertLink('Number (float)');
+
+ // Make sure our form mode exists.
+ $this->drupalGet('admin/structure/display-modes/form');
+ $this->assertText('New form mode');
+
+ // Make sure our view mode exists.
+ $this->drupalGet('admin/structure/display-modes/view');
+ $this->assertText('New view mode');
+ $this->drupalGet('admin/structure/display-modes/view/manage/node.new_view_mode');
+ $this->assertResponse(200);
+
+ // Make sure our other language is still there.
+ $this->drupalGet('admin/config/regional/language');
+ $this->assertText('Spanish');
+
+ // Make sure our custom date format exists.
+ $this->drupalGet('admin/config/regional/date-time');
+ $this->assertText('Test date format');
+ $this->drupalGet('admin/config/regional/date-time/formats/manage/test_date_format');
+ $this->assertOptionSelected('edit-langcode', 'es');
+
+ // Make sure our custom image style exists.
+ $this->drupalGet('admin/config/media/image-styles/manage/test_image_style');
+ $this->assertText('Test image style');
+ $this->assertText('Desaturate');
+ $this->assertText('Convert PNG');
+
+ // Make sure our custom responsive image style exists.
+ $this->drupalGet('admin/config/media/responsive-image-style/test');
+ $this->assertResponse(200);
+ $this->assertText('Test');
+
+ // Make sure our custom shortcut exists.
+ $this->drupalGet('admin/config/user-interface/shortcut');
+ $this->assertText('Test shortcut');
+ $this->drupalGet('admin/config/user-interface/shortcut/manage/test/customize');
+ $this->assertText('All content');
+
+ // Make sure our language detection settings are still correct.
+ $this->drupalGet('admin/config/regional/language/detection');
+ $this->assertFieldChecked('edit-language-interface-enabled-language-user-admin');
+ $this->assertFieldChecked('edit-language-interface-enabled-language-url');
+ $this->assertFieldChecked('edit-language-interface-enabled-language-session');
+ $this->assertFieldChecked('edit-language-interface-enabled-language-user');
+ $this->assertFieldChecked('edit-language-interface-enabled-language-browser');
+
+ // Make sure strings are still translated.
+ $this->drupalGet('admin/structure/views/view/content/translate/es/edit');
+ $this->assertText('Contenido');
+ $this->drupalPostForm('admin/config/regional/translate', ['string' => 'Full comment'], 'Filter');
+ $this->assertText('Comentario completo');
+
+ // Make sure our custom action is still there.
+ $this->drupalGet('admin/config/system/actions');
+ $this->assertText('Test action');
+ $this->drupalGet('admin/config/system/actions/configure/test_action');
+ $this->assertText('test_action');
+ $this->assertRaw('drupal.org');
+
+ // Make sure our ban still exists.
+ $this->drupalGet('admin/config/people/ban');
+ $this->assertText('8.8.8.8');
+
+ // Make sure our vocabulary exists.
+ $this->drupalGet('admin/structure/taxonomy/manage/test_vocabulary/overview');
+
+ // Make sure our terms exist.
+ $this->assertText('Test root term');
+ $this->assertText('Test child term');
+ $this->drupalGet('taxonomy/term/3');
+ $this->assertResponse('200');
+
+ // Make sure the terms are still translated.
+ $this->drupalGet('taxonomy/term/2/translations');
+ $this->assertLink('Test root term - Spanish');
+
+ // Make sure our contact form exists.
+ $this->drupalGet('admin/structure/contact');
+ $this->assertText('Test contact form');
+ $this->drupalGet('admin/structure/contact/manage/test_contact_form');
+ $this->assertText('test@example.com');
+ $this->assertText('Hello');
+ $this->drupalGet('admin/structure/contact/manage/test_contact_form/translate/es/edit');
+ $this->assertText('Hola');
+ $this->assertRaw('Test contact form Spanish');
+
+ // Make sure our modules are still enabled.
+ $expected_enabled_modules = [
+ 'action',
+ 'aggregator',
+ 'ban',
+ 'basic_auth',
+ 'block',
+ 'block_content',
+ 'book',
+ 'breakpoint',
+ 'ckeditor',
+ 'color',
+ 'comment',
+ 'config',
+ 'config_translation',
+ 'contact',
+ 'content_translation',
+ 'contextual',
+ 'datetime',
+ 'dblog',
+ 'editor',
+ 'entity_reference',
+ 'field',
+ 'field_ui',
+ 'file',
+ 'filter',
+ 'hal',
+ 'help',
+ 'history',
+ 'image',
+ 'language',
+ 'link',
+ 'locale',
+ 'menu_ui',
+ 'migrate',
+ 'migrate_drupal',
+ 'node',
+ 'options',
+ 'page_cache',
+ 'path',
+ 'quickedit',
+ 'rdf',
+ 'responsive_image',
+ 'rest',
+ 'search',
+ 'serialization',
+ 'shortcut',
+ 'simpletest',
+ 'statistics',
+ 'syslog',
+ 'system',
+ 'taxonomy',
+ 'telephone',
+ 'text',
+ 'toolbar',
+ 'tour',
+ 'tracker',
+ 'update',
+ 'user',
+ 'views_ui',
+ 'forum',
+ 'menu_link_content',
+ 'views',
+ 'standard',
+ ];
+ foreach ($expected_enabled_modules as $module) {
+ $this->assertTrue($this->container->get('module_handler')->moduleExists($module), 'The "' . $module . '" module is still enabled.');
+ }
+
+ // Make sure our themes are still enabled.
+ $expected_enabled_themes = [
+ 'bartik',
+ 'classy',
+ 'seven',
+ 'stark',
+ ];
+ foreach ($expected_enabled_themes as $theme) {
+ $this->assertTrue($this->container->get('theme_handler')->themeExists($theme), 'The "' . $theme . '" is still enabled.');
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function replaceUser1() {
+ // Do not replace the user from our dump.
+ }
+
}