#[cfg(feature = "mock")]
mod mock_test {
use clicktype_batch::{GenericBatcher, BatchConfig};
use clicktype_transport::MockClient;
use clicktype_macros::ClickTable;
use std::time::Duration;
#[derive(ClickTable, Clone)]
#[click_table(name = "test_events")]
pub struct TestEvent {
#[click_column(primary_key)]
pub id: u64,
pub info: String,
}
#[tokio::test]
async fn test_mock_ingestion() {
let mock_client = MockClient::new();
let config = BatchConfig {
max_rows: 10,
max_wait: Duration::from_millis(100),
..Default::default()
};
let batcher = GenericBatcher::<TestEvent, MockClient>::new(mock_client.clone(), config);
let (handle, worker) = batcher.spawn();
for i in 0..15 {
handle.insert(TestEvent {
id: i,
info: format!("Event {}", i),
}).await.unwrap();
}
handle.close().await.unwrap();
worker.await.unwrap();
assert!(mock_client.was_schema_validated("test_events"));
assert_eq!(mock_client.inserted_count(), 2);
println!("✓ Mock test passed: 15 rows inserted in 2 batches verified.");
}
}