Test refactor.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2025-08-26 08:06:22 -04:00
parent a0ceacdd4f
commit 6c8ee13d99

View File

@ -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)]