$this->
assertEquals(0,
$violations->
count(), 'Validation passed for correct value.'
);
// Test the validation when an invalid value is passed.
$typed_data =
$this->typedData->
create($definition,
['key' => 4
]);
$violations =
$typed_data->
validate();
$this->
assertEquals(1,
$violations->
count(), 'Validation failed for incorrect value.'
);
// Make sure the information provided by a violation is correct.
$violation =
$violations[0
];
$this->
assertEquals('The value you selected is not a valid choice.',
$violation->
getMessage(), 'The message for invalid value is correct.'
);
$this->
assertEquals($typed_data,
$violation->
getRoot(), 'Violation root is correct.'
);
$this->
assertEquals(4,
$violation->
getInvalidValue(), 'The invalid value is set correctly in the violation.'
);
// Test using the constraint with a map without the specified key. This
// should be ignored as long as there is no NotNull or NotBlank constraint.
$typed_data =
$this->typedData->
create($definition,
['foo' => 'bar'
]);
$violations =
$typed_data->
validate();
$this->
assertEquals(0,
$violations->
count(), 'Constraint on non-existing key is ignored.'
);
$definition = MapDataDefinition::
create() ->
setPropertyDefinition('key', DataDefinition::
create('integer'
)) ->
addConstraint('ComplexData',
[ 'key' =>
[