prosaic-project 1.0.1

Folder-of-files project format and bundler for Prosaic templates.
Documentation
use prosaic_project::{Project, TemplateFile, Variant};
use tempfile::tempdir;

#[test]
fn save_template_round_trips() {
    let tmp = tempdir().unwrap();
    let root = tmp.path();

    std::fs::write(
        root.join("prosaic.toml"),
        "name = \"tmp\"\nversion = \"0.1.0\"\nlanguage = \"en\"\n",
    )
    .unwrap();
    std::fs::create_dir_all(root.join("templates")).unwrap();

    let mut p = Project::load_from_dir(root).unwrap();
    let new_template = TemplateFile {
        key: "code.added".to_string(),
        description: "test".to_string(),
        slots_required: vec!["name".to_string()],
        slots_optional: vec![],
        variants: vec![Variant {
            salience: "medium".to_string(),
            language: Some("en".to_string()),
            style: None,
            description: String::new(),
            body: "{name} was added".to_string(),
        }],
    };
    p.templates.insert("code.added".to_string(), new_template);

    p.save_template("code.added").unwrap();

    let reloaded = Project::load_from_dir(root).unwrap();
    let t = reloaded.templates.get("code.added").unwrap();
    assert_eq!(t.variants.len(), 1);
    assert_eq!(t.variants[0].body, "{name} was added");
}