function BaseFieldDefinitionTest::testFieldInitialValue

Same name in other branches
  1. 8.9.x core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php \Drupal\Tests\Core\Entity\BaseFieldDefinitionTest::testFieldInitialValue()
  2. 10 core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php \Drupal\Tests\Core\Entity\BaseFieldDefinitionTest::testFieldInitialValue()
  3. 11.x core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php \Drupal\Tests\Core\Entity\BaseFieldDefinitionTest::testFieldInitialValue()

Tests field initial value.

@covers ::getInitialValue @covers ::setInitialValue

File

core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php, line 205

Class

BaseFieldDefinitionTest
Unit test for BaseFieldDefinition.

Namespace

Drupal\Tests\Core\Entity

Code

public function testFieldInitialValue() {
    $definition = BaseFieldDefinition::create($this->fieldType);
    $definition->setItemDefinition(DataDefinition::createFromDataType('string')->setClass(FieldItemBase::class));
    $default_value = [
        'value' => $this->randomMachineName(),
    ];
    $expected_default_value = [
        $default_value,
    ];
    $definition->setInitialValue($default_value);
    $entity = $this->getMockBuilder('Drupal\\Core\\Entity\\ContentEntityBase')
        ->disableOriginalConstructor()
        ->getMock();
    // Set the field item list class to be used to avoid requiring the typed
    // data manager to retrieve it.
    $definition->setClass('Drupal\\Core\\Field\\FieldItemList');
    $this->assertEquals($expected_default_value, $definition->getInitialValue($entity));
    $data_definition = $this->getMockBuilder('Drupal\\Core\\TypedData\\DataDefinition')
        ->disableOriginalConstructor()
        ->getMock();
    $data_definition->expects($this->any())
        ->method('getClass')
        ->willReturn('Drupal\\Core\\Field\\FieldItemBase');
    $definition->setItemDefinition($data_definition);
    // Set default value only with a literal.
    $definition->setInitialValue($default_value['value']);
    $this->assertEquals($expected_default_value, $definition->getInitialValue($entity));
    // Set default value with an indexed array.
    $definition->setInitialValue($expected_default_value);
    $this->assertEquals($expected_default_value, $definition->getInitialValue($entity));
    // Set default value with an empty array.
    $definition->setInitialValue([]);
    $this->assertEquals([], $definition->getInitialValue($entity));
    // Set default value with NULL.
    $definition->setInitialValue(NULL);
    $this->assertEquals([], $definition->getInitialValue($entity));
}

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