sfc-8.x-1.3/tests/src/Kernel/ComponentCachingTest.php

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

namespace Drupal\Tests\sfc\Kernel;

use Drupal\Core\Render\RenderContext;
use Drupal\KernelTests\KernelTestBase;
use Drupal\node\Entity\Node;
use Drupal\node\Entity\NodeType;

/**
 * Tests that component caching works.
 *
 * @group sfc
 */
class ComponentCachingTest extends KernelTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'system',
    'node',
    'field',
    'user',
    'text',
    'sfc',
    'sfc_test',
  ];

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

    $this->installEntitySchema('user');
    $this->installEntitySchema('node');

    NodeType::create([
      'type' => 'article',
    ])->save();
    Node::create(['type' => 'article', 'title' => $this->randomString()])->save();
    Node::create(['type' => 'article', 'title' => $this->randomString()])->save();
    Node::create(['type' => 'article', 'title' => $this->randomString()])->save();
    Node::create(['type' => 'article', 'title' => $this->randomString()])->save();
  }

  /**
   * Tests that caching works.
   */
  public function testCache() {
    /** @var \Drupal\Core\Render\RendererInterface $renderer */
    $renderer = \Drupal::service('renderer');
    $element = [
      '#type' => 'inline_template',
      '#template' => '{% include "sfc--caching" %}',
    ];
    $context = new RenderContext();
    $output = (string) $renderer->executeInRenderContext($context, function () use ($element, $renderer) {
      return $renderer->render($element);
    });
    $this->assertStringContainsString("I'm cached!", $output);
    /** @var \Drupal\Core\Render\BubbleableMetadata $metadata */
    $metadata = $context->pop();
    $expected = [
      'my_tag',
      'node:1',
      'node:2',
      'node:3',
      'node:4',
      'other_tag',
    ];
    $real = $metadata->getCacheTags();
    sort($expected);
    sort($real);
    $this->assertEquals($expected, $real);
    $this->assertContains('url.query_args', $metadata->getCacheContexts());
    $this->assertEquals(123, $metadata->getCacheMaxAge());
  }

}

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

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