entity_print-8.x-2.2/tests/src/Kernel/NodePreviewTest.php

tests/src/Kernel/NodePreviewTest.php
<?php

namespace Drupal\Tests\entity_print\Kernel;

use Drupal\KernelTests\KernelTestBase;
use Drupal\node\Controller\NodePreviewController;
use Drupal\node\Entity\Node;
use Drupal\node\Entity\NodeType;

/**
 * Tests the entity print link in node preview.
 *
 * @group entity_print
 */
class NodePreviewTest extends KernelTestBase {

  /**
   * Collected errors.
   *
   * @var array
   */
  protected $errors = [];

  /**
   * {@inheritdoc}
   */
  protected static $modules = ['system', 'user', 'entity_print', 'node'];

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    set_error_handler([$this, 'errorHandler']);
  }

  /**
   * Tests that entity print link is not displayed in node preview.
   */
  public function testNodePreview() {
    $this->installConfig(['system', 'user']);
    $this->config('system.theme.global')
      ->set('features.node_user_picture', FALSE)->save();

    $this->installEntitySchema('user');
    $this->installEntitySchema('node');
    $this->container->get('router.builder')->rebuild();

    NodeType::create(['type' => 'whatever', 'name' => 'What?'])->save();
    // Deliberately we are not saving the node, so the node misses the ID.
    $node = Node::create(['type' => 'whatever', 'title' => 'Buzz']);
    $node->in_preview = TRUE;

    $controller = NodePreviewController::create($this->container);
    $build = $controller->view($node);
    /** @var \Drupal\Core\Render\RendererInterface $renderer */
    $renderer = $this->container->get('renderer');
    $renderer->renderInIsolation($build);
    $this->assertNotError("array_flip(): Can only flip STRING and INTEGER values!", E_WARNING);
  }

  /**
   * Asserts that a specific error has been triggered.
   *
   * @param string $errstr
   *   Error message.
   * @param int $errno
   *   Error level.
   */
  protected function assertNotError($errstr, $errno) {
    $status = FALSE;
    foreach ($this->errors as $error) {
      if ($error['errstr'] === $errstr && $error['errno'] === $errno) {
        $status = TRUE;
        break;
      }
    }
    $this->assertFalse($status, "Error: '$errstr' (level $errno) was not triggered.");
  }

  /**
   * Provides an error handler for purposes of this test.
   *
   * See set_error_handler() for parameter definitions.
   *
   * @see set_error_handler()
   */
  public function errorHandler($errno, $errstr, $errfile, $errline) {
    $this->errors[] = compact('errno', 'errstr', 'errfile', 'errline');
  }

  /**
   * {@inheritdoc}
   */
  protected function tearDown(): void {
    parent::tearDown();
    restore_error_handler();
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc