Allowed optional entry checks.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2025-08-30 10:58:34 -04:00
parent eb73a31014
commit ad3ad3295f

View File

@ -1109,16 +1109,20 @@ impl FieldSetting {
&self.default_setting
}
fn check(&self, value: &Field) -> Result<Field, MTTError> {
let output = value.clone();
let vft: FieldType = value.into();
fn check(&self, value: Option<Field>) -> Result<Field, MTTError> {
match value {
Some(data) => {
let vft: FieldType = (&data).into();
if vft != self.fieldtype {
return Err(MTTError::DocumentFieldWrongDataType(
self.fieldtype.clone(),
vft,
));
}
Ok(output)
Ok(data.clone())
}
None => Err(MTTError::DocumentFieldMissing("".to_string())),
}
}
}
@ -1130,7 +1134,7 @@ mod fieldsettings {
fn checks_field_type() {
let fset = FieldSetting::new(FieldType::Uuid);
let value: Field = Uuid::new_v4().into();
match fset.check(&value) {
match fset.check(Some(value.clone())) {
Ok(data) => assert_eq!(data, value),
Err(err) => unreachable!("got {:?}: should have gotten a value", err),
}
@ -1140,7 +1144,7 @@ mod fieldsettings {
fn checks_for_bad_field_type() {
let fset = FieldSetting::new(FieldType::Uuid);
let value: Field = "text".into();
match fset.check(&value) {
match fset.check(Some(value)) {
Ok(data) => unreachable!("got {:?}: should have gotten an error", data),
Err(err) => match err {
MTTError::DocumentFieldWrongDataType(expected, got) => {
@ -1152,6 +1156,18 @@ mod fieldsettings {
}
}
#[test]
fn no_default_returns_error() {
let fset = FieldSetting::new(FieldType::Uuid);
match fset.check(None) {
Ok(data) => unreachable!("got {:?}: should have gotten an error", data),
Err(err) => match err {
MTTError::DocumentFieldMissing(data) => assert_eq!(data, ""),
_ => unreachable!("got {:?}: should have gotten a value", err),
},
}
}
#[test]
fn can_field_type_be_assigned() {
let ftypes = [FieldType::StaticString, FieldType::Uuid];
@ -1820,7 +1836,7 @@ impl DocumentFile {
let doc = self.docs.get_mut(oid).unwrap();
for (key, value) in update.get_values().iter() {
match self.docdef.get_field(key) {
Ok(fset) => match fset.check(value) {
Ok(fset) => match fset.check(Some(value.clone())) {
Ok(field) => doc.add_field(key.clone(), field.clone()),
Err(err) => return err.into(),
},