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;
}
}
