KeiSeiKit-1.0/_primitives/_rust/kei-social-store/tests/integration.rs
Parfii-bot a4e667de10 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

68 lines
2.2 KiB
Rust

use kei_social_store::graph::relationship_graph;
use kei_social_store::interactions::{interactions_for, log_interaction, Interaction};
use kei_social_store::people::{add_org, add_person, get_person, Organization, Person};
use kei_social_store::search::search_people;
use kei_social_store::Store;
fn mk() -> Store { Store::open_memory().unwrap() }
#[test]
fn people_crud() {
let s = mk();
let id = add_person(&s, &Person {
name: "Alice".into(), email: "alice@example.com".into(),
..Default::default()
}).unwrap();
let p = get_person(&s, id).unwrap().unwrap();
assert_eq!(p.name, "Alice");
}
#[test]
fn orgs_idempotent() {
let s = mk();
let a = add_org(&s, &Organization { name: "Acme".into(), ..Default::default() }).unwrap();
let b = add_org(&s, &Organization { name: "Acme".into(), ..Default::default() }).unwrap();
assert_eq!(a, b);
}
#[test]
fn interactions_tracked() {
let s = mk();
let p = add_person(&s, &Person { name: "Bob".into(), ..Default::default() }).unwrap();
log_interaction(&s, &Interaction {
person_id: p, interaction_type: "email".into(),
content: "hi".into(), channel: "gmail".into(),
..Default::default()
}).unwrap();
let hist = interactions_for(&s, p).unwrap();
assert_eq!(hist.len(), 1);
assert_eq!(hist[0].interaction_type, "email");
}
#[test]
fn search_finds_person() {
let s = mk();
add_person(&s, &Person {
name: "Carol Chang".into(), bio: "rust async".into(),
..Default::default()
}).unwrap();
let hits = search_people(&s, "rust", 10).unwrap();
assert_eq!(hits.len(), 1);
assert_eq!(hits[0].name, "Carol Chang");
}
#[test]
fn relationship_graph_groups() {
let s = mk();
let a = add_person(&s, &Person { name: "A".into(), ..Default::default() }).unwrap();
let b = add_person(&s, &Person { name: "B".into(), ..Default::default() }).unwrap();
for _ in 0..3 {
log_interaction(&s, &Interaction {
person_id: a, target_id: b, interaction_type: "msg".into(),
channel: "slack".into(), ..Default::default()
}).unwrap();
}
let pairs = relationship_graph(&s).unwrap();
assert_eq!(pairs.len(), 1);
assert_eq!(pairs[0].count, 3);
}