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)]
|
#[derive(Clone, Debug)]
|
||||||
struct DocDef {
|
struct DocDef {
|
||||||
fields: HashMap<String, FieldSetting>,
|
fields: HashMap<String, FieldSetting>,
|
||||||
@ -1247,6 +1245,14 @@ impl DocDef {
|
|||||||
setting.set_default(DefaultSetting::FieldType);
|
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)> {
|
fn iter(&self) -> impl Iterator<Item = (&String, &FieldSetting)> {
|
||||||
self.fields.iter()
|
self.fields.iter()
|
||||||
}
|
}
|
||||||
@ -1622,7 +1628,7 @@ impl DocumentFile {
|
|||||||
match holder.get_field(key) {
|
match holder.get_field(key) {
|
||||||
Some(_) => {}
|
Some(_) => {}
|
||||||
None => match value.get_default() {
|
None => match value.get_default() {
|
||||||
DefaultSetting::Value(_) => {}
|
DefaultSetting::Value(data) => holder.add_field(key.clone(), data.clone()),
|
||||||
DefaultSetting::FieldType => {
|
DefaultSetting::FieldType => {
|
||||||
holder.add_field(key.clone(), value.get_type().get_default())
|
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),
|
_ => 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)]
|
#[cfg(test)]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user