#[cfg(test)]
mod tests {
use metadata_gen::error::MetadataError;
use serde_json::Error as JsonError;
use serde_yml::Error as YamlError;
use std::io;
use toml::de::Error as TomlError;
#[test]
fn test_extraction_error() {
let error = MetadataError::ExtractionError {
message: "No valid front matter found.".to_string(),
};
assert_eq!(
error.to_string(),
"Failed to extract metadata: No valid front matter found."
);
}
#[test]
fn test_processing_error() {
let error = MetadataError::ProcessingError {
message: "Unknown field".to_string(),
};
assert_eq!(
error.to_string(),
"Failed to process metadata: Unknown field"
);
}
#[test]
fn test_missing_field_error() {
let error =
MetadataError::MissingFieldError("description".to_string());
assert_eq!(
error.to_string(),
"Missing required metadata field: description"
);
}
#[test]
fn test_date_parse_error() {
let error = MetadataError::DateParseError(
"Invalid date format".to_string(),
);
assert_eq!(
error.to_string(),
"Failed to parse date: Invalid date format"
);
}
#[test]
fn test_io_error() {
let io_error =
io::Error::new(io::ErrorKind::NotFound, "File not found");
let error = MetadataError::from(io_error);
assert_eq!(error.to_string(), "I/O error: File not found");
}
#[test]
fn test_yaml_error() {
let invalid_yaml = "invalid: yaml: data";
let yaml_error: Result<serde_yml::Value, YamlError> =
serde_yml::from_str(invalid_yaml);
if let Err(yaml_error) = yaml_error {
let error = MetadataError::from(yaml_error);
assert!(error.to_string().contains("YAML parsing error"));
} else {
panic!("Expected YAML parsing error, but got Ok");
}
}
#[test]
fn test_json_error() {
let invalid_json = "{ invalid json }"; let json_error: Result<serde_json::Value, JsonError> =
serde_json::from_str(invalid_json);
if let Err(json_error) = json_error {
let error = MetadataError::from(json_error);
assert!(
error.to_string().contains("JSON parsing error"),
"Error message should contain 'JSON parsing error'"
);
} else {
panic!("Expected JSON parsing error, but got Ok");
}
}
#[test]
fn test_toml_error() {
let invalid_toml = "invalid = toml"; let toml_error: Result<toml::Value, TomlError> =
toml::from_str(invalid_toml);
if let Err(toml_error) = toml_error {
let error = MetadataError::from(toml_error);
assert!(error.to_string().contains("TOML parsing error"));
} else {
panic!("Expected TOML parsing error, but got Ok");
}
}
}