use serde::Serialize;
use crate::datatables::DataTablesResponse;
use crate::session::{COOKIE_DOMAIN, Cookie, FORMS_AUTH_COOKIE_NAME, SESSION_COOKIE_NAME, Session};
pub fn read_fixture(name: &str) -> String {
let path = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.join("tests")
.join("fixtures")
.join(name);
std::fs::read_to_string(&path)
.unwrap_or_else(|err| panic!("failed to load fixture {}: {err}", path.display()))
}
pub fn test_session() -> Session {
Session::new(
vec![
Cookie::new(SESSION_COOKIE_NAME, "session-123", COOKIE_DOMAIN),
Cookie::new(FORMS_AUTH_COOKIE_NAME, "auth-456", COOKIE_DOMAIN),
],
"xsrf-789",
)
}
#[cfg(test)]
pub fn test_client(server: &mockito::Server) -> crate::client::Client {
use crate::client::{Client, ClientConfig};
Client::with_config(
test_session(),
ClientConfig {
base_url: server.url(),
..ClientConfig::default()
},
)
.unwrap()
}
pub fn datatables_body<T: Serialize>(data: Vec<T>) -> String {
serde_json::to_string(&DataTablesResponse {
draw: 1,
records_total: data.len() as i32,
records_filtered: data.len() as i32,
data,
error: None,
})
.unwrap()
}