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