You are here

NodeMatcherTest.php in Linkit 8.4

File

src/Tests/Matchers/NodeMatcherTest.php
View source
<?php

/**
 * @file
 * Contains \Drupal\linkit\Tests\Matchers\NodeMatcherTest.
 */
namespace Drupal\linkit\Tests\Matchers;

use Drupal\linkit\Tests\LinkitTestBase;

/**
 * Tests node matcher.
 *
 * @group linkit
 */
class NodeMatcherTest extends LinkitTestBase {

  /**
   * Modules to enable.
   *
   * @var array
   */
  public static $modules = [
    'node',
  ];

  /**
   * The matcher manager.
   *
   * @var \Drupal\linkit\MatcherManager
   */
  protected $manager;

  /**
   * {@inheritdoc}
   */
  protected function setUp() {
    parent::setUp();
    $this
      ->drupalLogin($this->adminUser);
    $this->manager = $this->container
      ->get('plugin.manager.linkit.matcher');
    $type1 = $this
      ->drupalCreateContentType([
      'type' => 'test1',
      'name' => 'Test1',
    ]);
    $type2 = $this
      ->drupalCreateContentType([
      'type' => 'test2',
      'name' => 'Test2',
    ]);

    // Nodes with type 1.
    $this
      ->drupalCreateNode([
      'title' => 'Lorem Ipsum 1',
      'type' => $type1
        ->id(),
    ]);
    $this
      ->drupalCreateNode([
      'title' => 'Lorem Ipsum 2',
      'type' => $type1
        ->id(),
    ]);

    // Nodes with type 1.
    $this
      ->drupalCreateNode([
      'title' => 'Lorem Ipsum 3',
      'type' => $type2
        ->id(),
    ]);

    // Unpublished node.
    $this
      ->drupalCreateNode([
      'title' => 'Lorem unpublishd',
      'type' => $type1
        ->id(),
      'status' => FALSE,
    ]);
  }

  /**
   * Tests node matcher.
   */
  function testNodeMatcherWidthDefaultConfiguration() {

    /** @var \Drupal\linkit\MatcherInterface $plugin */
    $plugin = $this->manager
      ->createInstance('entity:node', []);
    $matches = $plugin
      ->getMatches('Lorem');
    $this
      ->assertEqual(3, count($matches), 'Correct number of matches');
  }

  /**
   * Tests node matcher with bundle filer.
   */
  function testNodeMatcherWidthBundleFiler() {

    /** @var \Drupal\linkit\MatcherInterface $plugin */
    $plugin = $this->manager
      ->createInstance('entity:node', [
      'settings' => [
        'bundles' => [
          'test1' => 'test1',
        ],
      ],
    ]);
    $matches = $plugin
      ->getMatches('Lorem');
    $this
      ->assertEqual(2, count($matches), 'Correct number of matches');
  }

  /**
   * Tests node matcher with include unpublished setting activated.
   */
  function testNodeMatcherWidthIncludeUnpublished() {

    /** @var \Drupal\linkit\MatcherInterface $plugin */
    $plugin = $this->manager
      ->createInstance('entity:node', [
      'settings' => [
        'include_unpublished' => TRUE,
      ],
    ]);

    // Test without permissions to see unpublished nodes.
    $matches = $plugin
      ->getMatches('Lorem');
    $this
      ->assertEqual(3, count($matches), 'Correct number of matches');
    $account = $this
      ->drupalCreateUser([
      'bypass node access',
    ]);
    $this
      ->drupalLogin($account);

    // Test with permissions to see unpublished nodes.
    $matches = $plugin
      ->getMatches('Lorem');
    $this
      ->assertEqual(4, count($matches), 'Correct number of matches');
  }

}

Classes

Namesort descending Description
NodeMatcherTest Tests node matcher.