public function ContentEntityBaseUnitTest::testRequiredValidation in Zircon Profile 8
Same name and namespace in other branches
- 8.0 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
@expectedException \LogicException @expectedExceptionMessage Entity validation was skipped.
File
- core/
tests/ Drupal/ Tests/ Core/ Entity/ ContentEntityBaseUnitTest.php, line 365 - Contains \Drupal\Tests\Core\Entity\ContentEntityBaseUnitTest.
Class
- ContentEntityBaseUnitTest
- @coversDefaultClass \Drupal\Core\Entity\ContentEntityBase @group Entity @group Access
Namespace
Drupal\Tests\Core\EntityCode
public function testRequiredValidation() {
$validator = $this
->getMock('\\Symfony\\Component\\Validator\\ValidatorInterface');
/** @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
->getMock('\\Drupal\\Core\\Entity\\EntityStorageInterface');
$storage
->expects($this
->any())
->method('save')
->willReturnCallback(function (ContentEntityInterface $entity) use ($storage) {
$entity
->preSave($storage);
});
$this->entityManager
->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->entity
->save();
}