KeiSeiKit-1.0/_primitives/_rust/kei-llm-ollama/tests/client_generate_nonstream.rs
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

38 lines
1.1 KiB
Rust

//! Non-streaming `/api/generate` against wiremock.
use kei_llm_ollama::{Client, GenerateReq};
use wiremock::matchers::{method, path};
use wiremock::{Mock, MockServer, ResponseTemplate};
fn fixture() -> serde_json::Value {
serde_json::json!({
"model": "qwen3:4b",
"created_at": "2025-04-01T00:00:00Z",
"response": "Hello!",
"done": true,
"eval_count": 5,
"eval_duration": 9999
})
}
#[tokio::test]
async fn generate_decodes_response() {
let server = MockServer::start().await;
Mock::given(method("POST"))
.and(path("/api/generate"))
.respond_with(ResponseTemplate::new(200).set_body_json(fixture()))
.mount(&server)
.await;
let client = Client::new(server.uri());
let req = GenerateReq {
model: "qwen3:4b".into(),
prompt: "hi".into(),
stream: false,
options: None,
};
let resp = client.generate(&req).await.expect("generate ok");
assert!(resp.done);
assert_eq!(resp.response, "Hello!");
assert_eq!(resp.eval_count, Some(5));
}