Version 1
[yaffs-website] / web / core / modules / taxonomy / tests / src / Kernel / TermValidationTest.php
diff --git a/web/core/modules/taxonomy/tests/src/Kernel/TermValidationTest.php b/web/core/modules/taxonomy/tests/src/Kernel/TermValidationTest.php
new file mode 100644 (file)
index 0000000..437a305
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+namespace Drupal\Tests\taxonomy\Kernel;
+
+use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
+
+/**
+ * Tests term validation constraints.
+ *
+ * @group taxonomy
+ */
+class TermValidationTest extends EntityKernelTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['taxonomy'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('taxonomy_term');
+  }
+
+  /**
+   * Tests the term validation constraints.
+   */
+  public function testValidation() {
+    $this->entityManager->getStorage('taxonomy_vocabulary')->create([
+      'vid' => 'tags',
+      'name' => 'Tags',
+    ])->save();
+    $term = $this->entityManager->getStorage('taxonomy_term')->create([
+      'name' => 'test',
+      'vid' => 'tags',
+    ]);
+    $violations = $term->validate();
+    $this->assertEqual(count($violations), 0, 'No violations when validating a default term.');
+
+    $term->set('name', $this->randomString(256));
+    $violations = $term->validate();
+    $this->assertEqual(count($violations), 1, 'Violation found when name is too long.');
+    $this->assertEqual($violations[0]->getPropertyPath(), 'name.0.value');
+    $field_label = $term->get('name')->getFieldDefinition()->getLabel();
+    $this->assertEqual($violations[0]->getMessage(), t('%name: may not be longer than @max characters.', ['%name' => $field_label, '@max' => 255]));
+
+    $term->set('name', NULL);
+    $violations = $term->validate();
+    $this->assertEqual(count($violations), 1, 'Violation found when name is NULL.');
+    $this->assertEqual($violations[0]->getPropertyPath(), 'name');
+    $this->assertEqual($violations[0]->getMessage(), t('This value should not be null.'));
+    $term->set('name', 'test');
+
+    $term->set('parent', 9999);
+    $violations = $term->validate();
+    $this->assertEqual(count($violations), 1, 'Violation found when term parent is invalid.');
+    $this->assertEqual($violations[0]->getMessage(), format_string('The referenced entity (%type: %id) does not exist.', ['%type' => 'taxonomy_term', '%id' => 9999]));
+
+    $term->set('parent', 0);
+    $violations = $term->validate();
+    $this->assertEqual(count($violations), 0, 'No violations for parent id 0.');
+  }
+
+}