Skip to main content

forge_runtime/testing/
mod.rs

1//! Testing utilities for FORGE applications.
2//!
3//! Provides TestContext for integration tests, mocking utilities,
4//! and test cluster support.
5
6mod assertions;
7mod context;
8mod mock;
9
10pub use assertions::*;
11pub use context::{TestContext, TestContextBuilder};
12pub use mock::{MockHttp, MockHttpBuilder, MockRequest, MockResponse};
13
14use std::time::Duration;
15
16/// Default test timeout.
17pub const DEFAULT_TEST_TIMEOUT: Duration = Duration::from_secs(30);
18
19/// Default job test timeout.
20pub const DEFAULT_JOB_TIMEOUT: Duration = Duration::from_secs(10);
21
22/// Default workflow test timeout.
23pub const DEFAULT_WORKFLOW_TIMEOUT: Duration = Duration::from_secs(60);
24
25/// Test configuration.
26#[derive(Debug, Clone)]
27pub struct TestConfig {
28    /// Database URL for tests.
29    pub database_url: Option<String>,
30    /// Whether to run in parallel.
31    pub parallel: bool,
32    /// Maximum database connections.
33    pub max_connections: u32,
34    /// Default test timeout.
35    pub default_timeout: Duration,
36    /// Job timeout.
37    pub job_timeout: Duration,
38    /// Workflow timeout.
39    pub workflow_timeout: Duration,
40    /// Whether to enable logging.
41    pub logging: bool,
42}
43
44impl Default for TestConfig {
45    fn default() -> Self {
46        Self {
47            database_url: std::env::var("DATABASE_URL").ok(),
48            parallel: true,
49            max_connections: 50,
50            default_timeout: DEFAULT_TEST_TIMEOUT,
51            job_timeout: DEFAULT_JOB_TIMEOUT,
52            workflow_timeout: DEFAULT_WORKFLOW_TIMEOUT,
53            logging: false,
54        }
55    }
56}
57
58#[cfg(test)]
59mod tests {
60    use super::*;
61
62    #[test]
63    fn test_config_default() {
64        let config = TestConfig::default();
65        assert!(config.parallel);
66        assert_eq!(config.max_connections, 50);
67        assert_eq!(config.default_timeout, Duration::from_secs(30));
68    }
69}