You are here

protected function NodeAccessLanguageAwareTest::setUp in Drupal 9

Same name and namespace in other branches
  1. 8 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()

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() : void {
  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,
  ]);
}