class StringEqualsConcatenatedValuesConstraintValidatorTest
Tests the StringEqualsConcatenatedValues validator.
Attributes
#[Group('Validation')]
#[CoversClass(StringEqualsConcatenatedValuesConstraint::class)]
#[CoversClass(StringEqualsConcatenatedValuesConstraintValidator::class)]
#[RunTestsInSeparateProcesses]
Hierarchy
- class \Drupal\KernelTests\KernelTestBase implements \Drupal\Core\DependencyInjection\ServiceProviderInterface uses \Drupal\KernelTests\AssertContentTrait, \Drupal\Tests\RandomGeneratorTrait, \Drupal\Tests\ConfigTestTrait, \Drupal\Tests\ExtensionListTestTrait, \Drupal\Tests\TestRequirementsTrait, \Drupal\Tests\PhpUnitCompatibilityTrait, \Prophecy\PhpUnit\ProphecyTrait, \Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\KernelTests\Core\Validation\StringEqualsConcatenatedValuesConstraintValidatorTest extends \Drupal\KernelTests\KernelTestBase
Expanded class hierarchy of StringEqualsConcatenatedValuesConstraintValidatorTest
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Validation/ StringEqualsConcatenatedValuesConstraintValidatorTest.php, line 18
Namespace
Drupal\KernelTests\Core\ValidationView source
class StringEqualsConcatenatedValuesConstraintValidatorTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'config_test',
];
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->installConfig('config_test');
}
/**
* Tests basic validation of concatenated config values.
*
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\StringEqualsConcatenatedValuesConstraint
*/
public function testStringEqualsConcatenatedValuesConstraint() : void {
/** @var \Drupal\Core\Config\TypedConfigManagerInterface $typed_config_manager */
$typed_config_manager = \Drupal::service('config.typed');
/** @var \Drupal\Core\Config\Schema\TypedConfigInterface $typed_config */
$typed_config = $typed_config_manager->get('config_test.validation');
// Test valid names.
$typed_config->get('string_concat_values')
->setValue('localhost.llama');
$this->assertCount(0, $typed_config->validate());
// Test invalid names.
$typed_config->get('string_concat_values')
->setValue('drupal.kitten');
$constraintViolationList = $typed_config->validate();
$this->assertCount(1, $constraintViolationList);
$this->assertSame("Expected 'localhost.llama', not 'drupal.kitten'. Format: '<%parent.string_concat_value_1>.<%parent.string_concat_value_2>'.", (string) $constraintViolationList->get(0)
->getMessage());
}
/**
* Tests that validation fails if the schema references missing properties.
*
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\StringEqualsConcatenatedValuesConstraint
*/
public function testInvalidReferenceToProperties() : void {
$this->expectExceptionMessage('Schema errors for config_test.validation with the following errors: 0 [string_concat_values_invalid] This validation constraint is configured to inspect the properties <em class="placeholder">%parent.invalid, %parent.reference</em>, but some do not exist: <em class="placeholder">%parent.invalid, %parent.reference</em>.');
/** @var \Drupal\Core\Config\Config $editable_config */
$editable_config = \Drupal::configFactory()->getEditable('config_test.validation');
$editable_config->set('string_concat_values_invalid', 'test');
$editable_config->save();
}
/**
* Tests that validation fails if reserved characters are not replaced.
*
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\StringEqualsConcatenatedValuesConstraint
*/
public function testReservedCharacters() : void {
/** @var \Drupal\Core\Config\Config $editable_config */
$editable_config = \Drupal::configFactory()->getEditable('config_test.validation');
$editable_config->set('string_concat_value_1', 'test|||value');
$editable_config->set('string_concat_values', 'test>>>value.llama');
$editable_config->save();
$this->expectExceptionMessage('Schema errors for config_test.validation with the following errors: 0 [string_concat_values] Expected 'test&gt;&gt;&gt;value.llama', not 'test|||value.llama'. Format: '&lt;%parent.string_concat_value_1&gt;.&lt;%parent.string_concat_value_2&gt;'.');
$editable_config->set('string_concat_values', 'test|||value.llama');
$editable_config->save();
}
/**
* Tests concatenation of basic schema value types.
*
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\StringEqualsConcatenatedValuesConstraint
*/
public function testValueTypes($first_value, $second_value, $result, $invalid_result) : void {
$editable_config = \Drupal::configFactory()->getEditable('config_test.validation');
$editable_config->set('string_concat_value_1', $first_value);
$editable_config->set('string_concat_value_2', $second_value);
$editable_config->set('string_concat_values', $result);
$editable_config->save();
$this->expectExceptionMessage("Schema errors for config_test.validation with the following errors: 0 [string_concat_values] Expected '{$result}', not '{$invalid_result}'. Format: '&lt;%parent.string_concat_value_1&gt;.&lt;%parent.string_concat_value_2&gt;'");
$editable_config->set('string_concat_values', $invalid_result);
$editable_config->save();
}
/**
* Data provider for testValueTypes().
*/
public static function valueTypesProvider() : array {
return [
[
'part1',
'part2',
'part1.part2',
'part1-part2',
],
[
123,
456,
'123.456',
'123-456',
],
[
TRUE,
FALSE,
'1.',
'1-0',
],
];
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.