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,
|
Create,
|
||||||
Delete,
|
Delete,
|
||||||
Error,
|
Error,
|
||||||
|
OnAddition,
|
||||||
|
OnDelete,
|
||||||
OnQuery,
|
OnQuery,
|
||||||
|
OnUpdate,
|
||||||
Query,
|
Query,
|
||||||
Records,
|
Records,
|
||||||
Register,
|
Register,
|
||||||
@ -64,7 +67,10 @@ impl From<MsgAction> for Action {
|
|||||||
MsgAction::Create(_) => Action::Create,
|
MsgAction::Create(_) => Action::Create,
|
||||||
MsgAction::Delete(_) => Action::Delete,
|
MsgAction::Delete(_) => Action::Delete,
|
||||||
MsgAction::Error(_) => Action::Error,
|
MsgAction::Error(_) => Action::Error,
|
||||||
|
MsgAction::OnAddition(_) => Action::OnAddition,
|
||||||
|
MsgAction::OnDelete(_) => Action::OnDelete,
|
||||||
MsgAction::OnQuery(_) => Action::OnQuery,
|
MsgAction::OnQuery(_) => Action::OnQuery,
|
||||||
|
MsgAction::OnUpdate(_) => Action::OnUpdate,
|
||||||
MsgAction::Query(_) => Action::Query,
|
MsgAction::Query(_) => Action::Query,
|
||||||
MsgAction::Records(_) => Action::Records,
|
MsgAction::Records(_) => Action::Records,
|
||||||
MsgAction::Register(_) => Action::Register,
|
MsgAction::Register(_) => Action::Register,
|
||||||
@ -129,7 +135,10 @@ enum MsgAction {
|
|||||||
// Alter
|
// Alter
|
||||||
// Remove
|
// Remove
|
||||||
Error(MTTError),
|
Error(MTTError),
|
||||||
|
OnAddition(Records),
|
||||||
|
OnDelete(Records),
|
||||||
OnQuery(Records),
|
OnQuery(Records),
|
||||||
|
OnUpdate(Records),
|
||||||
Query(Query),
|
Query(Query),
|
||||||
Records(Records),
|
Records(Records),
|
||||||
Register(Register),
|
Register(Register),
|
||||||
@ -4584,8 +4593,10 @@ impl DocumentFile {
|
|||||||
self.docs.insert(oid.clone(), holder.clone());
|
self.docs.insert(oid.clone(), holder.clone());
|
||||||
records.insert(oid, holder);
|
records.insert(oid, holder);
|
||||||
}
|
}
|
||||||
let reply = msg.response(records);
|
self.queue.send(msg.response(records.clone())).unwrap();
|
||||||
self.queue.send(reply).unwrap();
|
self.queue
|
||||||
|
.send(msg.response(MsgAction::OnAddition(records)))
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn delete(&mut self, msg: &Message) {
|
fn delete(&mut self, msg: &Message) {
|
||||||
@ -4608,7 +4619,10 @@ impl DocumentFile {
|
|||||||
self.docs.remove(oid);
|
self.docs.remove(oid);
|
||||||
}
|
}
|
||||||
let rec = Records::with_data(self.docdef.get_field_names().clone(), records);
|
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> {
|
fn run_query(&self, query: &Query) -> Result<InternalRecords, MTTError> {
|
||||||
@ -4742,7 +4756,10 @@ impl DocumentFile {
|
|||||||
self.docs.insert(oid.clone(), new_rec.clone());
|
self.docs.insert(oid.clone(), new_rec.clone());
|
||||||
}
|
}
|
||||||
let recs = Records::with_data(self.docdef.get_field_names().clone(), updates);
|
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]
|
#[test]
|
||||||
fn can_document_be_added() {
|
fn can_document_be_added() {
|
||||||
let doc_name = Name::english("document");
|
let doc_name = Name::english("document");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user