Finished getting update running.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2025-08-28 13:18:18 -04:00
parent cfdb0dda19
commit eb73a31014

View File

@ -1108,12 +1108,50 @@ impl FieldSetting {
fn get_default(&self) -> &DefaultSetting { fn get_default(&self) -> &DefaultSetting {
&self.default_setting &self.default_setting
} }
fn check(&self, value: &Field) -> Result<Field, MTTError> {
let output = value.clone();
let vft: FieldType = value.into();
if vft != self.fieldtype {
return Err(MTTError::DocumentFieldWrongDataType(
self.fieldtype.clone(),
vft,
));
}
Ok(output)
}
} }
#[cfg(test)] #[cfg(test)]
mod fieldsettings { mod fieldsettings {
use super::*; use super::*;
#[test]
fn checks_field_type() {
let fset = FieldSetting::new(FieldType::Uuid);
let value: Field = Uuid::new_v4().into();
match fset.check(&value) {
Ok(data) => assert_eq!(data, value),
Err(err) => unreachable!("got {:?}: should have gotten a value", err),
}
}
#[test]
fn checks_for_bad_field_type() {
let fset = FieldSetting::new(FieldType::Uuid);
let value: Field = "text".into();
match fset.check(&value) {
Ok(data) => unreachable!("got {:?}: should have gotten an error", data),
Err(err) => match err {
MTTError::DocumentFieldWrongDataType(expected, got) => {
assert_eq!(expected, FieldType::Uuid);
assert_eq!(got, FieldType::StaticString);
}
_ => unreachable!("got {:?}: should have gotten a value", err),
},
}
}
#[test] #[test]
fn can_field_type_be_assigned() { fn can_field_type_be_assigned() {
let ftypes = [FieldType::StaticString, FieldType::Uuid]; let ftypes = [FieldType::StaticString, FieldType::Uuid];
@ -1781,7 +1819,13 @@ impl DocumentFile {
for oid in oids.iter() { for oid in oids.iter() {
let doc = self.docs.get_mut(oid).unwrap(); let doc = self.docs.get_mut(oid).unwrap();
for (key, value) in update.get_values().iter() { for (key, value) in update.get_values().iter() {
doc.add_field(key.clone(), value.clone()); match self.docdef.get_field(key) {
Ok(fset) => match fset.check(value) {
Ok(field) => doc.add_field(key.clone(), field.clone()),
Err(err) => return err.into(),
},
Err(err) => return err.into(),
}
} }
reply.add(doc.clone()); reply.add(doc.clone());
} }
@ -2529,6 +2573,38 @@ mod document_files {
queue.send(msg).unwrap(); queue.send(msg).unwrap();
rx.recv_timeout(TIMEOUT).unwrap(); rx.recv_timeout(TIMEOUT).unwrap();
let mut update = Update::new(); let mut update = Update::new();
update
.get_query_mut()
.add_specifier("field0".to_string(), Operand::Equal, id.clone());
update.get_values_mut().add_field("wrong".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::Error(err) => match err {
MTTError::DocumentFieldNotFound(data) => assert_eq!(data, "wrong"),
_ => unreachable!("got {:?}: should have gotten an missing field", err),
},
_ => unreachable!("got {:?}: should have gotten an error", action),
}
}
#[test]
fn update_errors_on_bad_field_type() {
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 id = Uuid::new_v4();
let old = "old";
let new = Uuid::nil();
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);
queue.send(msg).unwrap();
rx.recv_timeout(TIMEOUT).unwrap();
let mut update = Update::new();
update update
.get_query_mut() .get_query_mut()
.add_specifier("field0".to_string(), Operand::Equal, id.clone()); .add_specifier("field0".to_string(), Operand::Equal, id.clone());
@ -2537,6 +2613,16 @@ mod document_files {
queue.send(msg).unwrap(); queue.send(msg).unwrap();
let result = rx.recv_timeout(TIMEOUT).unwrap(); let result = rx.recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
match action {
MsgAction::Error(err) => match err {
MTTError::DocumentFieldWrongDataType(expected, got) => {
assert_eq!(expected, &FieldType::StaticString);
assert_eq!(got, &FieldType::Uuid);
}
_ => unreachable!("got {:?}: should have gotten an missing field", err),
},
_ => unreachable!("got {:?}: should have gotten an error", action),
}
} }
} }