Added default value.
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
c961cf49a8
commit
2cc63b9527
@ -1217,8 +1217,6 @@ mod additions {
|
||||
}
|
||||
}
|
||||
|
||||
type DocDefMap = HashMap<String, FieldSetting>;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct DocDef {
|
||||
fields: HashMap<String, FieldSetting>,
|
||||
@ -1247,6 +1245,14 @@ impl DocDef {
|
||||
setting.set_default(DefaultSetting::FieldType);
|
||||
}
|
||||
|
||||
fn set_default_value<F>(&mut self, field_name: &str, value: F)
|
||||
where
|
||||
F: Into<Field>,
|
||||
{
|
||||
let setting = self.fields.get_mut(field_name).unwrap();
|
||||
setting.set_default(DefaultSetting::Value(value.into()));
|
||||
}
|
||||
|
||||
fn iter(&self) -> impl Iterator<Item = (&String, &FieldSetting)> {
|
||||
self.fields.iter()
|
||||
}
|
||||
@ -1622,7 +1628,7 @@ impl DocumentFile {
|
||||
match holder.get_field(key) {
|
||||
Some(_) => {}
|
||||
None => match value.get_default() {
|
||||
DefaultSetting::Value(_) => {}
|
||||
DefaultSetting::Value(data) => holder.add_field(key.clone(), data.clone()),
|
||||
DefaultSetting::FieldType => {
|
||||
holder.add_field(key.clone(), value.get_type().get_default())
|
||||
}
|
||||
@ -2147,6 +2153,30 @@ mod document_files {
|
||||
_ => unreachable!("got {:?}: should have gotten a reply", action),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn can_a_default_value_be_set() {
|
||||
let doc_name = "value";
|
||||
let mut docdef = create_docdef([FieldType::Uuid].to_vec());
|
||||
let input = Uuid::nil();
|
||||
docdef.set_default_value("field0", input.clone());
|
||||
let (queue, rx) = test_doc(doc_name, docdef, standard_routes());
|
||||
let new_doc = Addition::new();
|
||||
let msg = Message::new(doc_name, new_doc);
|
||||
queue.send(msg).unwrap();
|
||||
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||
let action = result.get_action();
|
||||
match action {
|
||||
MsgAction::Reply(docs) => {
|
||||
assert_eq!(docs.len(), 1);
|
||||
let expected: Field = input.into();
|
||||
for doc in docs.iter() {
|
||||
assert_eq!(doc.get_field("field0").unwrap(), &expected);
|
||||
}
|
||||
}
|
||||
_ => unreachable!("got {:?}: should have gotten a reply", action),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user