function NodeLanguageTest::setUp

Same name and namespace in other branches
  1. 9 core/modules/node/tests/src/Functional/Views/NodeLanguageTest.php \Drupal\Tests\node\Functional\Views\NodeLanguageTest::setUp()
  2. 8.9.x core/modules/node/tests/src/Functional/Views/NodeLanguageTest.php \Drupal\Tests\node\Functional\Views\NodeLanguageTest::setUp()
  3. 10 core/modules/node/tests/src/Functional/Views/NodeLanguageTest.php \Drupal\Tests\node\Functional\Views\NodeLanguageTest::setUp()

Overrides NodeTestBase::setUp

File

core/modules/node/tests/src/Functional/Views/NodeLanguageTest.php, line 50

Class

NodeLanguageTest
Tests node language fields, filters, and sorting.

Namespace

Drupal\Tests\node\Functional\Views

Code

protected function setUp($import_test_views = TRUE, $modules = []) : void {
    parent::setUp(FALSE, $modules);
    // Create Page content type.
    if ($this->profile != 'standard') {
        $this->drupalCreateContentType([
            'type' => 'page',
            'name' => 'Basic page',
        ]);
        ViewTestData::createTestViews(static::class, [
            'node_test_views',
        ]);
    }
    // Add two new languages.
    ConfigurableLanguage::createFromLangcode('fr')->save();
    ConfigurableLanguage::createFromLangcode('es')->save();
    // Make the body field translatable. The title is already translatable by
    // definition.
    $field_storage = FieldStorageConfig::loadByName('node', 'body');
    $field_storage->setTranslatable(TRUE);
    $field_storage->save();
    // Set up node titles. They should not include the words "French",
    // "English", or "Spanish", as there is a language field in the view
    // that prints out those words.
    $this->nodeTitles = [
        LanguageInterface::LANGCODE_NOT_SPECIFIED => [
            'First node und',
        ],
        'es' => [
            'Primero nodo es',
            'Segundo nodo es',
            'Tercera nodo es',
        ],
        'en' => [
            'First node en',
            'Second node en',
        ],
        'fr' => [
            'Premier nœud fr',
        ],
    ];
    // Create nodes with translations.
    foreach ($this->nodeTitles['es'] as $index => $title) {
        $node = $this->drupalCreateNode([
            'title' => $title,
            'langcode' => 'es',
            'type' => 'page',
            'promote' => 1,
        ]);
        foreach ([
            'en',
            'fr',
        ] as $langcode) {
            if (isset($this->nodeTitles[$langcode][$index])) {
                $translation = $node->addTranslation($langcode, [
                    'title' => $this->nodeTitles[$langcode][$index],
                ]);
                $translation->body->value = $this->randomMachineName(32);
            }
        }
        $node->save();
    }
    // Create non-translatable nodes.
    foreach ($this->nodeTitles[LanguageInterface::LANGCODE_NOT_SPECIFIED] as $index => $title) {
        $node = $this->drupalCreateNode([
            'title' => $title,
            'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
            'type' => 'page',
            'promote' => 1,
        ]);
        $node->body->value = $this->randomMachineName(32);
        $node->save();
    }
    $user = $this->drupalCreateUser([
        'access content overview',
        'access content',
    ]);
    $this->drupalLogin($user);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.