Test refactor.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
parent
a0ceacdd4f
commit
6c8ee13d99
123
src/message.rs
123
src/message.rs
@ -32,6 +32,7 @@ enum Action {
|
||||
Query,
|
||||
Reply,
|
||||
Show,
|
||||
Update,
|
||||
}
|
||||
|
||||
impl From<MsgAction> for Action {
|
||||
@ -43,6 +44,7 @@ impl From<MsgAction> for Action {
|
||||
MsgAction::Query(_) => Action::Query,
|
||||
MsgAction::Reply(_) => Action::Reply,
|
||||
MsgAction::Show => Action::Show,
|
||||
MsgAction::Update(_) => Action::Update,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -95,6 +97,7 @@ enum MsgAction {
|
||||
Reply(Reply),
|
||||
Show,
|
||||
// Delete
|
||||
Update(Update),
|
||||
}
|
||||
|
||||
impl From<Addition> for MsgAction {
|
||||
@ -127,6 +130,12 @@ impl From<Reply> for MsgAction {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Update> for MsgAction {
|
||||
fn from(value: Update) -> Self {
|
||||
MsgAction::Update(value)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod msgactions {
|
||||
use super::*;
|
||||
@ -1513,8 +1522,6 @@ mod replies {
|
||||
}
|
||||
}
|
||||
|
||||
type DocumentMap = HashMap<String, Field>;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct Document {
|
||||
data: HashMap<String, Field>,
|
||||
@ -1573,6 +1580,21 @@ mod documents {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct Update {
|
||||
query: Query,
|
||||
values: Document,
|
||||
}
|
||||
|
||||
impl Update {
|
||||
fn new() -> Self {
|
||||
Self {
|
||||
query: Query::new(),
|
||||
values: Document::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct DocumentFile {
|
||||
docdef: DocDef,
|
||||
docs: Vec<Document>,
|
||||
@ -1715,14 +1737,14 @@ mod document_files {
|
||||
.to_vec()
|
||||
}
|
||||
|
||||
fn create_docdef(field_types: Vec<FieldType>) -> DocDef {
|
||||
fn create_docdef(field_types: Vec<FieldType>) -> (DocDef, String) {
|
||||
let mut output = DocDef::new();
|
||||
let mut count = 0;
|
||||
for field_type in field_types.iter() {
|
||||
output.add_field(format!("field{}", count), field_type.clone());
|
||||
count += 1;
|
||||
}
|
||||
output
|
||||
(output, format!("name-{}", Uuid::new_v4()))
|
||||
}
|
||||
|
||||
fn test_doc(
|
||||
@ -1924,13 +1946,9 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn errors_on_wrong_field_name() {
|
||||
let doc_name = "mismatch";
|
||||
let (docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec());
|
||||
let field_name = Uuid::new_v4().to_string();
|
||||
let (queue, rx) = test_doc(
|
||||
doc_name,
|
||||
create_docdef([FieldType::Uuid].to_vec()),
|
||||
standard_routes(),
|
||||
);
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let mut addition = Addition::new();
|
||||
addition.add_field(field_name.clone(), Uuid::new_v4());
|
||||
let msg = Message::new(doc_name, addition);
|
||||
@ -1947,12 +1965,8 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn errors_on_wrong_field_type() {
|
||||
let doc_name = "mismatch";
|
||||
let (queue, rx) = test_doc(
|
||||
doc_name,
|
||||
create_docdef([FieldType::Uuid].to_vec()),
|
||||
standard_routes(),
|
||||
);
|
||||
let (docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec());
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let mut addition = Addition::new();
|
||||
addition.add_field("field0".to_string(), "astring");
|
||||
let msg = Message::new(doc_name, addition);
|
||||
@ -1975,12 +1989,8 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn errors_on_missing_fields() {
|
||||
let doc_name = "missing";
|
||||
let (queue, rx) = test_doc(
|
||||
doc_name,
|
||||
create_docdef([FieldType::Uuid, FieldType::Uuid].to_vec()),
|
||||
standard_routes(),
|
||||
);
|
||||
let (docdef, doc_name) = create_docdef([FieldType::Uuid, FieldType::Uuid].to_vec());
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let mut addition = Addition::new();
|
||||
addition.add_field("field0".to_string(), Uuid::nil());
|
||||
let msg = Message::new(doc_name, addition);
|
||||
@ -1997,33 +2007,29 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn does_query_return_related_entries() {
|
||||
let doc_name = "query";
|
||||
let (queue, rx) = test_doc(
|
||||
doc_name,
|
||||
create_docdef([FieldType::Uuid, FieldType::Uuid].to_vec()),
|
||||
standard_routes(),
|
||||
);
|
||||
let (docdef, doc_name) = create_docdef([FieldType::Uuid, FieldType::Uuid].to_vec());
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let field0 = Uuid::new_v4();
|
||||
let field1 = Uuid::new_v4();
|
||||
for _ in 0..3 {
|
||||
let mut addition = Addition::new();
|
||||
addition.add_field("field0".to_string(), Uuid::new_v4());
|
||||
addition.add_field("field1".to_string(), Uuid::new_v4());
|
||||
let msg = Message::new(doc_name, addition);
|
||||
let msg = Message::new(doc_name.clone(), addition);
|
||||
queue.send(msg).unwrap();
|
||||
rx.recv_timeout(TIMEOUT).unwrap();
|
||||
}
|
||||
let mut addition = Addition::new();
|
||||
addition.add_field("field0".to_string(), field0.clone());
|
||||
addition.add_field("field1".to_string(), field1.clone());
|
||||
let msg = Message::new(doc_name, addition);
|
||||
let msg = Message::new(doc_name.clone(), addition);
|
||||
queue.send(msg).unwrap();
|
||||
rx.recv_timeout(TIMEOUT).unwrap();
|
||||
for _ in 0..3 {
|
||||
let mut addition = Addition::new();
|
||||
addition.add_field("field0".to_string(), Uuid::new_v4());
|
||||
addition.add_field("field1".to_string(), Uuid::new_v4());
|
||||
let msg = Message::new(doc_name, addition);
|
||||
let msg = Message::new(doc_name.clone(), addition);
|
||||
queue.send(msg).unwrap();
|
||||
rx.recv_timeout(TIMEOUT).unwrap();
|
||||
}
|
||||
@ -2049,25 +2055,21 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn gets_all_documents_in_query() {
|
||||
let doc_name = "multiple";
|
||||
let (docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec());
|
||||
let count = 4;
|
||||
let input = Uuid::new_v4();
|
||||
let (queue, rx) = test_doc(
|
||||
doc_name,
|
||||
create_docdef([FieldType::Uuid].to_vec()),
|
||||
standard_routes(),
|
||||
);
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
for _ in 0..3 {
|
||||
let mut addition = Addition::new();
|
||||
addition.add_field("field0".to_string(), Uuid::new_v4());
|
||||
let msg = Message::new(doc_name, addition);
|
||||
let msg = Message::new(doc_name.clone(), addition);
|
||||
queue.send(msg).unwrap();
|
||||
rx.recv_timeout(TIMEOUT).unwrap();
|
||||
}
|
||||
for _ in 0..count {
|
||||
let mut addition = Addition::new();
|
||||
addition.add_field("field0".to_string(), input.clone());
|
||||
let msg = Message::new(doc_name, addition);
|
||||
let msg = Message::new(doc_name.clone(), addition);
|
||||
queue.send(msg).unwrap();
|
||||
rx.recv_timeout(TIMEOUT).unwrap();
|
||||
}
|
||||
@ -2091,12 +2093,8 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn query_should_work_with_multiple_fields() {
|
||||
let doc_name = "onlyone";
|
||||
let (queue, rx) = test_doc(
|
||||
doc_name,
|
||||
create_docdef([FieldType::Uuid, FieldType::Uuid].to_vec()),
|
||||
standard_routes(),
|
||||
);
|
||||
let (docdef, doc_name) = create_docdef([FieldType::Uuid, FieldType::Uuid].to_vec());
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let field0 = Uuid::new_v4();
|
||||
let field1 = Uuid::new_v4();
|
||||
let input = [
|
||||
@ -2110,7 +2108,7 @@ mod document_files {
|
||||
let mut addition = Addition::new();
|
||||
addition.add_field("field0".to_string(), combo[0].clone());
|
||||
addition.add_field("field1".to_string(), combo[1].clone());
|
||||
let msg = Message::new(doc_name, addition);
|
||||
let msg = Message::new(doc_name.clone(), addition);
|
||||
queue.send(msg).unwrap();
|
||||
rx.recv_timeout(TIMEOUT).unwrap();
|
||||
}
|
||||
@ -2137,9 +2135,9 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn errors_on_bad_field_name() {
|
||||
let doc_name = "testing";
|
||||
let (docdef, doc_name) = create_docdef(Vec::new());
|
||||
let field_name = "wrong";
|
||||
let (queue, rx) = test_doc(doc_name, create_docdef(Vec::new()), standard_routes());
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let mut query = Query::new();
|
||||
query.add_specifier(field_name.to_string(), Operand::Equal, Uuid::new_v4());
|
||||
let msg = Message::new(doc_name, query);
|
||||
@ -2157,12 +2155,8 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn errors_on_bad_field_type() {
|
||||
let doc_name = "testing";
|
||||
let (queue, rx) = test_doc(
|
||||
doc_name,
|
||||
create_docdef([FieldType::Uuid].to_vec()),
|
||||
standard_routes(),
|
||||
);
|
||||
let (docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec());
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let mut query = Query::new();
|
||||
query.add_specifier("field0".to_string(), Operand::Equal, "wrong");
|
||||
let msg = Message::new(doc_name, query);
|
||||
@ -2183,10 +2177,9 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn can_use_default_values() {
|
||||
let doc_name = "default";
|
||||
let mut docdef = create_docdef([FieldType::StaticString].to_vec());
|
||||
let (mut docdef, doc_name) = create_docdef([FieldType::StaticString].to_vec());
|
||||
docdef.use_default_function("field0");
|
||||
let (queue, rx) = test_doc(doc_name, docdef, standard_routes());
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let new_doc = Addition::new();
|
||||
let msg = Message::new(doc_name, new_doc);
|
||||
queue.send(msg).unwrap();
|
||||
@ -2206,11 +2199,10 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn can_a_default_value_be_set() {
|
||||
let doc_name = "value";
|
||||
let mut docdef = create_docdef([FieldType::Uuid].to_vec());
|
||||
let (mut docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec());
|
||||
let input = Uuid::nil();
|
||||
docdef.set_default_value("field0", input.clone());
|
||||
let (queue, rx) = test_doc(doc_name, docdef, standard_routes());
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let new_doc = Addition::new();
|
||||
let msg = Message::new(doc_name, new_doc);
|
||||
queue.send(msg).unwrap();
|
||||
@ -2230,10 +2222,9 @@ mod document_files {
|
||||
|
||||
#[test]
|
||||
fn can_default_values_be_overridden() {
|
||||
let doc_name = "override";
|
||||
let mut docdef = create_docdef([FieldType::Uuid].to_vec());
|
||||
let (mut docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec());
|
||||
docdef.use_default_function("field0");
|
||||
let (queue, rx) = test_doc(doc_name, docdef, standard_routes());
|
||||
let (queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
|
||||
let mut new_doc = Addition::new();
|
||||
new_doc.add_field("field0".to_string(), Uuid::nil());
|
||||
let msg = Message::new(doc_name, new_doc);
|
||||
@ -2251,6 +2242,12 @@ mod document_files {
|
||||
_ => unreachable!("got {:?}: should have gotten a reply", action),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn bad_update_query_results_in_zero_changes() {
|
||||
let doc_name = "testing";
|
||||
let mut docdef = create_docdef([FieldType::Uuid].to_vec());
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user