ateliers55/tests/unit/Grav/Common/Data/BlueprintTest.php

73 lines
1.7 KiB
PHP
Raw Normal View History

2024-03-26 13:31:26 +01:00
<?php
use Grav\Common\Config\Config;
use Grav\Common\Data\Blueprint;
use Grav\Common\Grav;
/**
* Class InstallCommandTest
*/
class BlueprintTest extends \Codeception\TestCase\Test
{
/**
*/
public function testValidateStrict(): void
{
$blueprint = $this->loadBlueprint('strict');
$blueprint->validate(['test' => 'string']);
}
/**
* @depends testValidateStrict
*/
public function testValidateStrictRequired(): void
{
$blueprint = $this->loadBlueprint('strict');
$this->expectException(\Grav\Common\Data\ValidationException::class);
$blueprint->validate([]);
}
/**
* @depends testValidateStrict
*/
public function testValidateStrictExtra(): void
{
$blueprint = $this->loadBlueprint('strict');
$blueprint->validate(['test' => 'string', 'wrong' => 'field']);
}
/**
* @depends testValidateStrict
*/
public function testValidateStrictExtraException(): void
{
$blueprint = $this->loadBlueprint('strict');
/** @var Config $config */
$config = Grav::instance()['config'];
$var = 'system.strict_mode.blueprint_strict_compat';
$config->set($var, false);
$this->expectException(\Grav\Common\Data\ValidationException::class);
$blueprint->validate(['test' => 'string', 'wrong' => 'field']);
$config->set($var, true);
}
/**
* @param string $filename
* @return Blueprint
*/
protected function loadBlueprint($filename): Blueprint
{
$blueprint = new Blueprint('strict');
$blueprint->setContext(dirname(__DIR__, 3). '/data/blueprints');
$blueprint->load()->init();
return $blueprint;
}
}