Test refactor.
This commit is contained in:
parent
6d0876f9e9
commit
92f1814d1c
117
src/message.rs
117
src/message.rs
@ -1319,7 +1319,11 @@ impl DocumentFile {
|
|||||||
NameID::ID(id) => id.to_string(),
|
NameID::ID(id) => id.to_string(),
|
||||||
};
|
};
|
||||||
let routes = [
|
let routes = [
|
||||||
RouteRequest::new(Include::All, Include::All, Include::Some(Action::Addition)),
|
RouteRequest::new(
|
||||||
|
Include::All,
|
||||||
|
Include::Some(name.clone()),
|
||||||
|
Include::Some(Action::Addition),
|
||||||
|
),
|
||||||
RouteRequest::new(
|
RouteRequest::new(
|
||||||
Include::All,
|
Include::All,
|
||||||
Include::Some(name.clone()),
|
Include::Some(name.clone()),
|
||||||
@ -1382,6 +1386,14 @@ mod document_files {
|
|||||||
use super::{support_test::TIMEOUT, *};
|
use super::{support_test::TIMEOUT, *};
|
||||||
use std::sync::mpsc::RecvTimeoutError;
|
use std::sync::mpsc::RecvTimeoutError;
|
||||||
|
|
||||||
|
fn standard_routes() -> Vec<RouteRequest> {
|
||||||
|
[
|
||||||
|
RouteRequest::new(Include::All, Include::All, Include::Some(Action::Reply)),
|
||||||
|
RouteRequest::new(Include::All, Include::All, Include::Some(Action::Error)),
|
||||||
|
]
|
||||||
|
.to_vec()
|
||||||
|
}
|
||||||
|
|
||||||
fn test_doc(
|
fn test_doc(
|
||||||
name: &str,
|
name: &str,
|
||||||
docdef: DocDef,
|
docdef: DocDef,
|
||||||
@ -1397,17 +1409,30 @@ mod document_files {
|
|||||||
(queue, rx)
|
(queue, rx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn does_not_respond_to_create() {
|
||||||
|
let docdef = DocDef::new();
|
||||||
|
let name = "quiet";
|
||||||
|
let (mut queue, rx) = test_doc(name, docdef, standard_routes());
|
||||||
|
let other = "alternate";
|
||||||
|
let (tx, _) = channel();
|
||||||
|
queue.register(tx, other.to_string(), Vec::new()).unwrap();
|
||||||
|
let msg = Message::new(name, DocDef::new());
|
||||||
|
queue.send(msg).unwrap();
|
||||||
|
match rx.recv_timeout(TIMEOUT) {
|
||||||
|
Ok(msg) => unreachable!("should not receive: {:?}", msg),
|
||||||
|
Err(err) => match err {
|
||||||
|
RecvTimeoutError::Timeout => {}
|
||||||
|
_ => unreachable!("should have timed out"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_show_document_details() {
|
fn can_show_document_details() {
|
||||||
let docdef = DocDef::new();
|
let docdef = DocDef::new();
|
||||||
let name = "first";
|
let name = "first";
|
||||||
let routes = [RouteRequest::new(
|
let (queue, rx) = test_doc(name, docdef, standard_routes());
|
||||||
Include::All,
|
|
||||||
Include::All,
|
|
||||||
Include::Some(Action::Reply),
|
|
||||||
)]
|
|
||||||
.to_vec();
|
|
||||||
let (queue, rx) = test_doc(name, docdef, routes);
|
|
||||||
let msg = Message::new(name, MsgAction::Show);
|
let msg = Message::new(name, MsgAction::Show);
|
||||||
queue.send(msg.clone()).unwrap();
|
queue.send(msg.clone()).unwrap();
|
||||||
let show = rx.recv_timeout(TIMEOUT).unwrap();
|
let show = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
@ -1417,13 +1442,7 @@ mod document_files {
|
|||||||
fn can_query_new_document() {
|
fn can_query_new_document() {
|
||||||
let docdef = DocDef::new();
|
let docdef = DocDef::new();
|
||||||
let name = "second";
|
let name = "second";
|
||||||
let routes = [RouteRequest::new(
|
let (queue, rx) = test_doc(name, docdef, standard_routes());
|
||||||
Include::All,
|
|
||||||
Include::All,
|
|
||||||
Include::Some(Action::Reply),
|
|
||||||
)]
|
|
||||||
.to_vec();
|
|
||||||
let (queue, rx) = test_doc(name, docdef, routes);
|
|
||||||
let query = Message::new(name, Query::new());
|
let query = Message::new(name, Query::new());
|
||||||
queue.send(query).unwrap();
|
queue.send(query).unwrap();
|
||||||
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
@ -1440,13 +1459,7 @@ mod document_files {
|
|||||||
fn only_responses_to_its_show_request() {
|
fn only_responses_to_its_show_request() {
|
||||||
let docdef = DocDef::new();
|
let docdef = DocDef::new();
|
||||||
let name = "quiet";
|
let name = "quiet";
|
||||||
let routes = [RouteRequest::new(
|
let (mut queue, rx) = test_doc(name, docdef, standard_routes());
|
||||||
Include::All,
|
|
||||||
Include::All,
|
|
||||||
Include::Some(Action::Reply),
|
|
||||||
)]
|
|
||||||
.to_vec();
|
|
||||||
let (mut queue, rx) = test_doc(name, docdef, routes);
|
|
||||||
let other = "alternate";
|
let other = "alternate";
|
||||||
let (tx, _) = channel();
|
let (tx, _) = channel();
|
||||||
queue.register(tx, other.to_string(), Vec::new()).unwrap();
|
queue.register(tx, other.to_string(), Vec::new()).unwrap();
|
||||||
@ -1465,13 +1478,7 @@ mod document_files {
|
|||||||
fn only_responses_to_its_query_request() {
|
fn only_responses_to_its_query_request() {
|
||||||
let docdef = DocDef::new();
|
let docdef = DocDef::new();
|
||||||
let name = "quiet";
|
let name = "quiet";
|
||||||
let routes = [RouteRequest::new(
|
let (mut queue, rx) = test_doc(name, docdef, standard_routes());
|
||||||
Include::All,
|
|
||||||
Include::All,
|
|
||||||
Include::Some(Action::Reply),
|
|
||||||
)]
|
|
||||||
.to_vec();
|
|
||||||
let (mut queue, rx) = test_doc(name, docdef, routes);
|
|
||||||
let other = "alternate";
|
let other = "alternate";
|
||||||
let (tx, _) = channel();
|
let (tx, _) = channel();
|
||||||
queue.register(tx, other.to_string(), Vec::new()).unwrap();
|
queue.register(tx, other.to_string(), Vec::new()).unwrap();
|
||||||
@ -1493,13 +1500,7 @@ mod document_files {
|
|||||||
let doc_name = "document";
|
let doc_name = "document";
|
||||||
let data = Uuid::new_v4();
|
let data = Uuid::new_v4();
|
||||||
docdef.add_field(name.to_string(), FieldType::Uuid);
|
docdef.add_field(name.to_string(), FieldType::Uuid);
|
||||||
let routes = [RouteRequest::new(
|
let (queue, rx) = test_doc(doc_name, docdef, standard_routes());
|
||||||
Include::All,
|
|
||||||
Include::All,
|
|
||||||
Include::Some(Action::Reply),
|
|
||||||
)]
|
|
||||||
.to_vec();
|
|
||||||
let (queue, rx) = test_doc(doc_name, docdef, routes);
|
|
||||||
let mut new_doc = Addition::new();
|
let mut new_doc = Addition::new();
|
||||||
new_doc.add_field(name.to_string(), data.clone());
|
new_doc.add_field(name.to_string(), data.clone());
|
||||||
let msg = Message::new(doc_name, new_doc);
|
let msg = Message::new(doc_name, new_doc);
|
||||||
@ -1545,6 +1546,50 @@ mod document_files {
|
|||||||
_ => unreachable!("got {:?}: should have been a reply", result),
|
_ => unreachable!("got {:?}: should have been a reply", result),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn only_responses_to_its_additions() {
|
||||||
|
let docdef = DocDef::new();
|
||||||
|
let name = "quiet";
|
||||||
|
let (mut queue, rx) = test_doc(name, docdef, standard_routes());
|
||||||
|
let other = "alternate";
|
||||||
|
let (tx, _) = channel();
|
||||||
|
queue.register(tx, other.to_string(), Vec::new()).unwrap();
|
||||||
|
let msg = Message::new(other, Addition::new());
|
||||||
|
queue.send(msg).unwrap();
|
||||||
|
match rx.recv_timeout(TIMEOUT) {
|
||||||
|
Ok(msg) => unreachable!("should not receive: {:?}", msg),
|
||||||
|
Err(err) => match err {
|
||||||
|
RecvTimeoutError::Timeout => {}
|
||||||
|
_ => unreachable!("should have timed out"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_add_multiple_documents() {
|
||||||
|
let count = 4;
|
||||||
|
let mut docdef = DocDef::new();
|
||||||
|
let name = "field";
|
||||||
|
let doc_name = "document";
|
||||||
|
let data = Uuid::new_v4();
|
||||||
|
docdef.add_field(name.to_string(), FieldType::Uuid);
|
||||||
|
let (queue, rx) = test_doc(doc_name, docdef, standard_routes());
|
||||||
|
let mut new_doc = Addition::new();
|
||||||
|
new_doc.add_field(name.to_string(), data.clone());
|
||||||
|
for _ in 0..count {
|
||||||
|
let msg = Message::new(doc_name, new_doc.clone());
|
||||||
|
queue.send(msg.clone()).unwrap();
|
||||||
|
rx.recv_timeout(TIMEOUT).unwrap(); // eats the confirmation reply.
|
||||||
|
}
|
||||||
|
let msg = Message::new(doc_name, Query::new());
|
||||||
|
queue.send(msg).unwrap();
|
||||||
|
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
|
match result.get_action() {
|
||||||
|
MsgAction::Reply(data) => assert_eq!(data.len(), count),
|
||||||
|
_ => unreachable!("got {:?}: should have been a reply", result.get_action()),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user