Skip to main content

cranpose_services/
lib.rs

1//! Multiplatform service abstractions used by Cranpose applications.
2
3#[cfg(test)]
4use cranpose_core::{location_key, Composition, MemoryApplier};
5
6pub mod http;
7pub mod uri_handler;
8
9pub use http::{
10    default_http_client, local_http_client, HttpClient, HttpClientRef, HttpError, HttpFuture,
11};
12pub use uri_handler::{
13    default_uri_handler, local_uri_handler, ProvideUriHandler, UriHandler, UriHandlerError,
14    UriHandlerRef,
15};
16
17/// Convenience alias used in unit tests.
18#[cfg(test)]
19pub(crate) type TestComposition = Composition<MemoryApplier>;
20
21/// Build a composition with a simple in-memory applier and run the provided closure once.
22#[cfg(test)]
23pub(crate) fn run_test_composition(build: impl FnMut()) -> TestComposition {
24    let mut composition = Composition::new(MemoryApplier::new());
25    composition
26        .render(location_key(file!(), line!(), column!()), build)
27        .expect("initial render succeeds");
28    composition
29}