53 lines
1.6 KiB
Rust
53 lines
1.6 KiB
Rust
use async_nats::jetstream::{self, stream::Config as StreamConfig};
|
|
use runner::config::Settings;
|
|
use runner::stream::JetStreamClient;
|
|
use runner::types::{
|
|
CommandId, EffectName, EffectResultEnvelope, EffectResultType, MessageMetadata, TenantId,
|
|
};
|
|
use serde_json::json;
|
|
|
|
#[test]
|
|
#[ignore]
|
|
fn jetstream_connects_and_can_publish_effect_result() {
|
|
let Ok(nats_url) = std::env::var("RUNNER_TEST_NATS_URL") else {
|
|
return;
|
|
};
|
|
|
|
let rt = tokio::runtime::Runtime::new().unwrap();
|
|
rt.block_on(async move {
|
|
let client = async_nats::connect(&nats_url).await.unwrap();
|
|
let js = jetstream::new(client);
|
|
|
|
let _ = js
|
|
.get_or_create_stream(StreamConfig {
|
|
name: "AGGREGATE_EVENTS".to_string(),
|
|
subjects: vec!["tenant.*.aggregate.*.*".to_string()],
|
|
..Default::default()
|
|
})
|
|
.await
|
|
.unwrap();
|
|
|
|
let settings = Settings {
|
|
nats_url,
|
|
..Default::default()
|
|
};
|
|
|
|
let runner_js = JetStreamClient::connect(&settings).await.unwrap();
|
|
|
|
let result = EffectResultEnvelope {
|
|
tenant_id: TenantId::new("t1"),
|
|
command_id: CommandId::new("c1"),
|
|
effect_name: EffectName::new("noop"),
|
|
result_type: EffectResultType::Succeeded,
|
|
payload: json!({"ok": true}),
|
|
timestamp: chrono::Utc::now(),
|
|
metadata: MessageMetadata::default(),
|
|
};
|
|
|
|
runner_js
|
|
.publish_effect_result("tenant.t1.effect_result.noop.c1".to_string(), &result)
|
|
.await
|
|
.unwrap();
|
|
});
|
|
}
|