Finished getting update running.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
parent
cfdb0dda19
commit
eb73a31014
@ -1108,12 +1108,50 @@ impl FieldSetting {
|
||||
fn get_default(&self) -> &DefaultSetting {
|
||||
&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)]
|
||||
mod fieldsettings {
|
||||
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]
|
||||
fn can_field_type_be_assigned() {
|
||||
let ftypes = [FieldType::StaticString, FieldType::Uuid];
|
||||
@ -1781,7 +1819,13 @@ impl DocumentFile {
|
||||
for oid in oids.iter() {
|
||||
let doc = self.docs.get_mut(oid).unwrap();
|
||||
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());
|
||||
}
|
||||
@ -2529,6 +2573,38 @@ mod document_files {
|
||||
queue.send(msg).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("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
|
||||
.get_query_mut()
|
||||
.add_specifier("field0".to_string(), Operand::Equal, id.clone());
|
||||
@ -2537,6 +2613,16 @@ mod document_files {
|
||||
queue.send(msg).unwrap();
|
||||
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||
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),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user