Now able to create a new document properly.

This commit is contained in:
Jeff Baskin 2025-07-30 10:06:12 -04:00
parent 466cc7db64
commit 60ad95a5e5

View File

@ -113,6 +113,14 @@ impl Message {
fn get_action(&self) -> &MsgAction { fn get_action(&self) -> &MsgAction {
&self.action &self.action
} }
fn reply(&self, resp: Response) -> Self {
Self {
msg_id: self.msg_id.clone(),
document_id: self.document_id.clone(),
action: MsgAction::Reply(resp),
}
}
} }
#[cfg(test)] #[cfg(test)]
@ -175,6 +183,23 @@ mod messages {
ids.push(id); ids.push(id);
} }
} }
#[test]
fn Can_make_reply_message() {
let name = "testing";
let msg = Message::new(name, MsgAction::Query(Access::new()));
let responce = Response::new();
let reply = msg.reply(responce);
assert_eq!(reply.get_message_id(), msg.get_message_id());
match reply.get_document_id() {
NameID::Name(data) => assert_eq!(data, name),
_ => unreachable!("should have been a name"),
}
match reply.get_action() {
MsgAction::Reply(_) => {}
_ => unreachable!("should have been a reply"),
}
}
} }
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
@ -538,7 +563,7 @@ mod queuedatas {
match rx.recv_timeout(TIMEOUT) { match rx.recv_timeout(TIMEOUT) {
Ok(_) => unreachable!("should have timed out"), Ok(_) => unreachable!("should have timed out"),
Err(err) => match err { Err(err) => match err {
RecvTimeoutError::Timeout => {}, RecvTimeoutError::Timeout => {}
_ => unreachable!("should have timed out"), _ => unreachable!("should have timed out"),
}, },
} }
@ -621,9 +646,7 @@ mod queuedatas {
), ),
] ]
.to_vec(); .to_vec();
queuedata queuedata.register(tx, name.to_string(), routes).unwrap();
.register(tx, name.to_string(), routes)
.unwrap();
for senders in queuedata.routes.values() { for senders in queuedata.routes.values() {
assert_eq!(senders.len(), 1, "should be no double entries"); assert_eq!(senders.len(), 1, "should be no double entries");
} }
@ -648,7 +671,9 @@ mod queuedatas {
let mut queuedata = QueueData::new(); let mut queuedata = QueueData::new();
let name = "something"; let name = "something";
let (tx, _) = channel(); let (tx, _) = channel();
queuedata.register(tx, name.to_string(), Vec::new()).unwrap(); queuedata
.register(tx, name.to_string(), Vec::new())
.unwrap();
let msg = Message::new("something", MsgAction::Create(DocDef::new())); let msg = Message::new("something", MsgAction::Create(DocDef::new()));
match queuedata.send(msg) { match queuedata.send(msg) {
Ok(_) => {} Ok(_) => {}
@ -664,11 +689,18 @@ mod queuedatas {
let action = MsgAction::Query(Access::new()); let action = MsgAction::Query(Access::new());
let (tx1, rx1) = channel(); let (tx1, rx1) = channel();
let (tx2, rx2) = channel(); let (tx2, rx2) = channel();
let routes = [ let routes = [RouteRequest::new(
RouteRequest::new(Include::All, Include::Some(name1.to_string()), Include::All) Include::All,
].to_vec(); Include::Some(name1.to_string()),
queuedata.register(tx1, name1.to_string(), routes.clone()).unwrap(); Include::All,
queuedata.register(tx2, name2.to_string(), routes.clone()).unwrap(); )]
.to_vec();
queuedata
.register(tx1, name1.to_string(), routes.clone())
.unwrap();
queuedata
.register(tx2, name2.to_string(), routes.clone())
.unwrap();
let msg = Message::new(name1, action.clone()); let msg = Message::new(name1, action.clone());
queuedata.send(msg.clone()).unwrap(); queuedata.send(msg.clone()).unwrap();
let result1 = rx1.recv_timeout(TIMEOUT).unwrap(); let result1 = rx1.recv_timeout(TIMEOUT).unwrap();
@ -731,7 +763,12 @@ impl CreateDoc {
fn start(mut queue: Queue) { fn start(mut queue: Queue) {
let (tx, rx) = channel(); let (tx, rx) = channel();
let routes = [RouteRequest::new(Include::All, Include::All, Include::Some(Action::Create))].to_vec(); let routes = [RouteRequest::new(
Include::All,
Include::All,
Include::Some(Action::Create),
)]
.to_vec();
let id = queue.register(tx, "document".to_string(), routes).unwrap(); let id = queue.register(tx, "document".to_string(), routes).unwrap();
let doc = CreateDoc::new(queue, rx); let doc = CreateDoc::new(queue, rx);
spawn(move || { spawn(move || {
@ -746,6 +783,7 @@ impl CreateDoc {
NameID::Name(name) => Document::start(self.queue.clone(), name.clone()), NameID::Name(name) => Document::start(self.queue.clone(), name.clone()),
NameID::ID(_) => unreachable!("should be a name"), NameID::ID(_) => unreachable!("should be a name"),
} }
self.queue.send(msg.reply(Response::new())).unwrap();
} }
} }
} }
@ -811,15 +849,22 @@ mod createdocs {
use super::support_test::TIMEOUT; use super::support_test::TIMEOUT;
use super::*; use super::*;
//#[test] #[test]
fn create_document_creation() { fn create_document_creation() {
let queue = Queue::new(); let mut queue = Queue::new();
//let (tx, rx) = channel(); let (tx, rx) = channel();
//queue.register2 let routes = [RouteRequest::new(
Include::All,
Include::All,
Include::Some(Action::Reply),
)]
.to_vec();
queue.register(tx, "testing".to_string(), routes).unwrap();
CreateDoc::start(queue.clone()); CreateDoc::start(queue.clone());
let name = "project"; let name = "project";
let msg = Message::new(name, MsgAction::Create(DocDef::new())); let msg = Message::new(name, MsgAction::Create(DocDef::new()));
queue.send(msg).unwrap(); queue.send(msg).unwrap();
rx.recv_timeout(TIMEOUT).unwrap();
let msg2 = Message::new(name, MsgAction::Query(Access::new())); let msg2 = Message::new(name, MsgAction::Query(Access::new()));
queue.send(msg2).unwrap(); queue.send(msg2).unwrap();
} }