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 }
52}
53
54#[cfg(test)]
55mod tests {
56 use super::*;
57 use mdcast_api::wire::{RenderOptions, TemplateFormat};
58
59 #[test]
60 fn markdown_defaults_everything_but_the_body_and_target() {
61 let req = markdown("# Hi", Target::HtmlReveal);
62
63 assert_eq!(req.markdown, "# Hi");
64 assert_eq!(req.target, Target::HtmlReveal);
65 assert_eq!(req.meta, DocMeta::default());
66 assert_eq!(req.brand, None);
67 assert_eq!(req.options, RenderOptions::default());
68 assert!(
69 req.assets.is_empty(),
70 "the bundle fills the manifest, not the caller"
71 );
72 }
73
74 #[test]
75 fn template_defaults_to_pdf() {
76 let req = template("= Invoice", r#"{"number":"INV-042"}"#);
77
78 assert_eq!(req.format, TemplateFormat::Pdf);
79 assert_eq!(req.data, r#"{"number":"INV-042"}"#);
80 assert!(req.assets.is_empty());
81 }
82}