UpdatePathTestBaseFilledTest.php
Same filename in other branches
Namespace
Drupal\Tests\system\Functional\UpdateSystemFile
-
core/
modules/ system/ tests/ src/ Functional/ UpdateSystem/ UpdatePathTestBaseFilledTest.php
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests\system\Functional\UpdateSystem;
use Drupal\FunctionalTests\Update\UpdatePathTestBase;
use Drupal\node\Entity\Node;
use Drupal\node\Entity\NodeType;
use Drupal\user\Entity\User;
// cspell:ignore hola testblock usuario
/**
* Runs UpdatePathTestBase with a dump filled with content.
*
* @group #slow
* @group Update
*/
class UpdatePathTestBaseFilledTest extends UpdatePathTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritdoc}
*/
protected function setDatabaseDumpFiles() {
$this->databaseDumpFiles[] = __DIR__ . '/../../../../tests/fixtures/update/drupal-9.4.0.filled.standard.php.gz';
$this->databaseDumpFiles[] = __DIR__ . '/../../../../tests/fixtures/update/drupal-8.update-test-schema-enabled.php';
$this->databaseDumpFiles[] = __DIR__ . '/../../../../tests/fixtures/update/drupal-8.update-test-semver-update-n-enabled.php';
}
/**
* Tests that the content and configuration were properly updated.
*/
public function testUpdatedSite() : void {
$assert_session = $this->assertSession();
$this->runUpdates();
$spanish = \Drupal::languageManager()->getLanguage('es');
$expected_node_data = [
[
1,
'article',
'en',
'Test Article - New title',
],
[
2,
'book',
'en',
'Book page',
],
[
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->assertEquals($langcode, $node->language()
->getId());
$this->assertEquals($type, $node->getType());
$this->assertEquals($title, $node->getTitle());
// Assert that nodes are all published.
$this->assertTrue($node->isPublished());
$this->drupalGet('node/' . $id);
$this->assertSession()
->pageTextContains($title);
}
// Make sure the translated node still exists.
$translation = Node::load(8)->getTranslation('es');
$this->assertEquals('Test title Spanish', $translation->getTitle());
// Make sure our alias still works.
$this->drupalGet('test-article');
$this->assertSession()
->pageTextContains('Test Article - New title');
$this->assertSession()
->pageTextContains('Body');
$this->assertSession()
->pageTextContains('Tags');
// Make sure a translated page exists.
$this->drupalGet('node/8', [
'language' => $spanish,
]);
// Check for text of two comments.
$this->assertSession()
->pageTextContains('Hola');
$this->assertSession()
->pageTextContains('Hello');
// The user entity reference field is access restricted.
$this->assertSession()
->pageTextNotContains('Test 12');
// Make sure all other field labels are there.
for ($i = 1; $i <= 23; $i++) {
if ($i != 12) {
$this->assertSession()
->pageTextContains('Test ' . $i);
}
}
// Make sure the content block appears.
$this->drupalGet('<front>');
// Block title.
$this->assertSession()
->pageTextContains('Another block');
// Block body.
$this->assertSession()
->pageTextContains('Hello');
// Log in as user 1.
$account = User::load(1);
$account->passRaw = '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->assertSession()
->pageTextContains('Test 12');
$this->assertSession()
->linkExists('drupal');
// Make sure the content for node 8 is still in the edit form.
$this->drupalGet('node/8/edit');
$this->assertSession()
->pageTextContains('Test title');
$this->assertSession()
->pageTextContains('Test body');
$this->assertSession()
->checkboxChecked('edit-field-test-1-value');
$this->assertSession()
->responseContains('2015-08-16');
$this->assertSession()
->responseContains('test@example.com');
$this->assertSession()
->responseContains('drupal.org');
$this->assertSession()
->pageTextContains('0.1');
$this->assertSession()
->pageTextContains('0.2');
$this->assertSession()
->responseContains('+31612345678');
$this->assertSession()
->responseContains('+31612345679');
$this->assertSession()
->pageTextContains('Test Article - New title');
$this->assertSession()
->pageTextContains('test.txt');
$this->assertSession()
->pageTextContains('druplicon.small');
$this->assertSession()
->responseContains('General discussion');
$this->assertSession()
->pageTextContains('Test Article - New title');
$this->assertSession()
->pageTextContains('Test 1');
$this->assertSession()
->responseContains('0.01');
$this->drupalGet('node/8/edit');
$this->submitForm([], 'Save (this translation)');
$this->assertSession()
->statusCodeEquals(200);
$this->drupalGet('node/8/edit', [
'language' => $spanish,
]);
$this->assertSession()
->pageTextContains('Test title Spanish');
$this->assertSession()
->pageTextContains('Test body Spanish');
// Make sure the user page is correct.
$this->drupalGet('user/3');
$this->assertSession()
->pageTextContains('usuario_test');
$this->assertSession()
->responseContains('druplicon.small');
$this->assertSession()
->pageTextContains('Test file field');
$this->assertSession()
->linkExists('test.txt');
// Make sure the user is translated.
$this->drupalGet('user/3/translations');
$this->assertSession()
->pageTextNotContains('Not translated');
// Make sure the custom field on the user is still there.
$this->drupalGet('admin/config/people/accounts/fields');
$this->assertSession()
->pageTextContains('Test file field');
// Make sure the test view still exists.
$this->drupalGet('admin/structure/views/view/test_view');
$this->assertSession()
->pageTextContains('Test view');
// Make sure the book node exists.
$this->drupalGet('admin/structure/book');
$this->clickLink('Test Article - New title');
$this->assertSession()
->pageTextContains('Body');
$this->assertSession()
->pageTextContains('Tags');
$this->assertSession()
->responseContains('Text format');
// Make sure that users still exist.
$this->drupalGet('admin/people');
$this->assertSession()
->pageTextContains('usuario_test');
$this->assertSession()
->pageTextContains('drupal');
$this->drupalGet('user/1/edit');
$this->assertSession()
->responseContains('drupal@example.com');
// Make sure the content view works.
$this->drupalGet('admin/content');
$this->assertSession()
->pageTextContains('Test title');
// Make sure our content blocks show up.
$this->drupalGet('admin/structure/block');
$this->assertSession()
->pageTextContains('Another block');
$this->assertSession()
->pageTextContains('Test block');
$this->drupalGet('admin/content/block');
$this->assertSession()
->pageTextContains('Another block');
$this->assertSession()
->pageTextContains('Test block');
// Make sure our custom visibility conditions are correct.
$this->drupalGet('admin/structure/block/manage/testblock');
$this->assertSession()
->checkboxNotChecked('edit-visibility-language-langcodes-es');
$this->assertSession()
->checkboxChecked('edit-visibility-language-langcodes-en');
$this->assertSession()
->checkboxNotChecked('edit-visibility-entity-bundlenode-bundles-book');
$this->assertSession()
->checkboxChecked('edit-visibility-entity-bundlenode-bundles-test-content-type');
// Make sure our block is still translated.
$this->drupalGet('admin/structure/block/manage/testblock/translate/es/edit');
$this->assertSession()
->responseContains('Test block spanish');
// Make sure our custom text format exists.
$this->drupalGet('admin/config/content/formats');
$this->assertSession()
->pageTextContains('Test text format');
$this->drupalGet('admin/config/content/formats/manage/test_text_format');
$this->assertSession()
->statusCodeEquals(200);
// Make sure our view appears in the overview.
$this->drupalGet('admin/structure/views');
$this->assertSession()
->pageTextContains('test_view');
$this->assertSession()
->pageTextContains('Test view');
// Make sure our custom menu exists.
$this->drupalGet('admin/structure/menu');
$this->assertSession()
->pageTextContains('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->assertSession()
->responseContains('Menu test');
// Make sure our custom menu link exists.
$this->drupalGet('admin/structure/menu/item/1/edit');
$this->assertSession()
->checkboxChecked('edit-enabled-value');
// Make sure our comment type exists.
$this->drupalGet('admin/structure/comment');
$this->assertSession()
->pageTextContains('Test comment type');
$this->drupalGet('admin/structure/comment/manage/test_comment_type/fields');
$this->assertSession()
->pageTextContains('comment_body');
// Make sure our contact form exists.
$this->drupalGet('admin/structure/contact');
$this->assertSession()
->pageTextContains('Test contact form');
$this->drupalGet('admin/structure/types');
$this->assertSession()
->pageTextContains('Test content type description');
$this->drupalGet('admin/structure/types/manage/test_content_type/fields');
// Make sure fields are the right type.
$assert_session->elementContains('css', '#body', 'Text (formatted, long, with summary)');
$assert_session->elementContains('css', '#field-test-1', 'Boolean');
$assert_session->elementContains('css', '#field-test-2', 'Comments');
$assert_session->elementContains('css', '#field-test-3', 'Date');
$assert_session->elementContains('css', '#field-test-4', 'Email');
$assert_session->elementContains('css', '#field-test-5', 'Link');
$assert_session->elementContains('css', '#field-test-6', 'List (float)');
$assert_session->elementContains('css', '#field-test-7', 'Telephone number');
$assert_session->elementContains('css', '#field-test-8', 'Entity reference');
$assert_session->elementContains('css', '#field-test-9', 'File');
$assert_session->elementContains('css', '#field-test-10', 'Image');
$assert_session->elementContains('css', '#field-test-15', 'Text (plain, long)');
$assert_session->elementContains('css', '#field-test-16', 'List (text)');
$assert_session->elementContains('css', '#field-test-17', 'Text (formatted)');
$assert_session->elementContains('css', '#field-test-18', 'Text (formatted, long)');
$assert_session->elementContains('css', '#field-test-20', 'List (integer)');
$assert_session->elementContains('css', '#field-test-22', 'Number (float)');
$assert_session->elementContains('css', '#field-test-23', 'Number (integer)');
// Make sure our form mode exists.
$this->drupalGet('admin/structure/display-modes/form');
$this->assertSession()
->pageTextContains('New form mode');
// Make sure our view mode exists.
$this->drupalGet('admin/structure/display-modes/view');
$this->assertSession()
->pageTextContains('New view mode');
$this->drupalGet('admin/structure/display-modes/view/manage/node.new_view_mode');
$this->assertSession()
->statusCodeEquals(200);
// Make sure our other language is still there.
$this->drupalGet('admin/config/regional/language');
$this->assertSession()
->pageTextContains('Spanish');
// Make sure our custom date format exists.
$this->drupalGet('admin/config/regional/date-time');
$this->assertSession()
->pageTextContains('Test date format');
$this->drupalGet('admin/config/regional/date-time/formats/manage/test_date_format');
$this->assertTrue($this->assertSession()
->optionExists('edit-langcode', 'es')
->isSelected());
// Make sure our custom image style exists.
$this->drupalGet('admin/config/media/image-styles/manage/test_image_style');
$this->assertSession()
->pageTextContains('Test image style');
$this->assertSession()
->pageTextContains('Desaturate');
$this->assertSession()
->pageTextContains('Convert PNG');
// Make sure our custom responsive image style exists.
$this->drupalGet('admin/config/media/responsive-image-style/test');
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains('Test');
// Make sure our custom shortcut exists.
$this->drupalGet('admin/config/user-interface/shortcut');
$this->assertSession()
->pageTextContains('Test shortcut');
$this->drupalGet('admin/config/user-interface/shortcut/manage/test/customize');
$this->assertSession()
->pageTextContains('All content');
// Make sure our language detection settings are still correct.
$this->drupalGet('admin/config/regional/language/detection');
$this->assertSession()
->checkboxChecked('edit-language-interface-enabled-language-user-admin');
$this->assertSession()
->checkboxChecked('edit-language-interface-enabled-language-url');
$this->assertSession()
->checkboxChecked('edit-language-interface-enabled-language-session');
$this->assertSession()
->checkboxChecked('edit-language-interface-enabled-language-user');
$this->assertSession()
->checkboxChecked('edit-language-interface-enabled-language-browser');
// Make sure strings are still translated.
$this->drupalGet('admin/structure/views/view/content/translate/es/edit');
// cSpell:disable-next-line
$this->assertSession()
->pageTextContains('Contenido');
$this->drupalGet('admin/config/regional/translate');
$this->submitForm([
'string' => 'Full comment',
], 'Filter');
// cSpell:disable-next-line
$this->assertSession()
->pageTextContains('Comentario completo');
// Make sure our custom action is still there.
$this->drupalGet('admin/config/system/actions');
$this->assertSession()
->pageTextContains('Test action');
$this->drupalGet('admin/config/system/actions/configure/test_action');
$this->assertSession()
->fieldValueEquals('id', 'test_action');
$this->assertSession()
->responseContains('drupal.org');
// Make sure our ban still exists.
$this->drupalGet('admin/config/people/ban');
$this->assertSession()
->pageTextContains('8.8.8.8');
// Make sure our vocabulary exists.
$this->drupalGet('admin/structure/taxonomy/manage/test_vocabulary/overview');
// Make sure our terms exist.
$this->assertSession()
->pageTextContains('Test root term');
$this->assertSession()
->pageTextContains('Test child term');
$this->drupalGet('taxonomy/term/3');
$this->assertSession()
->statusCodeEquals(200);
// Make sure the terms are still translated.
$this->drupalGet('taxonomy/term/2/translations');
$this->assertSession()
->linkExists('Test root term - Spanish');
// Make sure our contact form exists.
$this->drupalGet('admin/structure/contact');
$this->assertSession()
->pageTextContains('Test contact form');
$this->drupalGet('admin/structure/contact/manage/test_contact_form');
$this->assertSession()
->pageTextContains('test@example.com');
$this->assertSession()
->pageTextContains('Hello');
$this->drupalGet('admin/structure/contact/manage/test_contact_form/translate/es/edit');
$this->assertSession()
->pageTextContains('Hola');
$this->assertSession()
->responseContains('Test contact form Spanish');
// Make sure our modules are still enabled.
$expected_enabled_modules = [
'action',
'ban',
'basic_auth',
'block',
'block_content',
'book',
'breakpoint',
'ckeditor5',
'comment',
'config',
'config_translation',
'contact',
'content_translation',
'contextual',
'datetime',
'dblog',
'editor',
'field',
'field_ui',
'file',
'filter',
'help',
'history',
'image',
'language',
'link',
'locale',
'menu_ui',
'migrate',
'migrate_drupal',
'node',
'options',
'page_cache',
'path',
'phpass',
'responsive_image',
'rest',
'search',
'serialization',
'shortcut',
'syslog',
'system',
'taxonomy',
'telephone',
'text',
'toolbar',
'tracker',
'update',
'user',
'views_ui',
'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 = [
'olivero',
'claro',
'stark',
];
foreach ($expected_enabled_themes as $theme) {
$this->assertTrue($this->container
->get('theme_handler')
->themeExists($theme), 'The "' . $theme . '" is still enabled.');
}
// Ensure that the Book module's node type does not have duplicated enforced
// dependencies.
// @see system_post_update_fix_enforced_dependencies()
$book_node_type = NodeType::load('book');
$this->assertEquals([
'enforced' => [
'module' => [
'book',
],
],
], $book_node_type->get('dependencies'));
}
/**
* {@inheritdoc}
*/
protected function replaceUser1() {
// Do not replace the user from our dump.
}
/**
* Tests that the database was properly loaded.
*/
public function testDatabaseProperlyLoaded() : void {
$this->testDatabaseLoaded();
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
UpdatePathTestBaseFilledTest | Runs UpdatePathTestBase with a dump filled with content. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.