mirror of
https://gitlab.com/msrd0/gotham-restful.git
synced 2025-02-23 04:52:28 +00:00
add resource error integration test
This commit is contained in:
parent
bb945e2cc6
commit
ed1bbbd1fb
2 changed files with 37 additions and 1 deletions
|
@ -231,7 +231,7 @@ pub fn expand_resource_error(input: DeriveInput) -> Result<TokenStream> {
|
||||||
let variants = inum.variants.into_iter().map(process_variant).collect_to_result()?;
|
let variants = inum.variants.into_iter().map(process_variant).collect_to_result()?;
|
||||||
|
|
||||||
let display_impl = if variants.iter().any(|v| v.display.is_none()) {
|
let display_impl = if variants.iter().any(|v| v.display.is_none()) {
|
||||||
None
|
None // TODO issue warning if display is present on some but not all
|
||||||
} else {
|
} else {
|
||||||
let were = generics.params.iter().filter_map(|param| match param {
|
let were = generics.params.iter().filter_map(|param| match param {
|
||||||
GenericParam::Type(ty) => {
|
GenericParam::Type(ty) => {
|
||||||
|
|
36
tests/resource_error.rs
Normal file
36
tests/resource_error.rs
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
use gotham_restful::ResourceError;
|
||||||
|
|
||||||
|
#[derive(ResourceError)]
|
||||||
|
enum Error {
|
||||||
|
#[display("I/O Error: {0}")]
|
||||||
|
IoError(#[from] std::io::Error),
|
||||||
|
|
||||||
|
#[status(INTERNAL_SERVER_ERROR)]
|
||||||
|
#[display("Internal Server Error: {0}")]
|
||||||
|
InternalServerError(String)
|
||||||
|
}
|
||||||
|
|
||||||
|
mod resource_error {
|
||||||
|
use super::Error;
|
||||||
|
use gotham::hyper::StatusCode;
|
||||||
|
use gotham_restful::IntoResponseError;
|
||||||
|
use mime::APPLICATION_JSON;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn io_error() {
|
||||||
|
let err = Error::IoError(std::io::Error::last_os_error());
|
||||||
|
let res = err.into_response_error().unwrap();
|
||||||
|
assert_eq!(res.status, StatusCode::INTERNAL_SERVER_ERROR);
|
||||||
|
assert_eq!(res.mime, Some(APPLICATION_JSON));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn internal_server_error() {
|
||||||
|
let err = Error::InternalServerError("Brocken".to_owned());
|
||||||
|
assert_eq!(&format!("{}", err), "Internal Server Error: Brocken");
|
||||||
|
|
||||||
|
let res = err.into_response_error().unwrap();
|
||||||
|
assert_eq!(res.status, StatusCode::INTERNAL_SERVER_ERROR);
|
||||||
|
assert_eq!(res.mime, None); // TODO shouldn't this be a json error message?
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue