use crate::tests::stream_push::stream_push_test;
use super::*;
stream_push_test!(
single_chunk_unchanged,
vec![AgentCompletionChunk {
id: "acc-1".into(),
created: 100,
messages: vec![],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
}],
AgentCompletionChunk {
id: "acc-1".into(),
created: 100,
messages: vec![],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
}
);
stream_push_test!(
content_appended_across_two_chunks,
vec![
AgentCompletionChunk {
id: "acc-2".into(),
created: 100,
messages: vec![MessageChunk::Assistant(AssistantResponseChunk {
role: crate::agent::completions::response::AssistantRole::Assistant,
index: 0,
created: 0,
agent: String::new(),
model: "openai/gpt-4o".into(),
upstream_id: String::new(),
reasoning: None,
tool_calls: None,
content: Some(crate::agent::completions::message::RichContent::Text(
"Hello".into(),
)),
refusal: None,
finish_reason: None,
logprobs: None,
service_tier: None,
system_fingerprint: None,
provider: None,
usage: None,
})],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
},
AgentCompletionChunk {
id: "acc-2".into(),
created: 100,
messages: vec![MessageChunk::Assistant(AssistantResponseChunk {
role: crate::agent::completions::response::AssistantRole::Assistant,
index: 0,
created: 0,
agent: String::new(),
model: "openai/gpt-4o".into(),
upstream_id: String::new(),
reasoning: None,
tool_calls: None,
content: Some(crate::agent::completions::message::RichContent::Text(
" world".into(),
)),
refusal: None,
finish_reason: None,
logprobs: None,
service_tier: None,
system_fingerprint: None,
provider: None,
usage: None,
})],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
},
],
AgentCompletionChunk {
id: "acc-2".into(),
created: 100,
messages: vec![MessageChunk::Assistant(AssistantResponseChunk {
role: crate::agent::completions::response::AssistantRole::Assistant,
index: 0,
created: 0,
agent: String::new(),
model: "openai/gpt-4o".into(),
upstream_id: String::new(),
reasoning: None,
tool_calls: None,
content: Some(crate::agent::completions::message::RichContent::Text(
"Hello world".into(),
)),
refusal: None,
finish_reason: None,
logprobs: None,
service_tier: None,
system_fingerprint: None,
provider: None,
usage: None,
})],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
}
);
stream_push_test!(
content_appended_across_three_chunks,
vec![
AgentCompletionChunk {
id: "acc-3".into(),
created: 200,
messages: vec![MessageChunk::Assistant(AssistantResponseChunk {
role: crate::agent::completions::response::AssistantRole::Assistant,
index: 0,
created: 0,
agent: String::new(),
model: "google/gemini-3.0-pro".into(),
upstream_id: String::new(),
reasoning: None,
tool_calls: None,
content: Some(crate::agent::completions::message::RichContent::Text(
"A".into(),
)),
refusal: None,
finish_reason: None,
logprobs: None,
service_tier: None,
system_fingerprint: None,
provider: None,
usage: None,
})],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
},
AgentCompletionChunk {
id: "acc-3".into(),
created: 200,
messages: vec![MessageChunk::Assistant(AssistantResponseChunk {
role: crate::agent::completions::response::AssistantRole::Assistant,
index: 0,
created: 0,
agent: String::new(),
model: "google/gemini-3.0-pro".into(),
upstream_id: String::new(),
reasoning: None,
tool_calls: None,
content: Some(crate::agent::completions::message::RichContent::Text(
"B".into(),
)),
refusal: None,
finish_reason: None,
logprobs: None,
service_tier: None,
system_fingerprint: None,
provider: None,
usage: None,
})],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
},
AgentCompletionChunk {
id: "acc-3".into(),
created: 200,
messages: vec![MessageChunk::Assistant(AssistantResponseChunk {
role: crate::agent::completions::response::AssistantRole::Assistant,
index: 0,
created: 0,
agent: String::new(),
model: "google/gemini-3.0-pro".into(),
upstream_id: String::new(),
reasoning: None,
tool_calls: None,
content: Some(crate::agent::completions::message::RichContent::Text(
"C".into(),
)),
refusal: None,
finish_reason: None,
logprobs: None,
service_tier: None,
system_fingerprint: None,
provider: None,
usage: None,
})],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
},
],
AgentCompletionChunk {
id: "acc-3".into(),
created: 200,
messages: vec![MessageChunk::Assistant(AssistantResponseChunk {
role: crate::agent::completions::response::AssistantRole::Assistant,
index: 0,
created: 0,
agent: String::new(),
model: "google/gemini-3.0-pro".into(),
upstream_id: String::new(),
reasoning: None,
tool_calls: None,
content: Some(crate::agent::completions::message::RichContent::Text(
"ABC".into(),
)),
refusal: None,
finish_reason: None,
logprobs: None,
service_tier: None,
system_fingerprint: None,
provider: None,
usage: None,
})],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
}
);
stream_push_test!(
usage_set_from_later_chunk,
vec![
AgentCompletionChunk {
id: "acc-4".into(),
created: 100,
messages: vec![],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
},
AgentCompletionChunk {
id: "acc-4".into(),
created: 100,
messages: vec![],
object: Object::AgentCompletionChunk,
usage: Some(crate::agent::completions::response::Usage {
prompt_tokens: 10,
completion_tokens: 5,
total_tokens: 15,
completion_tokens_details: None,
prompt_tokens_details: None,
cost: rust_decimal::Decimal::ZERO,
cost_details: None,
total_cost: rust_decimal::Decimal::ZERO,
}),
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
},
],
AgentCompletionChunk {
id: "acc-4".into(),
created: 100,
messages: vec![],
object: Object::AgentCompletionChunk,
usage: Some(crate::agent::completions::response::Usage {
prompt_tokens: 10,
completion_tokens: 5,
total_tokens: 15,
completion_tokens_details: None,
prompt_tokens_details: None,
cost: rust_decimal::Decimal::ZERO,
cost_details: None,
total_cost: rust_decimal::Decimal::ZERO,
}),
upstream: crate::agent::Upstream::Openrouter,
error: None,
continuation: None,
}
);
stream_push_test!(
last_error_kept,
vec![
AgentCompletionChunk {
id: "acc-5".into(),
created: 100,
messages: vec![],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: Some(crate::error::ResponseError {
code: 500,
message: serde_json::json!("first"),
}),
continuation: None,
},
AgentCompletionChunk {
id: "acc-5".into(),
created: 100,
messages: vec![],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: Some(crate::error::ResponseError {
code: 502,
message: serde_json::json!("second"),
}),
continuation: None,
},
],
AgentCompletionChunk {
id: "acc-5".into(),
created: 100,
messages: vec![],
object: Object::AgentCompletionChunk,
usage: None,
upstream: crate::agent::Upstream::Openrouter,
error: Some(crate::error::ResponseError {
code: 502,
message: serde_json::json!("second"),
}),
continuation: None,
}
);