Generates the on_blank messages.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 2s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 2s
This commit is contained in:
parent
eb64b6bfd5
commit
247712f10f
172
src/message.rs
172
src/message.rs
@ -48,7 +48,10 @@ enum Action {
|
||||
Create,
|
||||
Delete,
|
||||
Error,
|
||||
OnAddition,
|
||||
OnDelete,
|
||||
OnQuery,
|
||||
OnUpdate,
|
||||
Query,
|
||||
Records,
|
||||
Register,
|
||||
@ -64,7 +67,10 @@ impl From<MsgAction> for Action {
|
||||
MsgAction::Create(_) => Action::Create,
|
||||
MsgAction::Delete(_) => Action::Delete,
|
||||
MsgAction::Error(_) => Action::Error,
|
||||
MsgAction::OnAddition(_) => Action::OnAddition,
|
||||
MsgAction::OnDelete(_) => Action::OnDelete,
|
||||
MsgAction::OnQuery(_) => Action::OnQuery,
|
||||
MsgAction::OnUpdate(_) => Action::OnUpdate,
|
||||
MsgAction::Query(_) => Action::Query,
|
||||
MsgAction::Records(_) => Action::Records,
|
||||
MsgAction::Register(_) => Action::Register,
|
||||
@ -129,7 +135,10 @@ enum MsgAction {
|
||||
// Alter
|
||||
// Remove
|
||||
Error(MTTError),
|
||||
OnAddition(Records),
|
||||
OnDelete(Records),
|
||||
OnQuery(Records),
|
||||
OnUpdate(Records),
|
||||
Query(Query),
|
||||
Records(Records),
|
||||
Register(Register),
|
||||
@ -4584,8 +4593,10 @@ impl DocumentFile {
|
||||
self.docs.insert(oid.clone(), holder.clone());
|
||||
records.insert(oid, holder);
|
||||
}
|
||||
let reply = msg.response(records);
|
||||
self.queue.send(reply).unwrap();
|
||||
self.queue.send(msg.response(records.clone())).unwrap();
|
||||
self.queue
|
||||
.send(msg.response(MsgAction::OnAddition(records)))
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn delete(&mut self, msg: &Message) {
|
||||
@ -4608,7 +4619,10 @@ impl DocumentFile {
|
||||
self.docs.remove(oid);
|
||||
}
|
||||
let rec = Records::with_data(self.docdef.get_field_names().clone(), records);
|
||||
self.queue.send(msg.response(rec)).unwrap();
|
||||
self.queue.send(msg.response(rec.clone())).unwrap();
|
||||
self.queue
|
||||
.send(msg.response(MsgAction::OnDelete(rec)))
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn run_query(&self, query: &Query) -> Result<InternalRecords, MTTError> {
|
||||
@ -4742,7 +4756,10 @@ impl DocumentFile {
|
||||
self.docs.insert(oid.clone(), new_rec.clone());
|
||||
}
|
||||
let recs = Records::with_data(self.docdef.get_field_names().clone(), updates);
|
||||
self.queue.send(msg.response(recs)).unwrap();
|
||||
self.queue.send(msg.response(recs.clone())).unwrap();
|
||||
self.queue
|
||||
.send(msg.response(MsgAction::OnUpdate(recs)))
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
@ -5038,6 +5055,153 @@ mod document_files {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn send_on_addition_message() {
|
||||
let data: Field = Uuid::new_v4().into();
|
||||
let field_name = Name::english("field0");
|
||||
let mut test_doc = TestDocument::new([FieldType::Uuid].to_vec());
|
||||
let doc_name = test_doc.get_docdef().get_document_names()[0].clone();
|
||||
let queue = test_doc.get_queue();
|
||||
let routes = vec![Path::new(
|
||||
Include::All,
|
||||
Include::All,
|
||||
Include::Some(Action::OnAddition),
|
||||
)];
|
||||
test_doc.start(routes);
|
||||
let name_id: NameType = test_doc.get_name_id().into();
|
||||
let mut add = Addition::new();
|
||||
add.add_field(field_name.clone(), data.clone());
|
||||
let msg = Message::new(doc_name.clone(), add);
|
||||
queue.send(msg.clone()).unwrap();
|
||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||
assert_eq!(
|
||||
result.get_message_id(),
|
||||
msg.get_message_id(),
|
||||
"message ids should match"
|
||||
);
|
||||
assert_eq!(
|
||||
result.get_document_id(),
|
||||
&name_id,
|
||||
"document name ids should match"
|
||||
);
|
||||
match result.get_action() {
|
||||
MsgAction::OnAddition(output) => {
|
||||
assert_eq!(output.len(), 1, "wrong number of entries: got {:?}", output);
|
||||
for rec in output.iter() {
|
||||
assert_eq!(rec.get(Name::english("field0")).unwrap(), data);
|
||||
}
|
||||
}
|
||||
_ => unreachable!("should never get here"),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sends_on_delete_message() {
|
||||
let count = 5;
|
||||
let mut data: HashSet<Field> = HashSet::new();
|
||||
while data.len() < count {
|
||||
let field: Field = Uuid::new_v4().into();
|
||||
data.insert(field);
|
||||
}
|
||||
let mut test_doc = TestDocument::new([FieldType::Uuid].to_vec());
|
||||
let doc_name = test_doc.get_docdef().get_document_names()[0].clone();
|
||||
let queue = test_doc.get_queue();
|
||||
let routes = [Path::new(
|
||||
Include::All,
|
||||
Include::All,
|
||||
Include::Some(Action::OnDelete),
|
||||
)]
|
||||
.to_vec();
|
||||
test_doc.start(routes);
|
||||
let name_id: NameType = test_doc.get_name_id().into();
|
||||
for item in data.iter() {
|
||||
test_doc.populate([item.clone()].to_vec());
|
||||
}
|
||||
let msg = Message::new(doc_name.clone(), Delete::new(Query::new()));
|
||||
queue.send(msg.clone()).unwrap();
|
||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||
assert_eq!(
|
||||
result.get_message_id(),
|
||||
msg.get_message_id(),
|
||||
"message ids should match"
|
||||
);
|
||||
assert_eq!(
|
||||
result.get_document_id(),
|
||||
&name_id,
|
||||
"document name ids should match"
|
||||
);
|
||||
match result.get_action() {
|
||||
MsgAction::OnDelete(output) => {
|
||||
assert_eq!(
|
||||
output.len(),
|
||||
count,
|
||||
"wrong number of entries: got {:?}",
|
||||
output
|
||||
);
|
||||
for rec in output.iter() {
|
||||
assert!(data.contains(&rec.get(Name::english("field0")).unwrap()));
|
||||
}
|
||||
}
|
||||
_ => unreachable!("should never get here"),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sends_on_update_message() {
|
||||
let count = 5;
|
||||
let field_name = Name::english("field0");
|
||||
let mut data: HashSet<Field> = HashSet::new();
|
||||
while data.len() < count {
|
||||
let field: Field = Uuid::new_v4().into();
|
||||
data.insert(field);
|
||||
}
|
||||
let mut test_doc = TestDocument::new([FieldType::Uuid].to_vec());
|
||||
let doc_name = test_doc.get_docdef().get_document_names()[0].clone();
|
||||
let queue = test_doc.get_queue();
|
||||
let routes = [Path::new(
|
||||
Include::All,
|
||||
Include::All,
|
||||
Include::Some(Action::OnUpdate),
|
||||
)]
|
||||
.to_vec();
|
||||
test_doc.start(routes);
|
||||
let name_id: NameType = test_doc.get_name_id().into();
|
||||
for item in data.iter() {
|
||||
test_doc.populate([item.clone()].to_vec());
|
||||
}
|
||||
let mut update = Update::new(Query::new());
|
||||
update
|
||||
.get_values_mut()
|
||||
.add_field(field_name.clone(), Uuid::nil());
|
||||
let msg = Message::new(doc_name.clone(), update);
|
||||
queue.send(msg.clone()).unwrap();
|
||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||
assert_eq!(
|
||||
result.get_message_id(),
|
||||
msg.get_message_id(),
|
||||
"message ids should match"
|
||||
);
|
||||
assert_eq!(
|
||||
result.get_document_id(),
|
||||
&name_id,
|
||||
"document name ids should match"
|
||||
);
|
||||
match result.get_action() {
|
||||
MsgAction::OnUpdate(output) => {
|
||||
assert_eq!(
|
||||
output.len(),
|
||||
count,
|
||||
"wrong number of entries: got {:?}",
|
||||
output
|
||||
);
|
||||
for rec in output.iter() {
|
||||
assert_eq!(rec.get(&field_name).unwrap(), Uuid::nil().into());
|
||||
}
|
||||
}
|
||||
_ => unreachable!("should never get here"),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn can_document_be_added() {
|
||||
let doc_name = Name::english("document");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user