From 744f2077f4358320b42163fa729d8c58d87c2655 Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Sun, 13 Apr 2025 08:26:18 -0400 Subject: [PATCH] Finished document skeleton. --- src/document.rs | 34 ++++++++++++++++++++++++++++++++-- src/queue.rs | 4 ++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/document.rs b/src/document.rs index 19cfe8c..78688fb 100644 --- a/src/document.rs +++ b/src/document.rs @@ -34,6 +34,13 @@ impl Document { fn listen(&mut self) { loop { let msg = self.rx.recv().unwrap(); + let mut reply = msg.reply(MsgType::Document); + reply.add_data( + "sess_id", + msg.get_data("sess_id").unwrap().to_uuid().unwrap(), + ); + reply.add_data("doc", "Something goes hwew"); + self.queue.send(reply).unwrap(); } } } @@ -41,10 +48,33 @@ impl Document { #[cfg(test)] mod documents { use super::*; + use std::time::Duration; + use uuid::Uuid; + + const TIMEOUT: Duration = Duration::from_millis(500); + + fn setup_document(listen_for: Vec) -> (Queue, Receiver) { + let queue = Queue::new(); + let (tx, rx) = channel(); + queue.add(tx, listen_for); + Document::start(queue.clone()); + (queue, rx) + } #[test] fn start_service() { - let queue = Queue::new(); - Document::start(queue); + let (queue, rx) = setup_document([MsgType::Document].to_vec()); + let id = Uuid::new_v4(); + let mut msg = Message::new(MsgType::DocumentRequest); + msg.add_data("sess_id", id.clone()); + queue.send(msg.clone()).unwrap(); + let reply = rx.recv_timeout(TIMEOUT).unwrap(); + assert_eq!(reply.get_id(), msg.get_id()); + match reply.get_class() { + MsgType::Document => {} + _ => unreachable!("got {:?} should have gotten document", msg.get_class()), + } + assert_eq!(reply.get_data("sess_id").unwrap().to_uuid().unwrap(), id); + assert!(reply.get_data("doc").is_some()); } } diff --git a/src/queue.rs b/src/queue.rs index e5d551f..86f3d9f 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -8,10 +8,10 @@ use uuid::Uuid; #[derive(Clone, Debug, Eq, Hash, PartialEq)] pub enum MsgType { ClientRequest, - ClientDoc, + Document, DocumentRequest, - SessionValidate, Session, + SessionValidate, Time, }