Readded more tests.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2025-10-17 17:57:14 -04:00
parent cbcd8ff6e7
commit d9d50c078c

View File

@ -5168,50 +5168,46 @@ mod document_files {
testing(Message::new(doc_name.clone(), Query::new())); testing(Message::new(doc_name.clone(), Query::new()));
} }
/*
#[test] #[test]
fn changes_only_the_queried() { fn changes_only_the_queried() {
let mut doc = TestDocument::new([FieldType::Uuid, FieldType::StaticString].to_vec()); let mut doc = TestDocument::new([FieldType::Integer, FieldType::StaticString].to_vec());
doc.start(); doc.start();
let mut ids: HashSet<Uuid> = HashSet::new(); let doc_name = doc.get_docdef().get_document_name().clone();
while ids.len() < 2 {
ids.insert(Uuid::new_v4());
}
let expected = ids.iter().last().unwrap();
let old = "old"; let old = "old";
let new = "new"; let new = "new";
let mut values: Vec<Vec<Field>> = Vec::new(); let count = 5;
for id in ids.iter() { let picked = 3;
let mut holder: Vec<Field> = Vec::new(); for i in 0..count {
holder.push(id.clone().into()); doc.populate([i.into(), old.into()].to_vec());
holder.push(old.into());
values.push(holder);
}
for value in values {
doc.populate(value);
} }
let mut update = Update::new(); let mut update = Update::new();
let mut calc = Calculation::new(Operand::Equal); let mut calc = Calculation::new(Operand::Equal);
calc.add_value(expected.clone()); calc.add_value(picked.clone());
update.get_query_mut().add("field0".to_string(), calc); update.get_query_mut().add(Name::english("field0"), calc);
update.get_values_mut().add_field("field1".to_string(), new); update.get_values_mut().add_field(Name::english("field1"), new);
doc.send(update).unwrap(); doc.get_queue().send(Message::new(doc_name.clone(), update)).unwrap();
doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let mut calc = Calculation::new(Operand::Equal);
calc.add_value(new);
let mut query = Query::new();
query.add("field1".to_string(), calc);
doc.send(query).unwrap();
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
match action { match action {MsgAction::Records(docs) => {
MsgAction::Reply(docs) => { assert_eq!(docs.len(), 1, "should have one entry");
assert_eq!(docs.len(), 1); for doc in docs.clone() {
let expected_id: Field = expected.clone().into(); assert_eq!(doc.get(Name::english("field0")).unwrap(), picked.into());
let output: Field = new.into(); assert_eq!(doc.get(Name::english("field1")).unwrap(), new.into());
for doc in docs.iter() { }
assert_eq!(doc.get_field("field0").unwrap(), expected_id); }
assert_eq!(doc.get_field("field1").unwrap(), output); _ => unreachable!("got {:?}: should have gotten a reply", action),
}
doc.get_queue().send(Message::new(doc_name.clone(), Query::new())).unwrap();
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action();
match action {MsgAction::Records(docs) => {
assert_eq!(docs.len(), 5, "should have one entry");
for doc in docs.clone() {
if doc.get(Name::english("field0")).unwrap() == picked.into() {
assert_eq!(doc.get(Name::english("field1")).unwrap(), new.into());
} else {
assert_eq!(doc.get(Name::english("field1")).unwrap(), old.into());
}
} }
} }
_ => unreachable!("got {:?}: should have gotten a reply", action), _ => unreachable!("got {:?}: should have gotten a reply", action),
@ -5220,50 +5216,37 @@ mod document_files {
#[test] #[test]
fn can_handle_multiple_updates() { fn can_handle_multiple_updates() {
let mut doc = TestDocument::new([FieldType::Uuid, FieldType::StaticString].to_vec()); let mut doc = TestDocument::new([FieldType::Integer, FieldType::StaticString].to_vec());
doc.start(); doc.start();
let count = 3; let doc_name = doc.get_docdef().get_document_name().clone();
let id = Uuid::new_v4();
let old = "old"; let old = "old";
let new = "new"; let new = "new";
for _ in 0..count { let count = 5;
doc.populate([id.into(), old.into()].to_vec()); let picked = 3;
for i in 0..count {
doc.populate([picked.into(), old.into()].to_vec());
} }
let mut calc = Calculation::new(Operand::Equal);
calc.add_value(id.clone());
let mut update = Update::new(); let mut update = Update::new();
update let mut calc = Calculation::new(Operand::Equal);
.get_query_mut() calc.add_value(picked.clone());
.add("field0".to_string(), calc.clone()); update.get_query_mut().add(Name::english("field0"), calc);
update.get_values_mut().add_field("field1".to_string(), new); update.get_values_mut().add_field(Name::english("field1"), new);
doc.send(update).unwrap(); let mut testing = |msg: Message| {
let mut results: HashMap<String, Message> = HashMap::new(); doc.get_queue().send(msg).unwrap();
results.insert( let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
"update".to_string(),
doc.get_receiver().recv_timeout(TIMEOUT).unwrap(),
);
let mut query = Query::new();
query.add("field0".to_string(), calc.clone());
doc.send(query).unwrap();
results.insert(
"query".to_string(),
doc.get_receiver().recv_timeout(TIMEOUT).unwrap(),
);
let expected_id: Field = id.into();
let output: Field = new.into();
for (key, result) in results.iter() {
let action = result.get_action(); let action = result.get_action();
match action { match action {MsgAction::Records(docs) => {
MsgAction::Reply(docs) => { assert_eq!(docs.len(), 5, "should have one entry");
assert_eq!(docs.len(), count, "{}", key); for doc in docs.clone() {
for doc in docs.iter() { assert_eq!(doc.get(Name::english("field0")).unwrap(), picked.into());
assert_eq!(doc.get_field("field0").unwrap(), expected_id, "{}", key); assert_eq!(doc.get(Name::english("field1")).unwrap(), new.into());
assert_eq!(doc.get_field("field1").unwrap(), output, "{}", key);
} }
} }
_ => unreachable!("got {:?}: should have gotten a reply", action), _ => unreachable!("got {:?}: should have gotten a reply", action),
} }
} };
testing(Message::new(doc_name.clone(), update));
testing(Message::new(doc_name.clone(), Query::new()));
} }
#[test] #[test]
@ -5273,18 +5256,19 @@ mod document_files {
let id = Uuid::new_v4(); let id = Uuid::new_v4();
let old = "old"; let old = "old";
let new = "new"; let new = "new";
let bad_name = Name::english("wrong");
doc.populate([id.into(), old.into()].to_vec()); doc.populate([id.into(), old.into()].to_vec());
let mut update = Update::new(); let mut update = Update::new();
let mut calc = Calculation::new(Operand::Equal); let mut calc = Calculation::new(Operand::Equal);
calc.add_value(id.clone()); calc.add_value(id.clone());
update.get_query_mut().add("field0".to_string(), calc); update.get_query_mut().add(Name::english("field0"), calc);
update.get_values_mut().add_field("wrong".to_string(), new); update.get_values_mut().add_field(bad_name.clone(), new);
doc.send(update).unwrap(); doc.send(update).unwrap();
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
match action { match action {
MsgAction::Error(err) => match err { MsgAction::Error(err) => match err {
MTTError::DocumentFieldNotFound(data) => assert_eq!(data, "wrong"), MTTError::NameNotFound(data) => assert_eq!(data, &bad_name),
_ => unreachable!("got {:?}: should have gotten an missing field", err), _ => unreachable!("got {:?}: should have gotten an missing field", err),
}, },
_ => unreachable!("got {:?}: should have gotten an error", action), _ => unreachable!("got {:?}: should have gotten an error", action),
@ -5302,8 +5286,8 @@ mod document_files {
let mut update = Update::new(); let mut update = Update::new();
let mut calc = Calculation::new(Operand::Equal); let mut calc = Calculation::new(Operand::Equal);
calc.add_value(id.clone()); calc.add_value(id.clone());
update.get_query_mut().add("field0".to_string(), calc); update.get_query_mut().add(Name::english("field0"), calc);
update.get_values_mut().add_field("field1".to_string(), new); update.get_values_mut().add_field(Name::english("field1"), new);
doc.send(update).unwrap(); doc.send(update).unwrap();
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
@ -5319,6 +5303,7 @@ mod document_files {
} }
} }
/*
#[test] #[test]
fn does_update_maintain_unique_fields() { fn does_update_maintain_unique_fields() {
let (mut docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec()); let (mut docdef, doc_name) = create_docdef([FieldType::Uuid].to_vec());