Finished document skeleton.
This commit is contained in:
		@@ -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<MsgType>) -> (Queue, Receiver<Message>) {
 | 
			
		||||
        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());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,10 @@ use uuid::Uuid;
 | 
			
		||||
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
 | 
			
		||||
pub enum MsgType {
 | 
			
		||||
    ClientRequest,
 | 
			
		||||
    ClientDoc,
 | 
			
		||||
    Document,
 | 
			
		||||
    DocumentRequest,
 | 
			
		||||
    SessionValidate,
 | 
			
		||||
    Session,
 | 
			
		||||
    SessionValidate,
 | 
			
		||||
    Time,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user