Version 1
[yaffs-website] / web / modules / contrib / linkit / src / Tests / Matchers / TermMatcherTest.php
diff --git a/web/modules/contrib/linkit/src/Tests/Matchers/TermMatcherTest.php b/web/modules/contrib/linkit/src/Tests/Matchers/TermMatcherTest.php
new file mode 100644 (file)
index 0000000..d28a484
--- /dev/null
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\linkit\Tests\Matchers\TermMatcherTest.
+ */
+
+namespace Drupal\linkit\Tests\Matchers;
+
+use Drupal\Component\Utility\Unicode;
+use Drupal\Core\Language\LanguageInterface;
+use Drupal\linkit\Tests\LinkitTestBase;
+use Drupal\taxonomy\Entity\Vocabulary;
+
+/**
+ * Tests term matcher.
+ *
+ * @group linkit
+ */
+class TermMatcherTest extends LinkitTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['taxonomy'];
+
+  /**
+   * The matcher manager.
+   *
+   * @var \Drupal\linkit\MatcherManager
+   */
+  protected $manager;
+
+  /**
+   * Creates and saves a vocabulary.
+   *
+   * @param string $name
+   *   The vocabulary name.
+   *
+   * @return Vocabulary The new vocabulary object.
+   * The new vocabulary object.
+   */
+  private function createVocabulary($name) {
+    $vocabularyStorage = \Drupal::entityTypeManager()->getStorage('taxonomy_vocabulary');
+    $vocabulary = $vocabularyStorage->create([
+      'name' => $name,
+      'description' => $name,
+      'vid' => Unicode::strtolower($name),
+      'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+    ]);
+    $vocabulary->save();
+    return $vocabulary;
+  }
+
+  /**
+   * Creates and saves a new term with in vocabulary $vid.
+   *
+   * @param \Drupal\taxonomy\Entity\Vocabulary $vocabulary
+   *   The vocabulary object.
+   * @param array $values
+   *   (optional) An array of values to set, keyed by property name. If the
+   *   entity type has bundles, the bundle key has to be specified.
+   *
+   * @return \Drupal\taxonomy\Entity\Term
+   *   The new taxonomy term object.
+   */
+  private function createTerm(Vocabulary $vocabulary, $values = array()) {
+    $filter_formats = filter_formats();
+    $format = array_pop($filter_formats);
+
+    $termStorage = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
+    $term = $termStorage->create($values + array(
+        'name' => $this->randomMachineName(),
+        'description' => array(
+          'value' => $this->randomMachineName(),
+          // Use the first available text format.
+          'format' => $format->id(),
+        ),
+        'vid' => $vocabulary->id(),
+        'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+      ));
+    $term->save();
+    return $term;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->drupalLogin($this->adminUser);
+    $this->manager = $this->container->get('plugin.manager.linkit.matcher');
+
+    $testing_vocabulary_1 = $this->createVocabulary('testing_vocabulary_1');
+    $testing_vocabulary_2 = $this->createVocabulary('testing_vocabulary_2');
+
+    $this->createTerm($testing_vocabulary_1, ['name' => 'foo_bar']);
+    $this->createTerm($testing_vocabulary_1, ['name' => 'foo_baz']);
+    $this->createTerm($testing_vocabulary_1, ['name' => 'foo_foo']);
+    $this->createTerm($testing_vocabulary_1, ['name' => 'bar']);
+    $this->createTerm($testing_vocabulary_2, ['name' => 'foo_bar']);
+    $this->createTerm($testing_vocabulary_2, ['name' => 'foo_baz']);
+  }
+
+  /**
+   * Tests term matcher with default configuration.
+   */
+  function testTermMatcherWidthDefaultConfiguration() {
+    /** @var \Drupal\linkit\MatcherInterface $plugin */
+    $plugin = $this->manager->createInstance('entity:taxonomy_term', []);
+    $matches = $plugin->getMatches('foo');
+    $this->assertEqual(5, count($matches), 'Correct number of matches');
+  }
+
+  /**
+   * Tests term matcher with bundle filer.
+   */
+  function testTermMatcherWidthBundleFiler() {
+    /** @var \Drupal\linkit\MatcherInterface $plugin */
+    $plugin = $this->manager->createInstance('entity:taxonomy_term', [
+      'settings' => [
+        'bundles' => [
+          'testing_vocabulary_1' => 'testing_vocabulary_1'
+        ],
+      ],
+    ]);
+
+    $matches = $plugin->getMatches('foo');
+    $this->assertEqual(3, count($matches), 'Correct number of matches');
+  }
+
+}