added multiple updates.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2025-08-28 10:49:18 -04:00
parent cda6cc1c8c
commit d70758aecf

View File

@ -2455,6 +2455,64 @@ mod document_files {
_ => unreachable!("got {:?}: should have gotten a reply", action), _ => unreachable!("got {:?}: should have gotten a reply", action),
} }
} }
#[test]
fn can_handle_multiple_updates() {
let (mut docdef, doc_name) =
create_docdef([FieldType::Uuid, FieldType::StaticString].to_vec());
let (mut queue, rx) = test_doc(doc_name.as_str(), docdef, standard_routes());
let count = 3;
let id = Uuid::new_v4();
let old = "old";
let new = "new";
let mut addition = Addition::new();
addition.add_field("field0".to_string(), id.clone());
addition.add_field("field1".to_string(), old);
let msg = Message::new(doc_name.clone(), addition);
for _ in 0..count {
queue.send(msg.clone()).unwrap();
rx.recv_timeout(TIMEOUT).unwrap();
}
let mut update = Update::new();
update
.get_query_mut()
.add_specifier("field0".to_string(), Operand::Equal, id.clone());
update.get_values_mut().add_field("field1".to_string(), new);
let msg = Message::new(doc_name.clone(), update);
queue.send(msg).unwrap();
let result = rx.recv_timeout(TIMEOUT).unwrap();
let action = result.get_action();
match action {
MsgAction::Reply(docs) => {
assert_eq!(docs.len(), count);
let expected_id: Field = id.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);
}
}
_ => unreachable!("got {:?}: should have gotten a reply", action),
}
let mut query = Query::new();
query.add_specifier("field0".to_string(), Operand::Equal, id.clone());
let msg = Message::new(doc_name, query);
queue.send(msg).unwrap();
let result = rx.recv_timeout(TIMEOUT).unwrap();
let action = result.get_action();
match action {
MsgAction::Reply(docs) => {
assert_eq!(docs.len(), count);
let expected_id: Field = id.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);
}
}
_ => unreachable!("got {:?}: should have gotten a reply", action),
}
}
} }
#[cfg(test)] #[cfg(test)]