Skip to main content

ruest/testing/
mod.rs

1//! Testing utilities for RUEST.
2
3use crate::core::{bootstrap, Module, RuestApplication};
4use crate::di::{Container, DiError};
5use crate::http::axum::Router;
6
7/// Factory for integration tests.
8pub struct TestFactory;
9
10impl TestFactory {
11    pub fn create<M: Module>(root: M) -> Result<RuestApplication, crate::core::CoreError> {
12        bootstrap(root)
13    }
14
15    /// Monte les routes via la fonction `wire_routes` générée par `#[module]`.
16    pub fn create_with_router<M, W>(
17        root: M,
18        wire: W,
19    ) -> Result<(RuestApplication, Router), crate::core::CoreError>
20    where
21        M: Module,
22        W: FnOnce(Router, &Container) -> Result<Router, DiError>,
23    {
24        let app = bootstrap(root)?;
25        let router = wire(Router::new(), &app.container)
26            .map_err(|e| crate::core::CoreError::ModuleConfig(e.to_string()))?;
27        Ok((app, router))
28    }
29}