smos_application/testkit/mod.rs
1//! Shared test doubles for `smos-application` unit tests (refactor slice R4).
2//!
3//! Classicist-style fakes: in-memory repositories plus scripted providers. The
4//! three use-case test modules (`finalize_session`, `extract_facts_from_response`,
5//! `import_opencode_session`) share these instead of maintaining three divergent
6//! copies. Adapter-layer doubles against the real `SurrealStore` / live NLI
7//! backend remain in `smos-adapters/tests/`.
8//!
9//! The module is unconditionally `pub` (not `#[cfg(test)]`) so that downstream
10//! crates' unit tests can reference `smos_application::testkit`; a `cfg(test)`
11//! gate would make the path vanish when the crate is compiled as a dependency.
12
13pub mod clock;
14pub mod facts;
15pub mod providers;
16pub mod sessions;
17
18pub use clock::{FixedClock, NoOpDelay};
19pub use facts::InMemoryFacts;
20pub use providers::{
21 ConstantEmbedder, RecordingEmbedder, ScriptedExtractor, ScriptedNliClassifier,
22};
23pub use sessions::InMemorySessions;
24
25#[cfg(test)]
26mod tests;