use enum_status_code::{AsStatusCode, status_code};
use http::StatusCode;
#[test]
pub fn test_non_default() {
#[status_code]
pub enum Error {
#[code(StatusCode::NOT_FOUND)]
NotFound,
#[code(StatusCode::INTERNAL_SERVER_ERROR)]
InternalServerError,
}
assert_eq!(Error::NotFound.as_status_code(), StatusCode::NOT_FOUND);
assert_eq!(
Error::InternalServerError.as_status_code(),
StatusCode::INTERNAL_SERVER_ERROR
);
}
#[test]
pub fn test_default() {
#[status_code(StatusCode::INTERNAL_SERVER_ERROR)]
pub enum Error {
#[code(StatusCode::NOT_FOUND)]
NotFound,
InternalServerError,
}
assert_eq!(Error::NotFound.as_status_code(), StatusCode::NOT_FOUND);
assert_eq!(
Error::InternalServerError.as_status_code(),
StatusCode::INTERNAL_SERVER_ERROR
);
}
#[cfg(test)]
fn get_status_code(_: &TestCallError) -> StatusCode {
return StatusCode::NOT_FOUND;
}
#[status_code]
pub enum TestCallError {
#[code(get_status_code(self))]
NotFound,
}
#[test]
pub fn test_call() {
assert_eq!(
TestCallError::NotFound.as_status_code(),
StatusCode::NOT_FOUND
);
}