use serde_json::Value;
use super::MockTransport;
pub struct ScenarioBuilder {
session_id: String,
model: String,
messages: Vec<Value>,
}
impl ScenarioBuilder {
pub fn new(session_id: impl Into<String>) -> Self {
Self {
session_id: session_id.into(),
model: "gemini-2.5-pro".to_string(),
messages: Vec::new(),
}
}
pub fn with_model(mut self, model: impl Into<String>) -> Self {
self.model = model.into();
self
}
pub fn exchange(mut self, messages: Vec<Value>) -> Self {
self.messages.extend(messages);
self
}
pub fn session_id(&self) -> &str {
&self.session_id
}
pub fn model(&self) -> &str {
&self.model
}
pub fn build(self) -> MockTransport {
MockTransport::new(self.messages)
}
}