#[path = "../common/mod.rs"]
mod common;
use brain_db_sdk::EncodeBuilder;
#[tokio::test]
async fn encode_returns_a_durable_id() {
let Some(it) = common::It::from_env() else {
return common::skip("encode_returns_a_durable_id");
};
let (client, _agent) = it.connect_fresh().await;
let req = EncodeBuilder::new("The Eiffel Tower is in Paris.").build();
let resp = client.encode(&req).await.expect("encode");
assert!(resp.lsn > 0, "encode assigns a durable LSN");
assert!(resp.salience >= 0.0, "salience is populated");
client.close().await.expect("close");
}
#[tokio::test]
async fn encode_carries_context_and_event_time() {
let Some(it) = common::It::from_env() else {
return common::skip("encode_carries_context_and_event_time");
};
let (client, _agent) = it.connect_fresh().await;
let req = EncodeBuilder::new("We shipped v1 on launch day.")
.session(42)
.occurred_at(1_700_000_000_000_000_000)
.build();
let resp = client.encode(&req).await.expect("encode with params");
assert!(resp.lsn > 0);
client.close().await.expect("close");
}
#[tokio::test]
async fn encode_is_idempotent_on_identical_text() {
let Some(it) = common::It::from_env() else {
return common::skip("encode_is_idempotent_on_identical_text");
};
let (client, _agent) = it.connect_fresh().await;
let req = EncodeBuilder::new("A fact I might repeat verbatim.").build();
let first = client.encode(&req).await.expect("first encode");
let second = client.encode(&req).await.expect("second encode");
assert!(first.lsn > 0 && second.lsn > 0, "both encodes durable");
client.close().await.expect("close");
}