devel_wizard-2.x-dev/tests/src/Traits/TemplateTrait.php

tests/src/Traits/TemplateTrait.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\devel_wizard\Traits;

use Symfony\Component\Filesystem\Path;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Yaml\Yaml;

trait TemplateTrait {

  protected string $templateNamespace = 'devel_wizard';

  protected function collectTemplateCases(string $templateName): array {
    $cases = [];

    $fileName = "{$this->fixturesDir}/templates/$templateName.yml";
    if (file_exists($fileName)) {
      $cases += Yaml::parseFile($fileName);
    }

    $casesDir = "{$this->fixturesDir}/templates/$templateName";
    if (is_dir($casesDir)) {
      $dirs = (new Finder())
        ->in($casesDir)
        ->directories()
        ->depth(0);
      foreach ($dirs as $dir) {
        $extension = Path::getExtension($templateName);
        $caseDir = $dir->getPathname();
        $cases[$dir->getFilename()] = [
          'expected' => file_get_contents("$caseDir/expected.$extension"),
          'context' => Yaml::parseFile("$caseDir/context.yml"),
        ];
      }

      $files = (new Finder())
        ->in($casesDir)
        ->files()
        ->depth(0)
        ->name('*.expected.txt');
      /** @var \Symfony\Component\Finder\SplFileInfo $file */
      foreach ($files as $file) {
        $caseName = $file->getBasename('.expected.txt');
        $cases["$templateName/$caseName"] = [
          'expected' => file_get_contents($file->getPathname()),
          'template' => "@{$this->templateNamespace}/$templateName",
          'context' => Yaml::parseFile($file->getPath() . "/$caseName.context.yml"),
        ];
      }
    }

    return $cases;
  }

}

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

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