api: add unit tests for rest utils
This commit is contained in:
parent
284ad260a4
commit
b9fdcb96d7
|
@ -32,3 +32,56 @@ impl From<Context> for domain::Context {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_create_default_context() {
|
||||||
|
let query_params = vec![];
|
||||||
|
let rest_ctx = Context::from(&query_params);
|
||||||
|
|
||||||
|
assert_eq!(rest_ctx.lang, None);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_get_lang_from_query_params() {
|
||||||
|
let query_params = vec![("lang", "rus")];
|
||||||
|
let rest_ctx = Context::from(&query_params);
|
||||||
|
|
||||||
|
assert_eq!(rest_ctx.lang, Some(String::from("rus")));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_create_domain_context_from_rest() {
|
||||||
|
let rest_ctx = Context {
|
||||||
|
lang: Some(String::from("rus")),
|
||||||
|
};
|
||||||
|
let ctx = domain::Context::from(rest_ctx);
|
||||||
|
|
||||||
|
assert_eq!(ctx.lang, domain::Lang::Rus);
|
||||||
|
|
||||||
|
let rest_ctx = Context {
|
||||||
|
lang: Some(String::from("eng")),
|
||||||
|
};
|
||||||
|
let ctx = domain::Context::from(rest_ctx);
|
||||||
|
|
||||||
|
assert_eq!(ctx.lang, domain::Lang::Eng);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_fallback_lang_to_default_if_lang_unsupported_or_missed() {
|
||||||
|
let rest_ctx = Context::default();
|
||||||
|
let ctx = domain::Context::from(rest_ctx);
|
||||||
|
|
||||||
|
assert_eq!(ctx.lang, domain::Lang::Rus);
|
||||||
|
|
||||||
|
let rest_ctx = Context {
|
||||||
|
lang: Some(String::from("unsupported")),
|
||||||
|
};
|
||||||
|
let ctx = domain::Context::from(rest_ctx);
|
||||||
|
|
||||||
|
assert_eq!(ctx.lang, domain::Lang::Rus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -50,3 +50,46 @@ fn extract_query_params(query: Option<&str>) -> Vec<QueryParam> {
|
||||||
})
|
})
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_extract_path_segments() {
|
||||||
|
let path = "/hello/world";
|
||||||
|
let segments = extract_path_segments(path);
|
||||||
|
|
||||||
|
assert_eq!(segments, ["hello", "world"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_extract_tralling_slash_as_empty_segment() {
|
||||||
|
let path = "/hello/world/";
|
||||||
|
let segments = extract_path_segments(path);
|
||||||
|
|
||||||
|
assert_eq!(segments, ["hello", "world", ""]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_extract_query_params() {
|
||||||
|
let query_params = Some("lang=rus&keys=apple&keys=banana");
|
||||||
|
let params = extract_query_params(query_params);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
params[..],
|
||||||
|
[("lang", "rus"), ("keys", "apple"), ("keys", "banana")]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_parse_whole_url() {
|
||||||
|
let url = Url::parse("/api/ingredients?lang=rus&keys=apple&keys=banana");
|
||||||
|
|
||||||
|
assert_eq!(url.path_segments(), ["api", "ingredients"]);
|
||||||
|
assert_eq!(
|
||||||
|
url.query_params()[..],
|
||||||
|
[("lang", "rus"), ("keys", "apple"), ("keys", "banana")]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue