outline-8.x-1.x-dev/tests/src/Kernel/EntryValidationTest.php
tests/src/Kernel/EntryValidationTest.php
<?php
namespace Drupal\Tests\outline\Kernel;
use Drupal\Component\Render\FormattableMarkup;
use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
/**
* Tests entry validation constraints.
*
* @group outline
*/
class EntryValidationTest extends EntityKernelTestBase {
/**
* Modules to enable.
*
* @var array
*/
protected static $modules = ['outline'];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->installEntitySchema('outline_entry');
}
/**
* Tests the entry validation constraints.
*/
public function testValidation() {
$this->entityTypeManager->getStorage('outline')->create([
'oid' => 'tags',
'name' => 'Tags',
])->save();
$entry = $this->entityTypeManager->getStorage('outline_entry')->create([
'name' => 'test',
'oid' => 'tags',
]);
$violations = $entry->validate();
$this->assertCount(0, $violations, 'No violations when validating a default entry.');
$entry->set('name', $this->randomString(256));
$violations = $entry->validate();
$this->assertCount(1, $violations, 'Violation found when name is too long.');
$this->assertEqual($violations[0]->getPropertyPath(), 'name.0.value');
$field_label = $entry->get('name')->getFieldDefinition()->getLabel();
$this->assertEqual($violations[0]->getMessage(), t('%name: may not be longer than @max characters.', ['%name' => $field_label, '@max' => 255]));
$entry->set('name', NULL);
$violations = $entry->validate();
$this->assertCount(1, $violations, 'Violation found when name is NULL.');
$this->assertEqual($violations[0]->getPropertyPath(), 'name');
$this->assertEqual($violations[0]->getMessage(), t('This value should not be null.'));
$entry->set('name', 'test');
$entry->set('parent', 9999);
$violations = $entry->validate();
$this->assertCount(1, $violations, 'Violation found when entry parent is invalid.');
$this->assertEqual($violations[0]->getMessage(), new FormattableMarkup('The referenced entity (%type: %id) does not exist.', ['%type' => 'outline_entry', '%id' => 9999]));
$entry->set('parent', 0);
$violations = $entry->validate();
$this->assertCount(0, $violations, 'No violations for parent id 0.');
}
}
