feat: add main features
Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
This commit is contained in:
53
crates/infrastructure/tests/eventbus.rs
Normal file
53
crates/infrastructure/tests/eventbus.rs
Normal file
@ -0,0 +1,53 @@
|
||||
//! L1 tests for [`TokioBroadcastEventBus`]: a published [`DomainEvent`] is
|
||||
//! received both through the blocking `subscribe()` [`EventStream`] and through
|
||||
//! the async `raw_receiver()` used by the Tauri event relay.
|
||||
|
||||
use domain::events::DomainEvent;
|
||||
use domain::ports::EventBus;
|
||||
use domain::ProjectId;
|
||||
use infrastructure::TokioBroadcastEventBus;
|
||||
use uuid::Uuid;
|
||||
|
||||
fn sample_event() -> DomainEvent {
|
||||
DomainEvent::ProjectCreated {
|
||||
project_id: ProjectId::from_uuid(Uuid::nil()),
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn raw_receiver_gets_published_event() {
|
||||
let bus = TokioBroadcastEventBus::new();
|
||||
let mut rx = bus.raw_receiver();
|
||||
|
||||
bus.publish(sample_event());
|
||||
|
||||
let got = rx.recv().await.expect("event received");
|
||||
assert_eq!(got, sample_event());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn raw_receiver_fans_out_to_multiple_subscribers() {
|
||||
let bus = TokioBroadcastEventBus::new();
|
||||
let mut rx1 = bus.raw_receiver();
|
||||
let mut rx2 = bus.raw_receiver();
|
||||
|
||||
bus.publish(sample_event());
|
||||
|
||||
assert_eq!(rx1.recv().await.unwrap(), sample_event());
|
||||
assert_eq!(rx2.recv().await.unwrap(), sample_event());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn subscribe_blocking_stream_yields_published_event() {
|
||||
let bus = TokioBroadcastEventBus::new();
|
||||
let mut stream = bus.subscribe();
|
||||
bus.publish(sample_event());
|
||||
assert_eq!(stream.next(), Some(sample_event()));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn publish_without_subscribers_is_noop() {
|
||||
let bus = TokioBroadcastEventBus::new();
|
||||
// No receiver registered: publish must not panic.
|
||||
bus.publish(sample_event());
|
||||
}
|
||||
Reference in New Issue
Block a user