prosaic_project/
partial.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct PartialFile {
7 pub name: String,
8 #[serde(default)]
9 pub description: String,
10 pub body: String,
11}
12
13#[cfg(test)]
14mod tests {
15 use super::*;
16
17 #[test]
18 fn parse_minimal_partial() {
19 let toml_str = r#"
20 name = "impact_tail"
21 body = "{?consumer_count}, affecting {consumer_count}{/?}"
22 "#;
23 let p: PartialFile = toml::from_str(toml_str).unwrap();
24 assert_eq!(p.name, "impact_tail");
25 assert!(p.body.contains("affecting"));
26 }
27
28 #[test]
29 fn missing_name_errors() {
30 let res = toml::from_str::<PartialFile>(r#"body = "x""#);
31 assert!(res.is_err());
32 }
33
34 #[test]
35 fn missing_body_errors() {
36 let res = toml::from_str::<PartialFile>(r#"name = "x""#);
37 assert!(res.is_err());
38 }
39}