function ValidSequenceKeysValidatorTest::testValidation

Tests the AllowedValues validation constraint validator.

For testing we define an integer with a set of allowed values.

Attributes

#[DataProvider('dataProvider')]

File

core/tests/Drupal/KernelTests/Core/Validation/ValidSequenceKeysValidatorTest.php, line 53

Class

ValidSequenceKeysValidatorTest
Tests ValidSequenceKeys validation constraint with both valid and invalid values.

Namespace

Drupal\KernelTests\Core\Validation

Code

public function testValidation(array $value, array $constraints, array $expected_violations, array $extra_constraints = []) : void {
  /** @var \Drupal\Core\TypedData\MapDataDefinition $definition */
  $definition = $this->typedData
    ->createDataDefinition('map');
  $definition->setPropertyDefinition('keys', $this->typedConfigManager
    ->createDataDefinition('sequence'));
  if (count($extra_constraints) > 0) {
    foreach ($extra_constraints as $name => $settings) {
      $definition->addConstraint($name, $settings);
    }
  }
  $definition->addConstraint('ValidSequenceKeys', [
    'constraints' => $constraints,
  ]);
  $typed_data = $this->typedConfigManager
    ->create($definition);
  $typed_data->setValue($value);
  $violations = $typed_data->validate();
  $violationMessages = [];
  foreach ($violations as $violation) {
    $violationMessages[] = (string) $violation->getMessage();
  }
  $this->assertEquals($expected_violations, $violationMessages, 'Validation did not pass.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.