validate method

ValidationResult validate(
  1. List<FieldDefinition> fieldDefinitions
)

Validates the resource based on the provided fieldDefinitions.

Implementation

ValidationResult validate(
  // ignore: strict_raw_type
  List<FieldDefinition> fieldDefinitions,
) {
  final errorMessages = <ValidationError>[];

  for (final fieldDefinition in fieldDefinitions) {
    final validationResult =
        fieldDefinition.validate(json[fieldDefinition.name]);
    if (validationResult.isNotEmpty) {
      errorMessages.addAll(validationResult);
    }
  }

  final allowedFields = <String>{
    ...fieldDefinitions.map((field) => field.name),
    'resourceType',
    'extension',
  };

  // ignore: unused_local_variable
  final superfluousFields = json.fields
      .toSet()
      .difference(allowedFields)
      .map(
        (name) => name,
      )
      .toList();

  errorMessages.addAll(
    superfluousFields.map(
      (name) => ValidationError(
        message: 'Field $name is not allowed',
        field: name,
      ),
    ),
  );

  return ValidationResult(errorMessages);
}