1use mdcast_api::wire::{RenderMarkdownRequest, RenderTemplateRequest};
24use mdcast_api::{AssetManifest, DocMeta, Target};
25
26pub fn markdown(markdown: impl Into<String>, target: Target) -> RenderMarkdownRequest {
28 RenderMarkdownRequest {
29 markdown: markdown.into(),
30 meta: DocMeta::default(),
31 brand: None,
32 target,
33 assets: AssetManifest::new(),
34 options: Default::default(),
35 }
36}
37
38pub fn template(
41 template_source: impl Into<String>,
42 data: impl Into<String>,
43) -> RenderTemplateRequest {
44 RenderTemplateRequest {
45 template_source: template_source.into(),
46 data: data.into(),
47 meta: DocMeta::default(),
48 brand: None,
49 format: Default::default(),
50 assets: AssetManifest::new(),
51 fonts: Vec::new(),
52 }
53}
54
55#[cfg(test)]
56mod tests {
57 use super::*;
58 use mdcast_api::wire::{RenderOptions, TemplateFormat};
59
60 #[test]
61 fn markdown_defaults_everything_but_the_body_and_target() {
62 let req = markdown("# Hi", Target::HtmlReveal);
63
64 assert_eq!(req.markdown, "# Hi");
65 assert_eq!(req.target, Target::HtmlReveal);
66 assert_eq!(req.meta, DocMeta::default());
67 assert_eq!(req.brand, None);
68 assert_eq!(req.options, RenderOptions::default());
69 assert!(
70 req.assets.is_empty(),
71 "the bundle fills the manifest, not the caller"
72 );
73 }
74
75 #[test]
76 fn template_defaults_to_pdf() {
77 let req = template("= Invoice", r#"{"number":"INV-042"}"#);
78
79 assert_eq!(req.format, TemplateFormat::Pdf);
80 assert_eq!(req.data, r#"{"number":"INV-042"}"#);
81 assert!(req.assets.is_empty());
82 assert!(req.fonts.is_empty());
83 }
84}