public function NodeFieldMultilingualTest::testMultilingualNodeForm in Drupal 8
Same name and namespace in other branches
- 9 core/modules/node/tests/src/Functional/NodeFieldMultilingualTest.php \Drupal\Tests\node\Functional\NodeFieldMultilingualTest::testMultilingualNodeForm()
Tests whether field languages are correctly set through the node form.
File
- core/
modules/ node/ tests/ src/ Functional/ NodeFieldMultilingualTest.php, line 69
Class
- NodeFieldMultilingualTest
- Tests multilingual support for fields.
Namespace
Drupal\Tests\node\FunctionalCode
public function testMultilingualNodeForm() {
// Create "Basic page" content.
$langcode = language_get_default_langcode('node', 'page');
$title_key = 'title[0][value]';
$title_value = $this
->randomMachineName(8);
$body_key = 'body[0][value]';
$body_value = $this
->randomMachineName(16);
// Create node to edit.
$edit = [];
$edit[$title_key] = $title_value;
$edit[$body_key] = $body_value;
$this
->drupalPostForm('node/add/page', $edit, t('Save'));
// Check that the node exists in the database.
$node = $this
->drupalGetNodeByTitle($edit[$title_key]);
$this
->assertNotEmpty($node, 'Node found in database.');
$this
->assertTrue($node
->language()
->getId() == $langcode && $node->body->value == $body_value, 'Field language correctly set.');
// Change node language.
$langcode = 'it';
$this
->drupalGet("node/{$node->id()}/edit");
$edit = [
$title_key => $this
->randomMachineName(8),
'langcode[0][value]' => $langcode,
];
$this
->drupalPostForm(NULL, $edit, t('Save'));
$node = $this
->drupalGetNodeByTitle($edit[$title_key], TRUE);
$this
->assertNotEmpty($node, 'Node found in database.');
$this
->assertTrue($node
->language()
->getId() == $langcode && $node->body->value == $body_value, 'Field language correctly changed.');
// Enable content language URL detection.
$this->container
->get('language_negotiator')
->saveConfiguration(LanguageInterface::TYPE_CONTENT, [
LanguageNegotiationUrl::METHOD_ID => 0,
]);
// Test multilingual field language fallback logic.
$this
->drupalGet("it/node/{$node->id()}");
$this
->assertRaw($body_value, 'Body correctly displayed using Italian as requested language');
$this
->drupalGet("node/{$node->id()}");
$this
->assertRaw($body_value, 'Body correctly displayed using English as requested language');
}