use aion_proto::WireError;
#[derive(Debug)]
pub enum AuthoringApiError {
TypeError(String),
Unavailable(WireError),
Wire(WireError),
}
impl AuthoringApiError {
#[must_use]
pub fn outcome(&self) -> &'static str {
match self {
Self::TypeError(_) => "type_error",
Self::Unavailable(_) => "unavailable",
Self::Wire(wire) => wire.code.as_str(),
}
}
}
#[cfg(test)]
mod tests {
use aion_proto::WireError;
use super::AuthoringApiError;
#[test]
fn outcome_labels_are_stable() {
assert_eq!(
AuthoringApiError::TypeError("error: bad".to_owned()).outcome(),
"type_error"
);
assert_eq!(
AuthoringApiError::Unavailable(WireError::backend("draining")).outcome(),
"unavailable"
);
assert_eq!(
AuthoringApiError::Wire(WireError::invalid_input("nope")).outcome(),
WireError::invalid_input("nope").code.as_str()
);
}
}