22 lines
697 B
Rust
22 lines
697 B
Rust
//! Shared test utilities for HTTP handler tests.
|
|
//!
|
|
//! Import with `use crate::http::test_helpers::{make_api, test_ctx};`
|
|
|
|
use crate::http::context::AppContext;
|
|
use std::path::Path;
|
|
use std::sync::Arc;
|
|
use tempfile::TempDir;
|
|
|
|
/// Build an [`AppContext`] rooted at `dir` for use in tests.
|
|
pub(crate) fn test_ctx(dir: &Path) -> AppContext {
|
|
AppContext::new_test(dir.to_path_buf())
|
|
}
|
|
|
|
/// Build an API struct rooted in `dir` for use in tests.
|
|
///
|
|
/// Requires the API type to implement `From<Arc<AppContext>>`. Add a
|
|
/// `#[cfg(test)]` impl block to each API struct to opt in.
|
|
pub(crate) fn make_api<T: From<Arc<AppContext>>>(dir: &TempDir) -> T {
|
|
Arc::new(test_ctx(dir.path())).into()
|
|
}
|