function NodeAccessLanguageAwareTest::setUp

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

Overrides NodeAccessTestBase::setUp

File

core/modules/node/tests/src/Kernel/NodeAccessLanguageAwareTest.php, line 48

Class

NodeAccessLanguageAwareTest
Tests node_access and select queries with node_access tag functionality with multiple languages with node_access_test_language which is language-aware.

Namespace

Drupal\Tests\node\Kernel

Code

protected function setUp() {
    parent::setUp();
    // Create the 'private' field, which allows the node to be marked as private
    // (restricted access) in a given translation.
    $field_storage = FieldStorageConfig::create([
        'field_name' => 'field_private',
        'entity_type' => 'node',
        'type' => 'boolean',
        'cardinality' => 1,
    ]);
    $field_storage->save();
    FieldConfig::create([
        'field_storage' => $field_storage,
        'bundle' => 'page',
        'widget' => [
            'type' => 'options_buttons',
        ],
        'settings' => [
            'on_label' => 'Private',
            'off_label' => 'Not private',
        ],
    ])->save();
    // After enabling a node access module, the access table has to be rebuild.
    node_access_rebuild();
    // Create a normal authenticated user.
    $this->webUser = $this->drupalCreateUser([
        'access content',
    ]);
    // Load the user 1 user for later use as an admin user with permission to
    // see everything.
    $this->adminUser = User::load(1);
    // Add Hungarian and Catalan.
    ConfigurableLanguage::createFromLangcode('hu')->save();
    ConfigurableLanguage::createFromLangcode('ca')->save();
    // The node_access_test_language module allows individual translations of a
    // node to be marked private (not viewable by normal users).
    // Create six nodes:
    // 1. Four Hungarian nodes with Catalan translations
    //   - One with neither language marked as private.
    //   - One with only the Hungarian translation private.
    //   - One with only the Catalan translation private.
    //   - One with both the Hungarian and Catalan translations private.
    // 2. Two nodes with no language specified.
    //   - One public.
    //   - One private.
    $this->nodes['both_public'] = $node = $this->drupalCreateNode([
        'body' => [
            [],
        ],
        'langcode' => 'hu',
        'field_private' => [
            [
                'value' => 0,
            ],
        ],
    ]);
    $translation = $node->addTranslation('ca');
    $translation->title->value = $this->randomString();
    $translation->field_private->value = 0;
    $node->save();
    $this->nodes['ca_private'] = $node = $this->drupalCreateNode([
        'body' => [
            [],
        ],
        'langcode' => 'hu',
        'field_private' => [
            [
                'value' => 0,
            ],
        ],
    ]);
    $translation = $node->addTranslation('ca');
    $translation->title->value = $this->randomString();
    $translation->field_private->value = 1;
    $node->save();
    $this->nodes['hu_private'] = $node = $this->drupalCreateNode([
        'body' => [
            [],
        ],
        'langcode' => 'hu',
        'field_private' => [
            [
                'value' => 1,
            ],
        ],
    ]);
    $translation = $node->addTranslation('ca');
    $translation->title->value = $this->randomString();
    $translation->field_private->value = 0;
    $node->save();
    $this->nodes['both_private'] = $node = $this->drupalCreateNode([
        'body' => [
            [],
        ],
        'langcode' => 'hu',
        'field_private' => [
            [
                'value' => 1,
            ],
        ],
    ]);
    $translation = $node->addTranslation('ca');
    $translation->title->value = $this->randomString();
    $translation->field_private->value = 1;
    $node->save();
    $this->nodes['no_language_public'] = $this->drupalCreateNode([
        'field_private' => [
            [
                'value' => 0,
            ],
        ],
        'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
    ]);
    $this->nodes['no_language_private'] = $this->drupalCreateNode([
        'field_private' => [
            [
                'value' => 1,
            ],
        ],
        'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
    ]);
}

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