use error_forge::ForgeError;
#[derive(Debug)]
pub enum DbError {
ConnectionFailed(String),
QueryFailed(String),
}
impl std::fmt::Display for DbError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::ConnectionFailed(msg) => write!(f, "Connection failed: {}", msg),
Self::QueryFailed(msg) => write!(f, "Query failed: {}", msg),
}
}
}
impl std::error::Error for DbError {}
#[test]
fn test_app_error() {
use error_forge::AppError;
let error = AppError::config("Missing configuration");
assert_eq!(error.kind(), "Config");
assert_eq!(error.status_code(), 500);
assert!(error.to_string().contains("Missing configuration"));
}
#[test]
fn test_console_theme() {
use error_forge::console_theme::ConsoleTheme;
use error_forge::AppError;
let error = AppError::other("Test error");
let theme = ConsoleTheme::default();
let formatted = theme.format_error(&error);
assert!(formatted.contains("Test error"));
assert!(formatted.contains("Retryable:"));
assert!(!formatted.contains("Caused by:"));
}