function FieldFieldTest::setUp

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

Overrides ViewsKernelTestBase::setUp

File

core/modules/views/tests/src/Kernel/Handler/FieldFieldTest.php, line 77

Class

FieldFieldTest
Provides some integration tests for the Field handler.

Namespace

Drupal\Tests\views\Kernel\Handler

Code

protected function setUp($import_test_views = TRUE) : void {
    // First setup the needed entity types before installing the views.
    parent::setUp(FALSE);
    $this->installEntitySchema('user');
    $this->installEntitySchema('entity_test');
    $this->installEntitySchema('entity_test_rev');
    ViewTestData::createTestViews(static::class, [
        'views_test_config',
    ]);
    // Bypass any field access.
    $this->adminUser = $this->createUser([
        'administer users',
    ], $this->randomString());
    $this->container
        ->get('current_user')
        ->setAccount($this->adminUser);
    $this->testUsers = [];
    for ($i = 0; $i < 5; $i++) {
        $this->testUsers[$i] = User::create([
            'name' => 'test ' . $i,
            'timezone' => User::getAllowedTimezones()[$i],
            'created' => \Drupal::time()->getRequestTime() - rand(0, 3600),
        ]);
        $this->testUsers[$i]
            ->save();
    }
    // Setup a field storage and field, but also change the views data for the
    // entity_test entity type.
    $field_storage = FieldStorageConfig::create([
        'field_name' => 'field_test',
        'type' => 'integer',
        'entity_type' => 'entity_test',
    ]);
    $field_storage->save();
    $field = FieldConfig::create([
        'field_name' => 'field_test',
        'entity_type' => 'entity_test',
        'bundle' => 'entity_test',
    ]);
    $field->save();
    $field_storage_multiple = FieldStorageConfig::create([
        'field_name' => 'field_test_multiple',
        'type' => 'integer',
        'entity_type' => 'entity_test',
        'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
    ]);
    $field_storage_multiple->save();
    $field_multiple = FieldConfig::create([
        'field_name' => 'field_test_multiple',
        'entity_type' => 'entity_test',
        'bundle' => 'entity_test',
    ]);
    $field_multiple->save();
    $random_number = (string) 30856;
    $random_number_multiple = (string) 1370359990;
    for ($i = 0; $i < 5; $i++) {
        $this->entities[$i] = $entity = EntityTest::create([
            'bundle' => 'entity_test',
            'name' => 'test ' . $i,
            'field_test' => $random_number[$i],
            'field_test_multiple' => [
                $random_number_multiple[$i * 2],
                $random_number_multiple[$i * 2 + 1],
            ],
            'user_id' => $this->testUsers[$i]
                ->id(),
        ]);
        $entity->save();
    }
    // Setup some test data for entities with revisions.
    // We are testing both base field revisions and field config revisions.
    $field_storage = FieldStorageConfig::create([
        'field_name' => 'field_test',
        'type' => 'integer',
        'entity_type' => 'entity_test_rev',
    ]);
    $field_storage->save();
    $field = FieldConfig::create([
        'field_name' => 'field_test',
        'entity_type' => 'entity_test_rev',
        'bundle' => 'entity_test_rev',
    ]);
    $field->save();
    $field_storage_multiple = FieldStorageConfig::create([
        'field_name' => 'field_test_multiple',
        'type' => 'integer',
        'entity_type' => 'entity_test_rev',
        'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
    ]);
    $field_storage_multiple->save();
    $field_multiple = FieldConfig::create([
        'field_name' => 'field_test_multiple',
        'entity_type' => 'entity_test_rev',
        'bundle' => 'entity_test_rev',
    ]);
    $field_multiple->save();
    $this->entityRevision = [];
    $this->entityRevision[0] = $entity = EntityTestRev::create([
        'name' => 'base value',
        'field_test' => 1,
        'field_test_multiple' => [
            1,
            3,
            7,
        ],
        'user_id' => $this->testUsers[0]
            ->id(),
    ]);
    $entity->save();
    $original_entity = clone $entity;
    $entity = clone $original_entity;
    $entity->setNewRevision(TRUE);
    $entity->name->value = 'revision value1';
    $entity->field_test->value = 2;
    $entity->field_test_multiple[0]->value = 0;
    $entity->field_test_multiple[1]->value = 3;
    $entity->field_test_multiple[2]->value = 5;
    $entity->user_id->target_id = $this->testUsers[1]
        ->id();
    $entity->save();
    $this->entityRevision[1] = $entity;
    $entity = clone $original_entity;
    $entity->setNewRevision(TRUE);
    $entity->name->value = 'revision value2';
    $entity->field_test->value = 3;
    $entity->field_test_multiple[0]->value = 9;
    $entity->field_test_multiple[1]->value = 9;
    $entity->field_test_multiple[2]->value = 9;
    $entity->user_id->target_id = $this->testUsers[2]
        ->id();
    $entity->save();
    $this->entityRevision[2] = $entity;
    $this->entityRevision[3] = $entity = EntityTestRev::create([
        'name' => 'next entity value',
        'field_test' => 4,
        'field_test_multiple' => [
            2,
            9,
            9,
        ],
        'user_id' => $this->testUsers[3]
            ->id(),
    ]);
    $entity->save();
    \Drupal::state()->set('entity_test.views_data', [
        'entity_test' => [
            'id' => [
                'field' => [
                    'id' => 'field',
                ],
            ],
        ],
        'entity_test_rev_revision' => [
            'id' => [
                'field' => [
                    'id' => 'field',
                ],
            ],
        ],
    ]);
    Views::viewsData()->clear();
}

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