use reqwest::Method;
use rtest_derive::rtest;
use crate::{shop, WebserverTestError, WebserverTestError::*, WebserverWithItems, WebserverWithUsers};
#[rtest(module = "webshop::users")]
pub async fn user_requires_name(server: &WebserverWithItems) -> Result<(), WebserverTestError> {
let res = server
.webserver
.req(Method::POST, "users")
.json(&1337)
.send()
.await
.map_err(Reqwest)?;
assert_eq!(422, res.status());
Ok(())
}
#[rtest(module = "webshop::users")]
pub async fn cant_get_users(server: &WebserverWithItems) -> Result<(), WebserverTestError> {
let res = server
.webserver
.req(Method::GET, "users")
.send()
.await
.map_err(Reqwest)?;
assert_eq!(405, res.status());
Ok(())
}
#[rtest(module = "webshop::users")]
pub async fn add_users(server: WebserverWithItems) -> Result<WebserverWithUsers, WebserverTestError> {
let res = server
.webserver
.req(Method::POST, "users")
.json("Ava")
.send()
.await
.map_err(Reqwest)?;
let ava_id = res.json::<shop::UserId>().await.map_err(Response)?;
let res = server
.webserver
.req(Method::POST, "users")
.json("John")
.send()
.await
.map_err(Reqwest)?;
let john_id = res.json::<shop::UserId>().await.map_err(Response)?;
assert_eq!(john_id, ava_id + 1);
Ok(WebserverWithUsers {
webserver: server.webserver,
book_id: server.book_id,
cookie_id: server.cookie_id,
ava_id,
john_id,
})
}