ticket117: synchronie métier idea_ask_agent + corrélation task ↔ rendezvous
This commit is contained in:
@ -1,8 +1,9 @@
|
||||
//! Pure invariants for first-class background tasks.
|
||||
|
||||
use domain::{
|
||||
BackgroundTask, BackgroundTaskError, BackgroundTaskKind, BackgroundTaskResult,
|
||||
BackgroundTaskState, BackgroundTaskWakePolicy,
|
||||
BackgroundTask, BackgroundTaskError, BackgroundTaskKind, BackgroundTaskRendezvousLink,
|
||||
BackgroundTaskResult, BackgroundTaskState, BackgroundTaskWakePolicy, ConversationId,
|
||||
RendezvousId, TicketId,
|
||||
};
|
||||
use uuid::Uuid;
|
||||
|
||||
@ -43,6 +44,23 @@ fn success_result(at: u64) -> BackgroundTaskResult {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rendezvous_link_roundtrips_on_background_task() {
|
||||
let link = BackgroundTaskRendezvousLink {
|
||||
rendezvous_id: RendezvousId::from_uuid(Uuid::from_u128(9)),
|
||||
ticket_id: TicketId::from_uuid(Uuid::from_u128(10)),
|
||||
requester_agent_id: Some(agent_id(4)),
|
||||
target_agent_id: agent_id(3),
|
||||
conversation_id: ConversationId::from_uuid(Uuid::from_u128(11)),
|
||||
};
|
||||
let task = command_task().with_rendezvous(link.clone());
|
||||
|
||||
let json = serde_json::to_string(&task).unwrap();
|
||||
let decoded: BackgroundTask = serde_json::from_str(&json).unwrap();
|
||||
|
||||
assert_eq!(decoded.rendezvous, Some(link));
|
||||
}
|
||||
|
||||
fn failure_result(at: u64) -> BackgroundTaskResult {
|
||||
BackgroundTaskResult::Failure {
|
||||
finished_at_ms: at,
|
||||
|
||||
Reference in New Issue
Block a user