ComponentNodeVisitorTest.php

Same filename in this branch
  1. 11.x core/modules/sdc/tests/src/Kernel/ComponentNodeVisitorTest.php
Same filename and directory in other branches
  1. 10 core/modules/sdc/tests/src/Kernel/ComponentNodeVisitorTest.php
  2. 10 core/tests/Drupal/KernelTests/Components/ComponentNodeVisitorTest.php

Namespace

Drupal\KernelTests\Components

File

core/tests/Drupal/KernelTests/Components/ComponentNodeVisitorTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\KernelTests\Components;


/**
 * Tests the node visitor.
 *
 * @coversDefaultClass \Drupal\Core\Template\ComponentNodeVisitor
 * @group sdc
 */
class ComponentNodeVisitorTest extends ComponentKernelTestBase {
  
  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'system',
    'sdc_other_node_visitor',
  ];
  
  /**
   * {@inheritdoc}
   */
  protected static $themes = [
    'sdc_theme_test',
  ];
  const DEBUG_COMPONENT_ID_PATTERN = '/<!-- ([\\n\\s\\S]*) Component start: ([\\SA-Za-z+-:]+) -->/';
  const DEBUG_VARIANT_ID_PATTERN = '/<!-- [\\n\\s\\S]* with variant: "([\\SA-Za-z+-]+)" -->/';
  
  /**
   * Test that other visitors can modify Twig nodes.
   */
  public function testOtherVisitorsCanModifyTwigNodes() : void {
    $build = [
      '#type' => 'inline_template',
      '#template' => "{% embed('sdc_theme_test_base:my-card-no-schema') %}{% block card_body %}Foo bar{% endblock %}{% endembed %}",
    ];
    $this->renderComponentRenderArray($build);
    // If this is reached, the test passed.
    $this->assertTrue(TRUE);
  }
  
  /**
   * Test debug output for sdc components with component id and variant.
   */
  public function testDebugRendersComponentStartWithVariant() : void {
    // Enable twig theme debug to ensure that any
    // changes to theme debugging format force checking
    // that the auto paragraph filter continues to be applied
    // correctly.
    $twig = \Drupal::service('twig');
    $twig->enableDebug();
    $build = [
      '#type' => 'component',
      '#component' => 'sdc_theme_test:my-card',
      '#variant' => 'vertical',
      '#props' => [
        'header' => 'My header',
      ],
      '#slots' => [
        'card_body' => 'Foo bar',
      ],
    ];
    $crawler = $this->renderComponentRenderArray($build);
    $content = $crawler->html();
    $matches = [];
    \preg_match_all(self::DEBUG_COMPONENT_ID_PATTERN, $content, $matches);
    $this->assertSame($matches[2][0], 'sdc_theme_test:my-card');
    \preg_match_all(self::DEBUG_VARIANT_ID_PATTERN, $content, $matches);
    $this->assertSame($matches[1][0], 'vertical');
  }

}

Classes

Title Deprecated Summary
ComponentNodeVisitorTest Tests the node visitor.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.