Skip to content

Commit 6c9be07

Browse files
committed
test(coverage): batch 19 — service/restart, memory/store/factories (tinyhumansai#530)
Add 7 new tests: - service/restart: default source/reason, whitespace trimming, empty-string defaults, RestartStatus serde, startup delay noop - memory/store/factories: effective_memory_backend_name, migration-disabled error All 4223 tests pass.
1 parent b62a07f commit 6c9be07

4 files changed

Lines changed: 79 additions & 2 deletions

File tree

‎Cargo.lock‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎app/src-tauri/Cargo.lock‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/openhuman/memory/store/factories.rs‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,29 @@ pub fn create_memory_for_migration(
9393
) -> anyhow::Result<Box<dyn Memory>> {
9494
anyhow::bail!("memory migration is disabled for the unified namespace memory core")
9595
}
96+
97+
#[cfg(test)]
98+
mod tests {
99+
use super::*;
100+
101+
#[test]
102+
fn effective_memory_backend_name_always_returns_namespace() {
103+
assert_eq!(effective_memory_backend_name("sqlite", None), "namespace");
104+
assert_eq!(effective_memory_backend_name("anything", None), "namespace");
105+
assert_eq!(effective_memory_backend_name("", None), "namespace");
106+
}
107+
108+
#[test]
109+
fn create_memory_for_migration_always_errors() {
110+
let tmp = tempfile::tempdir().unwrap();
111+
// Box<dyn Memory> doesn't impl Debug, so we can't use .unwrap_err().
112+
// Use match instead.
113+
match create_memory_for_migration("any", tmp.path()) {
114+
Ok(_) => panic!("expected error"),
115+
Err(e) => assert!(
116+
e.to_string().contains("migration is disabled"),
117+
"unexpected error: {e}"
118+
),
119+
}
120+
}
121+
}

‎src/openhuman/service/restart.rs‎

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,55 @@ mod tests {
205205

206206
handle.cancel();
207207
}
208+
209+
#[tokio::test]
210+
async fn service_restart_defaults_source_and_reason() {
211+
event_bus::init_global(event_bus::DEFAULT_CAPACITY);
212+
let outcome = service_restart(None, None)
213+
.await
214+
.expect("restart should succeed");
215+
assert!(outcome.value.accepted);
216+
assert_eq!(outcome.value.source, "jsonrpc");
217+
assert_eq!(outcome.value.reason, "service.restart");
218+
}
219+
220+
#[tokio::test]
221+
async fn service_restart_trims_whitespace() {
222+
event_bus::init_global(event_bus::DEFAULT_CAPACITY);
223+
let outcome = service_restart(Some(" ui ".into()), Some(" user request ".into()))
224+
.await
225+
.expect("restart should succeed");
226+
assert_eq!(outcome.value.source, "ui");
227+
assert_eq!(outcome.value.reason, "user request");
228+
}
229+
230+
#[tokio::test]
231+
async fn service_restart_empty_strings_use_defaults() {
232+
event_bus::init_global(event_bus::DEFAULT_CAPACITY);
233+
let outcome = service_restart(Some("".into()), Some(" ".into()))
234+
.await
235+
.expect("restart should succeed");
236+
assert_eq!(outcome.value.source, "jsonrpc");
237+
assert_eq!(outcome.value.reason, "service.restart");
238+
}
239+
240+
#[test]
241+
fn restart_status_serializes() {
242+
let status = RestartStatus {
243+
accepted: true,
244+
source: "test".into(),
245+
reason: "testing".into(),
246+
};
247+
let json = serde_json::to_string(&status).unwrap();
248+
assert!(json.contains("\"accepted\":true"));
249+
assert!(json.contains("\"source\":\"test\""));
250+
}
251+
252+
#[test]
253+
fn apply_startup_restart_delay_from_env_noop_when_unset() {
254+
// Ensure the env var is not set, then call — should not block
255+
let _prev = std::env::var(RESTART_DELAY_ENV).ok();
256+
std::env::remove_var(RESTART_DELAY_ENV);
257+
apply_startup_restart_delay_from_env(); // should return immediately
258+
}
208259
}

0 commit comments

Comments
 (0)