function RecipeValidationTest::testRecipeValidation
Same name in other branches
- 10 core/tests/Drupal/KernelTests/Core/Recipe/RecipeValidationTest.php \Drupal\KernelTests\Core\Recipe\RecipeValidationTest::testRecipeValidation()
Tests the validation of recipe.yml file.
@dataProvider providerRecipeValidation
Parameters
string $recipe: The contents of the `recipe.yml` file.
string[][]|null $expected_violations: (Optional) The expected validation violations, keyed by property path. Each value should be an array of error messages expected for that property.
string|null $recipe_name: (optional) The name of the directory containing `recipe.yml`, or NULL to randomly generate one.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Recipe/ RecipeValidationTest.php, line 660
Class
- RecipeValidationTest
- @group Recipe @group #slow
Namespace
Drupal\KernelTests\Core\RecipeCode
public function testRecipeValidation(string $recipe, ?array $expected_violations, ?string $recipe_name = NULL) : void {
$dir = 'public://' . ($recipe_name ?? uniqid());
mkdir($dir);
file_put_contents($dir . '/recipe.yml', $recipe);
try {
Recipe::createFromDirectory($dir);
// If there was no error, we'd better not have been expecting any.
$this->assertNull($expected_violations, 'Validation errors were expected, but there were none.');
} catch (RecipeFileException $e) {
$this->assertIsArray($expected_violations, 'There were validation errors, but none were expected.');
$this->assertIsObject($e->violations);
$actual_violations = [];
/** @var \Symfony\Component\Validator\ConstraintViolationInterface $violation */
foreach ($e->violations as $violation) {
$property_path = $violation->getPropertyPath();
$actual_violations[$property_path][] = (string) $violation->getMessage();
}
ksort($actual_violations);
ksort($expected_violations);
$this->assertSame($expected_violations, $actual_violations);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.