public function ContentEntityBaseUnitTest::testRequiredValidation in Drupal 8
Same name and namespace in other branches
- 9 core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php \Drupal\Tests\Core\Entity\ContentEntityBaseUnitTest::testRequiredValidation()
Tests required validation.
@covers ::validate @covers ::isValidationRequired @covers ::setValidationRequired @covers ::save @covers ::preSave
File
- core/
tests/ Drupal/ Tests/ Core/ Entity/ ContentEntityBaseUnitTest.php, line 391
Class
- ContentEntityBaseUnitTest
- @coversDefaultClass \Drupal\Core\Entity\ContentEntityBase @group Entity @group Access
Namespace
Drupal\Tests\Core\EntityCode
public function testRequiredValidation() {
$validator = $this
->createMock(ValidatorInterface::class);
/** @var \Symfony\Component\Validator\ConstraintViolationList|\PHPUnit\Framework\MockObject\MockObject $empty_violation_list */
$empty_violation_list = $this
->getMockBuilder('\\Symfony\\Component\\Validator\\ConstraintViolationList')
->setMethods(NULL)
->getMock();
$validator
->expects($this
->at(0))
->method('validate')
->with($this->entity
->getTypedData())
->will($this
->returnValue($empty_violation_list));
$this->typedDataManager
->expects($this
->any())
->method('getValidator')
->will($this
->returnValue($validator));
/** @var \Drupal\Core\Entity\EntityStorageInterface|\PHPUnit\Framework\MockObject\MockObject $storage */
$storage = $this
->createMock('\\Drupal\\Core\\Entity\\EntityStorageInterface');
$storage
->expects($this
->any())
->method('save')
->willReturnCallback(function (ContentEntityInterface $entity) use ($storage) {
$entity
->preSave($storage);
});
$this->entityTypeManager
->expects($this
->any())
->method('getStorage')
->with($this->entityTypeId)
->will($this
->returnValue($storage));
// Check that entities can be saved normally when validation is not
// required.
$this
->assertFalse($this->entity
->isValidationRequired());
$this->entity
->save();
// Make validation required and check that if the entity is validated, it
// can be saved normally.
$this->entity
->setValidationRequired(TRUE);
$this
->assertTrue($this->entity
->isValidationRequired());
$this->entity
->validate();
$this->entity
->save();
// Check that the "validated" status is reset after saving the entity and
// that trying to save a non-validated entity when validation is required
// results in an exception.
$this
->assertTrue($this->entity
->isValidationRequired());
$this
->expectException(\LogicException::class);
$this
->expectExceptionMessage('Entity validation was skipped.');
$this->entity
->save();
}