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