xmpp-parsers: Simplify DataForm creation using constructors

The redundancy made it harder to review changes to the Field struct, for
instance in a1bee56ee1.
This commit is contained in:
Emmanuel Gil Peyrot 2024-06-18 17:55:15 +02:00
commit 2af07f4fc0
3 changed files with 35 additions and 122 deletions

View file

@ -223,22 +223,12 @@ mod tests {
let pubsub = PubSubOwner::Configure(Configure { let pubsub = PubSubOwner::Configure(Configure {
node: Some(NodeName(String::from("foo"))), node: Some(NodeName(String::from("foo"))),
form: Some(DataForm { form: Some(DataForm::new(
type_: DataFormType::Submit, DataFormType::Submit,
form_type: Some(String::from(ns::PUBSUB_CONFIGURE)), ns::PUBSUB_CONFIGURE,
title: None, vec![Field::new("pubsub#access_model", FieldType::ListSingle)
instructions: None, .with_value("whitelist")],
fields: vec![Field { )),
var: Some(String::from("pubsub#access_model")),
type_: FieldType::ListSingle,
label: None,
required: false,
desc: None,
options: vec![],
values: vec![String::from("whitelist")],
media: vec![],
}],
}),
}); });
let elem2 = Element::from(pubsub); let elem2 = Element::from(pubsub);
@ -271,22 +261,12 @@ mod tests {
let elem1 = elem.clone(); let elem1 = elem.clone();
let pubsub = PubSubOwner::Default(Default { let pubsub = PubSubOwner::Default(Default {
form: Some(DataForm { form: Some(DataForm::new(
type_: DataFormType::Submit, DataFormType::Submit,
form_type: Some(String::from(ns::PUBSUB_CONFIGURE)), ns::PUBSUB_CONFIGURE,
title: None, vec![Field::new("pubsub#access_model", FieldType::ListSingle)
instructions: None, .with_value("whitelist")],
fields: vec![Field { )),
var: Some(String::from("pubsub#access_model")),
type_: FieldType::ListSingle,
label: None,
required: false,
desc: None,
options: vec![],
values: vec![String::from("whitelist")],
media: vec![],
}],
}),
}); });
let elem2 = Element::from(pubsub); let elem2 = Element::from(pubsub);

View file

@ -615,22 +615,12 @@ mod tests {
node: Some(NodeName(String::from("foo"))), node: Some(NodeName(String::from("foo"))),
}, },
configure: Some(Configure { configure: Some(Configure {
form: Some(DataForm { form: Some(DataForm::new(
type_: DataFormType::Submit, DataFormType::Submit,
form_type: Some(String::from(ns::PUBSUB_CONFIGURE)), ns::PUBSUB_CONFIGURE,
title: None, vec![Field::new("pubsub#access_model", FieldType::ListSingle)
instructions: None, .with_value("whitelist")],
fields: vec![Field { )),
var: Some(String::from("pubsub#access_model")),
type_: FieldType::ListSingle,
label: None,
required: false,
desc: None,
options: vec![],
values: vec![String::from("whitelist")],
media: vec![],
}],
}),
}), }),
}; };

View file

@ -116,81 +116,24 @@ mod tests {
#[test] #[test]
fn test_simple() { fn test_simple() {
let form = DataForm { let form = DataForm::new(
type_: DataFormType::Result_, DataFormType::Result_,
form_type: Some(String::from(ns::SERVER_INFO)), ns::SERVER_INFO,
title: None, vec![
instructions: None, Field::new("abuse-addresses", FieldType::ListMulti),
fields: vec![ Field::new("admin-addresses", FieldType::ListMulti)
Field { .with_value("xmpp:admin@foo.bar")
var: Some(String::from("abuse-addresses")), .with_value("https://foo.bar/chat/")
type_: FieldType::ListMulti, .with_value("mailto:admin@foo.bar"),
label: None, Field::new("feedback-addresses", FieldType::ListMulti),
required: false, Field::new("sales-addresses", FieldType::ListMulti),
desc: None, Field::new("security-addresses", FieldType::ListMulti)
options: vec![], .with_value("xmpp:security@foo.bar")
values: vec![], .with_value("mailto:security@foo.bar"),
media: vec![], Field::new("support-addresses", FieldType::ListMulti)
}, .with_value("mailto:support@foo.bar"),
Field {
var: Some(String::from("admin-addresses")),
type_: FieldType::ListMulti,
label: None,
required: false,
desc: None,
options: vec![],
values: vec![
String::from("xmpp:admin@foo.bar"),
String::from("https://foo.bar/chat/"),
String::from("mailto:admin@foo.bar"),
], ],
media: vec![], );
},
Field {
var: Some(String::from("feedback-addresses")),
type_: FieldType::ListMulti,
label: None,
required: false,
desc: None,
options: vec![],
values: vec![],
media: vec![],
},
Field {
var: Some(String::from("sales-addresses")),
type_: FieldType::ListMulti,
label: None,
required: false,
desc: None,
options: vec![],
values: vec![],
media: vec![],
},
Field {
var: Some(String::from("security-addresses")),
type_: FieldType::ListMulti,
label: None,
required: false,
desc: None,
options: vec![],
values: vec![
String::from("xmpp:security@foo.bar"),
String::from("mailto:security@foo.bar"),
],
media: vec![],
},
Field {
var: Some(String::from("support-addresses")),
type_: FieldType::ListMulti,
label: None,
required: false,
desc: None,
options: vec![],
values: vec![String::from("mailto:support@foo.bar")],
media: vec![],
},
],
};
let server_info = ServerInfo { let server_info = ServerInfo {
abuse: vec![], abuse: vec![],